# Architecture

This section talks about the `Architecture` of `WebMAP5`. This architecture consists of the `Core Services` (Components on the blue box), a `Client` web application, and a `Desktop Compatibility Platform`.

![](/files/-MF6hTxFXedfKHlHzt2E)

For a more in-depth explanation of each component, please go the specific documentation page for each one of the main components:

* `Core Services`:
  * `Core module:` This Module is in charge of managing all the task related to observables, like `Reference Management`, `Storage of Observable`, etc.
  * `Messaging Module`: This Module is in charge of communication between components, features like `Mappers` are implemented in this component.
  * `Web Server Module`: This Module is in charge of the communication between the `Client` application and the backend.
* `Desktop Compatibility Module`: This Module is designed to be replaced depending on the source platform. For example, there is a `Winforms Desktop Compatibility Platform` which is intended to be used when a `Winforms` application is migrated.

### WebMAP request execution

`Core Services` contains several [middlewares](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-7.0) that allow the implementation of memory state tracking in an ASP.NET Core application, said middlewares create a layer between the native ASP.NET Core mechanisms and a WebMAP application which are used to handle the correctness of an application's state during its lifecycle.

<figure><img src="/files/JBguqIwQRJpllxyy6xoL" alt=""><figcaption><p> WebMAP request sequence diagram</p></figcaption></figure>

{% file src="/files/qlww5qxDRNqTGuYFy1G7" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.gapvelocity.ai/webmap/general/backend/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
