# Application Infrastructure

As part of SystemsRx there is some basic infrastructure provided for you (if you choose to use `SystemsRx.Infrastructure`), this contains:

* A dependency injection abstraction system (So you can consume DI on any platform with any DI framework)
* An `ISystemsRxApplication` interface as well as a default implementation `SystemsRxApplication` (So you can start your app in a consistent way)
* A plugin framework via `ISystemsRxPlugin` (so you can write your own plugins which can be re-used across many projects and shared with others)
* A default `EventSystem` (So you can send events around your application, which implements `IEventSystem`)

All of this combined basically provides you an entry point to start creating your applications.

## Why use this?

To have some sort of consistency and contract in place for extensibility, for example by adding the infrastructure you can out the box consume any SystemsRx plugins (assuming they dont contain any native platform code), you can also make use of specific lifetime methods and conventions.

If you have a specific scenario and dont want to use the built in infrastructure then can easily just ignore this and put your own stuff in place, but this would then mean you are then incompatible with a lot of good stuff that comes with the consistency and the community all adhering to those contracts.


---

# 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://ecsrx.gitbook.io/systemsrx/framework-infrastructure/application-infrastructure.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.
