远程设备的领域模型

Domain Model for Remote devices

我正在为我拥有的域模型场景寻找设计建议。

假设我有一队机器人,每个机器人都可以通过无线网络连接进行控制。

我有一个代表真实世界机器人的 IRobot 域对象。界面如下所示:

public interface IRobot
{
    void MoveHeadUp(int toAngle);
    void MoveHeadDown(int toAngle);
    int GetHeadAngle();
}

示例场景:虚拟机器人显示在 GUI 中。在离线模式下,GUI 显示如果我们告诉域对象 (IRobot) 将其头部抬高 5 度会发生什么。

在联机模式下,GUI 会显示机器人移动并且命令会发送到物理机器人并且它也会移动。

我正在尝试围绕此域对象添加远程功能,即。 getting/setting 通过以太网或串行等远程状态。我不想用网络连接问题污染域对象。

实现 IRobot 域行为并将远程连接实现细节分开的最佳方法是什么?

我的看法是消息传递。

您的所有命令(这就是您给机器人的命令)都可以通过您需要的任何东西(您选择的交通工具)有效地传达,您的机器人(虚拟的或物理的)将接收命令并执行它。

您可以将这些机器人视为端点。每个端点都有一个 name/address。您正在向这些机器人发送命令,而您不再关心机器人(物理或仿真)命令是如何执行的。

你提到过

In online mode

这是否意味着您也有离线模式?如果是这样,我肯定会研究消息传递。