# Core concepts

## Overview

While you might have used REST as your service communications layer in the past, more and more projects are moving to an event-driven architecture. When a service performs some piece of work that other services might be interested in, that service produces an *event* — a record of the performed action. Other services consume those events so that they can perform any of their own tasks needed as a result of the event.

Since version 3.0, event-based communication is the framework prime focus of interest. It defines a uniform interface for asynchronous processing of incoming events. The mental model is very similar to other popular libraries that you can find in the frontend, like — `redux-observable` or `ngrx/effects`. Both libraries had a huge influence on design and architectural decisions.&#x20;

Messaging module can be applied to variety of models, including the post popular: queue, "pub/sub"-based [microservice](/docs/messaging/microservices.md) communication, [CQRS](/docs/messaging/cqrs.md) or EventSourcing.

{% content-ref url="/pages/-M-Rdj4-gGMRcZJ09EsM" %}
[Microservices](/docs/messaging/microservices.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M-RdbkPqCRMgipLWj8i" %}
[CQRS](/docs/messaging/cqrs.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M-RfgMM5OSzOwlli\_nX" %}
[WebSockets](/docs/messaging/websockets.md)
{% endcontent-ref %}


---

# 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://marblejs.gitbook.io/docs/messaging/core-concepts.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.
