Skip to content
Concept

The Intropy model

Intropy describes an integration with a small set of terms. The same terms appear in the C# code, the CLI output, deployment manifests, traces, and these docs.

Source systemPortSYSTEMComponentkind: extractorpublishesResourcea TopicsubscribesComponentkind: loaderusesSERVICESidempotencybusiness incidentsPortDestination system
FIG M1The five terms in one shape: Components inside a System, joined by a Resource, reaching external systems through Ports, calling Services.
Term Meaning Where you meet it
System The named integration as a whole. intropy sys create, OrderFlowSystem.cs
Component One deployable unit inside a System. order-extractor, order-loader, order-sync
Resource Infrastructure the System owns. Topic, internal queue
Port A named edge to an external system. order-extractor-source, order-loader-destination
Service A platform capability the System calls but does not own. idempotency, business incidents

A Port separates build from connect: build transforms input into output; connect is how data actually reaches the real system. A Component declares where data flows in and out by Port name, never how. Each environment resolves the name in deployment configuration; in production that is an endpoint like SFTP, during build a plain folder stands in as the mock.

A contract is the message type a Topic carries — one C# record per contract, defined once in the workspace’s Contracts/ project and referenced by every Component that publishes or subscribes. Publisher and subscriber agree on the shape of a message because they compile against the same record, not because they exchange schema at runtime. The distribution tutorial shares the OrderPlaced contract between an extractor and two loaders this way.

Where you meet it: the --publishes and --subscribes scaffold flags, whose message name the contract’s type derives from (order gives Order), the shared-contracts template that renders Contracts/, and the system host’s Messages.cs, where each message names the contract it carries.

Kind Job Tutorial
extractor Pull from a source system and publish to a Topic. Distribution
loader Subscribe to a Topic and write to a destination system. Distribution
transactional-integration Move from one source to one destination inside one Component, through its own internal queue. Transactional integration

A Transactional Integration is one Component:

source Port → transactional-integration → destination Port
│
└─ internal queue

A Distribution is several Components joined by a Topic:

source Port → extractor → Topic → loader → destination Port
└→ loader → destination Port

Next: Systems and topology shows where these names are declared.