WCF libraries Routing and OneWay provides capabilities of routing, storing, queueing, cipher and signing messages and data sets.
Organizational structure participants (computer systems) acts in following roles: Clients, Routers, Services, Hosts.
Clients are thouse who needs exchange Data between services through Messages pathing by Routers. Services are a set of interfaces and their implementations that receive data and doing processing. Messages store in SQL CE on Routers as MSMQ and ADO.NET. Data store in SQL Express on Services as ADO.NET.
Hosts are any of Clients, Router, Services acts as within external enpoint network connection. In Host context messages are being passed through local Pipe and MSMQ protocols.
When Message arrives on Router and routing is based on Message Headers, it is processed through MSMQ. So it will be available when destination goes online.
Data within Messages are being delivered through the network of business oriented trusted connections (Secured VPN e.g). Router can route secured messages transparently or acts as trusted partner with message access through X.509 authentication. Router holds messages and data in storage until Host goes online.
Messages are being encoded by X.509 certificated between Client and nearest Host. Messages within Data are passed through network of Routers (Relying Partners) encoded or open but signed.
Notification and signal sends through duplex channel with context of future return operation (async distributed secured call).
Services are divided on two categories: Providers and Distributors. Providers needs to receive Secured Data from any Distributor on a Subject. Distibutors logging out or tracking Secured Data and passed them through own Services chain.
+---------+ +---------+
| O=HONDA | | O=MAZDA |
+---------+ +---------+ ^
|
+--------+ +--------------------+ |
| DC=EST | | DC=LOGISTICCOMPANY | ^ | SECURED
+--------+ +--------------------+ | REPLICATION | BUSINESS
| OPERATIONAL | DATA
+------+ +------+ | DATA |
| DC=1 | | DC=2 | + + | ROUTING
+------+ +------+ | CACHE |
| |
+-----+ +-----+ +-----+ +-----+ V |
| TPC | | TPC | | TPC | | WIN | +
+-----+ +-----+ +-----+ +-----+
X.509 Authentication
Client Pass Router Service Host
PIPES 8010 8000
+-----+ +-------+ +-------+ +-----+
| CN |-| RL/MQ |--------| DC/MQ |---VPN-----| O |
+-----+ +-------+ +-------+ +-----+
embedded external
router router
Addressing and Entity Domains:
CN=Maxim.Sokhatsky — Client (From)
RL=VAIO — Local Router
MQ=INPUT — Microsoft Message Queue
DC=LOGISTICCOMPANY — Relying Party Pass-Through Router
O=HONDA — Host Services (To)
DATA=DATASET
Client Pass Router DC=LOGISTICCOMPANY
Service Host O=HONDA
net.pipe http 8010 http 8000
+-----+ +-----+ +-----+ +---------+
| CN |-| RL |----------| DC |---VPN-----| HONDA |
+-----+ +-----+ +-----+ +--+---------+
embedded external |
router router | VPN
| |
| VPN |
V | http 8001 Service Host O=MAZDA
+-----+--------+ +---------+
| DC |---VPN-----| MAZDA |
+-----+ +---------+
Pass Router DC=LOGISTICCOMPANY
All endpoint names starts with "O=" means all organizational units (routers or services) to whitch this router routes incoming messages. All incoming messages immideatly stores to message queue endpoint "MQ=INPUT". Its name is used internally and not instantiated in system configuration.
Each connected route-out endpoint may have connected message queue for storing messages until "O=" endpoint will be online. That endpoints name "MQ=*" with same second part of name after "=" delimiter.
MessageMover retry frozen messages on inactive output endpoints after each 30s.
App.config
+---------------+
| Routing Rules |
+---------------+
| 3
net.pipe:// net.msmq:// +---------------+ 4 http://
http:// 1 +-------+ 2 | ROUTER | ===> [Endpoint #1]
[Endpoint] ===> | In MQ | --> | | ===> [Endpoint #2]
+-------+ | | ===> [Endpoint #N]
^ +---------------+ |
| | 5
| 7 | On ERROR
| V
+--------------+ 6 +-----------+
| Retry Timer | <-- | Out MQ #1 |
+--------------+ | Out MQ #2 |
| ... |
+-----------+
net.msmq://