about
12/09/2022
CsCommPrototype Repo
CsCommPrototype code

CsCommPrototype  Repository

Asynchronous message-passing communication channel

Quick Status Code functions correctly no known defects Demonstration code yes Documentation Fig 2. needs to be updated
Also needs some output doc
Test cases none, but planned Static library no, but planned Build requires C# 7.0 Note Requires Administrator mode
for execution
Planned design changes Add more demonstration code
Fig 1. Communication Channels
Fig 2. MsgPassingComm Classes

1.0 Concept

This repository provides a prototype message-passing communication channel using Windows Communication Foundation (WCF). Messages are similar to HTTP messages in that they have a header with a series of ASCII lines that define commands and attributes, including a content-length attribute. If that exists and has a value greater than zero the value indicates the number of bytes contained in the message body. That is used, by this channel to send file blocks. Each channel is one-way. Senders post a message, via the channel, to the receiver's receive queue. The channel is asynchronous, meaning that sender's don't wait for a reply - not even an acknowledgement.

2.0 Design

All messages are expected to contain attributes { to: "endpoint" } and { from: "endpoint" } indicating the source and destination endpoints, where an endpoint is a value "url:port". The "to" endpoint allows a channel user to supply a message, letting a send thread connect, if not already connected, to the intended receiver. The "from" endpoint allows the receiver to eventually reply, if appropriate, e.g., with a requested entity. Note that this channel is asynchronous. Senders do not wait for a reply. They simply post messages and a dedicated receive thread extracts incoming messages from a receive queue. If the message contains an attribute { sending-file: "filename" } the channel attempts to send the named file in blocks to the receiver.

3.0 Build

All code was built with Visual Studio, Community Edition - 2019, and tested on Windows 10.

4.0 Note

The top two tiers of Fig 2. are accurate, but the bottom tier is implemented with WCF services, which use sockets as a private resource. Conceptually it matches the code, but should show the WCF classes. I will eventually update this diagram to match the existing code.

4.0 Resources

MessagePassing Blog
AsynchSys.pdf
  Next Prev Pages Sections About Keys