So What’s Going on Here? Goal: Type-safe network that supports arbitrary functionality and message types o Nodes can send, receive, or do both. o Node operation is completely undefined o Receivers make sure they are able to receive all of the sender’s data types Potential uses for this kind of network: o Data Pipeline o Multiplexing/Demultiplexing o Parallel Computation Engine o And so much more!
Example Use Case Temperature Sensor Is the temperature too high? > 100 °F Is the temperature too high? > 100 °F If yes, SOUND THE ALARM!
Example Use Case Temperature Sensor Is the temperature too low? < -10 °F Is the temperature too low? < -10 °F If yes, SOUND THE ALARM!
How is the System Used?
Design Phase ◦The Network Team ◦Developed underlying technology for node connection ◦The Node API Team ◦Decided what a node could access within the network ◦The Message Team ◦Created messages to send data and commands over the network ◦Focus was implementation specific to demonstrate our technology
Implementation Phase ◦The Shared Library Team ◦Coded the API + network backbone ◦The Message Library Team ◦Standardized serialization/deserialization mechanism ◦The Expert Implementation Team ◦ Implemented more complicated node behaviors for the demo ◦The Demo & Presentation Team ◦Planned the demo network ◦Created the presentation of network capabilities
How the Components Fit Together
The Three Types of Nodes Temperature Sensor Is the temperature too high? If yes, SOUND THE ALARM! SourceRelayDisplay
The Three Types of Nodes Sender Is the temperature too high? Receiver SourceRelayDisplay SenderReceiver
Motivation for the Network Library Our Goal: ◦Provide reliable and convenient data transfer mechanism Our Solution ◦Used tcp/ip C# socket ◦Alternatives: WCF. Added unneeded complexity ◦Network library is decoupled
Motivation for the Message Library Our Goal: ◦Handle new, arbitrary data types in both information and commands Our Solution ◦Shared Message Library with packaging/serialization tools that can be expanded for any information type/command.
A Shared Extendable Message Library Commands, information types, all treated similarly ◦Information/command stored in a message object ◦Message is JSON-serialized and then sent. The string is arbitrary, so the message types can be extended arbitrarily