# Components

A *component* is a modular program or service that is (primarily) independent of other programs or systems in/on which they are hosted, and satisfies the responsibilities of a SitecoreDXG *role*. By default, a fully-functional SitecoreDXG ecosystem includes the following components:

1. **SitecoreUML Service for Sitecore:** a service endpoint installed on a Sitecore application (PaaS or non-PaaS) as a Sitecore package that satisfies the *serializer* role
2. **SitecoreDXG Middleman:** a program that satisfies the *serializer* role - can be replaced with a own custom middleman implementation, though the **SitecoreDXG RabbitMQ Middleman** is included with SitecoreDXG for rapid setup and use
3. **SitecoreDXG Generation Service:** a node-based service (installable as a Windows service) that initializes and loads the *trigger* and *completion handler* plugins defined in the configuration, and satisfies the *generator* role by performing the generation when called

The following diagram depicts how these components communicate at a high-level:

![](https://3773347095-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMm7Br9HnvoPUnrSjNk%2F-LMm993s-C4Roi7CUbtl%2F-LMm9Eup3wuWOzy_wnfM%2FSitecoreDXG_ComponentOverview.png?generation=1537366098303874\&alt=media)
