Introduction to map.apps

map.apps consists of map.apps Client and map.apps Core services. The basic concept of map.apps is to separate between representation and user interfaces on the client side and business intelligence on the backend side. map.apps Client represents user interfaces whereas map.apps Core services describe business layers. The technological platform is ArcGIS for Server. Communication between client and core uses REST (Representational State Transfer). The preferred message exchange format is JSON (JavaScript Object Notation). ESRI’s Geowebservices REST API is used for exchanging spatial information between client and core.

Client

The idea of map.apps is to give a customer the opportunity to provide the same content and functions in different combinations depending on the requirements of the fields of use as small and focused applications (“apps”). map.apps Client implements the map.apps.OSGi specification, so map.apps is a compilation of miscellaneous bundles. All elements – such as functions, data models, tools, widgets, layouts – are represented in bundles. The OSGi Alliance defines a dynamic software platform that allows to modularize and manage applications and services based on these bundles. Because the existing OSGi implementation is based on Java, this platform has been migrated to JavaScript. Thereby map.apps.OSGi is the development framework for map.apps and runtime environment for its components. It allows highly dynamical and intelligent solutions by managing bundles and their dependencies. The “intelligence” of bundles is raised due to the fact that bundles are context sensitive, high dynamically (start- and stoppable during runtime), exchangeable and versioned.

Because map.apps Client is a JavaScript development, it can be executed within any browsers as-is. No additional plugins or addons are required. All functionality provided by the ArcGIS API for JavaScript is available within map.apps client or can be added programmatically. Nevertheless, map.apps Client is only one option to use the main platform and server framework of map.apps, called map.apps core.

Core

One of the main ideas of map.apps is to have as much business logic as possible on the server. Using REST services with JSON as message encoding format, increases the independence from the client side technology, which implicates a lot of advantages. First of all, map.apps can deal with a variety of clients on diverse platforms. If the used REST services are based completely on the ESRI Geowebservices REST API, all ESRI clients support map.apps without any customization. Geo REST services can be provided by ArcGIS Servers directly or any specific server-object-extension. REST services can also run singular in web containers or existing REST services can be used.

The essential point of map.apps Core is its high level of reusability. Not every customer solution uses map.apps Client because it is based on JavaScript, but the mentioned REST services can be re-used in other client environments (for example Flex or Silverlight). The reason to rely on REST as the interface specification is related to the fact that REST in combination with JSON has evolved to being the web standard. They are easy to use, understand and scalable to the desired needs. Out-of-the-box map.apps core services are Java implementations, but because HTTP is used as transport layer it is independent of the core services’ execution environment. Each core service is supposed to be installed independently. Therefore distribution of services is easy to achieve. Because REST services are stateless, scalability in load balanced environments is easy to achieve as well.