< Cartographic Functionalities

User Manual >

## 3. Architecture

## 3.1. Introduction

CartoWeb uses an innovative design and state-of-the-art technologies. The following sections briefly review the main employed approaches.

## 3.2. MapServer / MapScript

CartoWeb is based on the UMN MapServer engine. Interactions between CartoWeb and MapServer are achieved using the MapServer PHP/Mapscript module.

MapServer must be installed prior to any CartoWeb setup.

MapServer resources:

- MapServer HomePage: http://mapserver.gis.umn.edu/
- MapServer Download: http://mapserver.gis.umn.edu/dload.html
- MapServer Documentation: http://mapserver.gis.umn.edu/doc.html
- MapServer PHP/Mapscript Class Reference http://mapserver.gis.umn.edu/doc44/phpmapscript-class-guide.html

## 3.3. Web-Service Architecture - SOAP

One of the CartoWeb specificities is its ability to work along a client-server model as well as a stand-alone application. Thus it is possible to host a CartoWeb client (known as CartoClient) on one machine and have it requesting a CartoWeb server (known as CartoServer), located on a separated server. A CartoServer can be called by several CartoClient simultaneously. On the other hand, a CartoClient can query several CartoServer for instance in the frame of different "projects" (Section 3.4.2, “Projects”).

CartoWeb offers two "access" modes :

- as a web-service. CartoClient and CartoServer then interact using remote procedures based upon SOAP.
- as a standalone application. Procedures are then performed directly between CartoWeb components, bypassing the SOAP calls.

Of course it is possible to combine the above architectures as shown on the following figure:

## 3.4. Modularity: Projects and Plugins

### 3.4.1. Plugins

CartoWeb buzzword is modularity. The application is built as a set of bricks that interact with each other. Those bricks are called "plugins". Each plugin performs a special group of tasks such as map browsing, layers management, images properties, users permissions, data objects querying, exportation and much more. CartoWeb is shipped with a set of standard plugins that can be separately activated or not. It is possible to write your own plugins or customize existing ones as well.

Regular plugins, including how to configure them, are precisely described in Part II, “User Manual”. For more information about how to write or customize plugins, see Chapter 2, New Plugins.

### 3.4.2. Projects

Projects are used to separate the upstream application from its customizations. They contains all the modifications and adaptations you could have performed to make CartoWeb suit your needs: layout templates, pictos, special configurations, personal plugins etc.

By using projects you can:

- keep the general application clean from tricky modifications that would compromise the future upgrades
- gather your project files to easily save and copy them to another CartoWeb instance. For example when copying them from your test server to your production one.
- run different projects on the same CartoWeb instance.

For more information about projects, see Chapter 3, Projects Handling.

## 3.5. Templates

CartoWeb layout customization is achieved using the well-known and powerful Smarty template engine. For more information about templating see Chapter 17, Templating.

## 3.6. Users and Roles

CartoWeb enables to define and manage different levels of permissions. Thus it is possible to restrict some (or all) functionalities to some users or categories of users. For more information about users and roles see Chapter 15, Security Configuration.

## 3.7. Performance Enhancement

CartoWeb takes benefits of several caching systems to speed up its execution. All the possibilities are detailed in Chapter 5, Caches Configuration.