https://github.com/xcomponent/xcomponent
Develop microservices in C# using state machines.
https://github.com/xcomponent/xcomponent
architecture microservice microservices-architecture mono state-machine xcomponent xcomponent-apis xcomponent-platform
Last synced: 7 months ago
JSON representation
Develop microservices in C# using state machines.
- Host: GitHub
- URL: https://github.com/xcomponent/xcomponent
- Owner: xcomponent
- License: other
- Created: 2015-06-12T14:06:35.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2022-12-10T20:27:11.000Z (over 3 years ago)
- Last Synced: 2025-08-30T06:36:08.065Z (7 months ago)
- Topics: architecture, microservice, microservices-architecture, mono, state-machine, xcomponent, xcomponent-apis, xcomponent-platform
- Language: C#
- Homepage: https://www.xcomponent.com
- Size: 21.9 MB
- Stars: 18
- Watchers: 10
- Forks: 8
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://gitter.im/XComponent/xcomponent?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](http://slack.xcomponent.com/)
[](https://www.nuget.org/packages/XComponent.Studio.Community)
[](https://twitter.com/XComponent)
# XComponent Resource Center
XComponent is a platform to easily create, monitor and share **microservices**.
In XComponent, a microservice is a set of components. Each component is based on **state machines** (States machines are designed graphically). This approach is powerful and flexible because it enables you to size or resize your microservices as you want.

Microservices are developed in **C#** (.NET 4.5.2 or above).
XComponent community edition provides the following tools :
* For Windows only :
* [](https://www.nuget.org/packages/XComponent.Studio.Community) XCStudio : the IDE to design components and microservices
* [](https://www.nuget.org/packages/XComponent.Spy.Community)
XCSpy : a test and monitoring tool for XComponent microservices
* Multi platform tools :
* [](https://www.nuget.org/packages/XComponent.Build.Community)
XCBuild : the tool that generates and builds microservices designed with XCStudio
* [](https://www.nuget.org/packages/XComponent.Bridge.Community)
XCBridge : the WebSocket bridge to communicate with microservices through a WebSocket connection
* [](https://www.nuget.org/packages/XComponent.Runtime.Community)
XCRuntime : the execution environment for XComponent microservices
* Online tools :
* [](https://spy.xcomponent.com) XCSpyWeb : the web version of XCSpy available online
* Apis (to communicate with XComponent microservices through a reactive Api) :
* [](https://www.npmjs.com/package/reactivexcomponent.js)
Reactive XComponent JS Api : The Javascript Api that uses the XCBridge
* [](https://www.nuget.org/packages/ReactiveXComponent.Net)
Reactive XComponent .NET Api : The C# Api
* [](https://github.com/xcomponent/ReactiveXComponent.py) Reactive XComponent Python Api : The Python Api (Still under construction)
> Note: "Microservice architectural style is an approach to develop a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms. These services are built around business capabilities and independently deployable by fully automated deployment machinery.” *James Lewis & Martin Fowler*
## Building Microservices with XComponent
* Define your **Components** according to a business logic or a technical logic
> Note: In XComponent, a **“Component”** is a set of state machines (micro-orchestration)
* Link the components (Composition) between them
* Create the **APIs**
* Create your Microservices as sets of **Components**
* Deploy your microservices and run them with **XCRuntime** (under Windows or Mono)
With XComponent, your microservices have the following avantages:
* They can communicate each other in Real-Time
* You can communicate with your microservices in Real-Time using XComponent Apis
* You can easily **resize** your microservices
* You can migrate from a Monolith to a full microservices architecture without a line of code !
* XComponent platform is fully asynchronous and it is running on the top of a RabbitMQ middleware. Nevertheless, the complexity of this kind of architecture is hidden to the developper
* You can monitor in Real-Time the status of your microservices
For a better understanding of XComponent, and for more details, we suggest to read the [user guide](Documentation/README.md) or to jump to the [Hello World sample](Examples/xc.helloworld/README.md).
Thanks to the [Use Cases](Examples) section, you will able to understand:
* How to develop microservices with XCStudio
* How to run them with XCRuntime
* How to consume microservices with XComponent Apis
## Prerequisite
* .NET 4.5.2 framework
* Get [Visual Studio Community](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx)
* A RabbitMQ middleware (3.5.1 version or later is recommanded) : [Download link for windows](https://www.rabbitmq.com/releases/rabbitmq-server/current/).
## Install
All samples will directly download XComponent Community Edition from [Nuget](https://www.nuget.org/packages/XComponent.Studio.Community/). Nevertheless, if for some reasons, you need an MSI, you can get one in the [releases page](https://github.com/xcomponent/xcomponent/releases).
## Documentation
[User Guide](Documentation/README.md)
## Use Cases
[Click here](Examples) to see XComponent examples.
It is a good starting point to understand how the XComponent platform works.
## Test Framework
[Click here](TestFramework/README.md) to have details about the Test Framework.
## Sequence Diagram Control
[Click here](SequenceDiagram/README.md) to have details about the Sequence Diagram Control.
## Questions ?
If you have any questions about this sample, please [create a Github issue for us](https://github.com/xcomponent/xcomponent/issues)!
You can also join us on [Slack](http://slack.xcomponent.com)!