Friday, 20 November 2015

Write MapGuide application once. Run MapGuide application anywhere?

MapGuide is a very flexible development platform, allowing you to build your MapGuide applications in either .net, PHP or Java.

Depending on your OS, you currently have the following development/deployment options:
  • Deploy .net or PHP on IIS
  • Deploy PHP or Java (in a Tomcat Servlet container) on Apache HTTPD
But what if we could be even more flexible than that? What if you deploy to any platform regardless of whether your application is .net, Java or PHP.

We now have the components that can make this a possibility.
  • .net is now cross-platform. The canonical recommended deployment strategy of 5 applications is done through hosting the application via the Kestrel HTTP server, and reverse-proxying to it from a more industrial-strength HTTP server.
  • The HttpPlatformHandler module for IIS allows it to do process management and request proxying for other http listeners (like Tomcat or Kestrel), making it possible for IIS to "host" Java or .net Core applications.
So regardless of whether you're on .net*, PHP or Java we now have the means to deploy and host it on both Windows and Linux.

* Yes, there's a small caveat in this idealized scenario. It requires:
  1. A CoreCLR-compatible wrapper for the MapGuide API. This is something I'm playing around with at the moment.
  2. Your .net MapGuide application basically has to target the .net Core profile (and not the full .net Framework) in order to take advantage of the cross-platform deployment scenario.
  3. That we can reverse-proxy to Kestrel from Apache HTTPD. The official documentation refer to nginx as the front-facing web server, but if the ability to reverse proxy is the sole requirement, then any web server that has the capability can be the front-facing web server and not just nginx.

No comments: