Skip to main content

Architecture

Zeus has a simple architectural goal: communication, protocols, and acquisition should not live inside window code. Windows display and operate; Zeus owns the infrastructure.

Application (WinForms / WPF / Console)
↓
Zeus.Presentation.* WinForms control binding / WPF MVVM binding sources, UI thread marshaling
↓
Zeus.Hosting ZeusHost.Create, lifecycle, acquisition loop
↓
Zeus.Configuration JSON configuration
↓
Zeus.Protocols.* Custom frames, Modbus, Mitsubishi MC, Siemens S7, Omron FINS, Omron Host Link, Panasonic MEWTOCOL, EtherNet/IP, DL/T 645, IEC104, MQTT
↓
Zeus.Communications Serial, TCP, UDP, virtual channels
↓
Zeus.Runtime (assembly Zeus.Core) / Zeus.Abstractions

Layers​

LayerDoesDoes not do
Zeus.Presentation.*Bind WinForms controls; provide WPF MVVM binding sources and Dispatcher marshalingParse protocols
Zeus.HostingCreate hosts, start/stop services, run acquisitionDepend on a specific UI
Zeus.ConfigurationLoad channels, devices, and points from JSONOpen ports directly
Zeus.Protocols.*Implement protocol clients, devices, point maps, and virtual respondersOwn transport sockets or serial ports
Zeus.CommunicationsProvide serial, TCP, UDP, server, and virtual channelsUnderstand registers or business meaning
Zeus.Runtime / Zeus.AbstractionsDefine core interfaces, point table, and channel state machine. The NuGet package is Zeus.Runtime; the assembly name remains Zeus.CoreReference desktop frameworks

With this split, business code can target IChannel, IDevice, and the point table. Replacing a virtual channel with a serial port, or moving from WinForms to WPF, does not require rewriting protocol logic.

Three Usage Styles​

  1. Recommended: ZeusHost.Create plus extensions such as AddSerialPort, AddModbusRtu, AddModbusAscii, AddMitsubishiMc, AddSiemensS7, AddOmronFins, AddOmronHostLink, AddPanasonicMewtocol, AddEtherNetIp, AddIec104, AddMqtt, or AddSnmp.
  2. Custom protocol: Use FrameSession or implement your own codec while reusing official channels and host lifecycle.
  3. Raw bytes: Use only IChannel, which fits simple text/binary devices and diagnostic tools.

If you are new to Zeus, run Console Sample before spending too much time on the layers.