1

Я ищу совет по дизайну для сценария модели домена, который у меня есть.Модель домена для удаленных устройств

Предположим, у меня есть отряд роботов, каждый из которых управляется через беспроводное сетевое соединение.

У меня есть объект домена IRobot, который представляет реальный робот. Интерфейс выглядит так:

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

Пример сценария: виртуальный робот показан в графическом интерфейсе. В автономном режиме графический интерфейс показывает, что произойдет, если мы скажем объекту домена (IRobot) поднять голову на 5 градусов.

В онлайн-режиме графический интерфейс отобразит движение робота И команда будет отправлена ​​на физический робот, и он также будет перемещаться.

Я пытаюсь добавить удаленные возможности вокруг этого объекта домена, т.е. получение/настройка удаленного состояния через Ethernet или последовательный порт и т. д. Я не хочу загрязнять объект домена проблемами сети.

Каков наилучший подход к реализации поведения домена IRobot и удалению отдельных сведений о реализации удаленного соединения?

+0

Я не уверен, что DDD лучше всего подходит для этого. Он лучше всего используется для совместных доменов, где бизнес-процессы инициируются людьми. Вы получите большую ригидность от DDD и некоторые из его преимуществ IMO. – guillaume31

+0

Это интересный вопрос. я буду продолжать следовать этому ... @ guillaume31 - это так отличается от обновления БД? Я вижу некоторое сходство с использованием Active Record, где объект напрямую разговаривает с DB/IRobot, используя DDD, где модель домена действует как фактический робот и проверяет все действия перед отправкой их реальному роботу. – danfromisrael

+0

Не уверен относительно DDD для коммуникации. –

ответ

0

Я принимаю это сообщение.

Все ваши команды (и это то, что вы даете своим роботам), могут быть эффективно переданы по всему, что вам нужно (транспорт по вашему выбору), и ваш робот (виртуальный или физический) получит команду и действует на нее ,

Вы можете думать об этих роботах как о конечных точках. Каждая конечная точка имеет имя/адрес. Вы отправляете команду этим роботам, и вам больше не нужно беспокоиться о том, как выполняется команда robot (физическая или эмулированная).

Вы упомянули

В режиме

Означает ли это, у вас также есть автономный режим? Если это так, я бы наверняка посмотрел сообщение.

+0

Я также рассмотрел подход к шине сообщений, который начинает иметь больше смысла, когда мы разрабатываем дизайн. Спасибо за помощь! –