> For the complete documentation index, see [llms.txt](https://docs.xplatform.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xplatform.com/talon/developing-applications.md).

# Developing Applications

This section describes how to code, develop and configure Talon applications.

From a developer's perspective, a Talon application is comprised of the following artifacts:

* **Message Model**
  * The application has a single ADM based XML message model shared across all the application's microservices. This model contains the definition of all messages shared across all the application's microservices. The model is used to generate classes that are used as messages exchanged between microservices.
* **Microservices**
  * The application is comprised of one or more microservices. The development artifacts for each microservice are as follows:
    * **State Model** (only for State Replication microservices)
      * A State Replication microservice defines its state in an ADM based XML state model. Each state model is private to the microservice and generates classes that serve to store application data and state. EventSourced microservices store data and state in regular Java objects and so do not need a state model
    * **User Code**
      * User code in a microservice is comprised of the following:
        * The HA Policy Declaration
        * Lifecycle Methods
        * Microservice Initializers
        * Message Filters
        * Message Handlers
* **Configuration**
  * The application has a single DDL based XML configuration model shared across all the application's microservices. This model contains application wide configuration, such as configuration of the underlying messaging bus (see [Messaging Model](/talon/concepts-and-architecture/messaging-model.md)) and configuration of the platform runtime of each of the application's microservices. The configuration model configures the Talon runtime and, therefore, needs to be provided to the microservices only when the microservices are run.

For more information

* See See [Modeling Messages & State](/talon/developing-applications/modeling-messages-and-state.md) for information on how to [model messages and state](/talon/developing-applications/modeling-messages-and-state/the-modeling-language.md)
* See [The Code Generator](/talon/developing-applications/modeling-messages-and-state/the-code-generator.md) on how to operate the ADM code generator to convert models to classes
* See See [Authoring User Code](/talon/developing-applications/authoring-user-code.md) for information on how to author user code in microservices.
* See [Configuring Messaging](/talon/developing-applications/configuring-messaging.md) for information on how to configure messaging
* See [Configuring the Microservice Runtime](/talon/developing-applications/configuring-the-runtime.md) for information on how to configure the microservices' runtime.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.xplatform.com/talon/developing-applications.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
