Мы работаем над богатым клиентом (написанным на Flex), который подключен к серверу Java, используя как RMI, так и JMS. Я думал о внедрении клиента в режиме DDD, так что у него есть репозитории для операций CRUD для объектов домена.DDD и асинхронные репозитории
Проблема в том, что вся бэкэнд-связь происходит асинхронно, и мне не удастся заставить клиента ждать, пока он не получит ответ. Это означает, что на низком уровне я могу вызвать метод на удаленном объекте, и я получаю AsyncToken как возвращаемое значение. Затем я могу прослушивать события на асинккокене, чтобы узнать, прошел или не прошел вызов. Это, однако, нарушает основную идею хранилища, скрывает технические детали от клиента.
Там может быть 2 варианта я думаю:
- имеют методы в хранилище вернуть AsyncToken, который, кажется, как грязный раствор для меня
- имеют методы возвращают пустую коллекцию (для FindAll например), которые будут заполняться при получении ответа.
У обоих есть плюсы и минусы, и я хотел бы получить от вас ответы.
(что еще лучше, какие бы стратегии были кеширования? Зависит от ситуации, я не хочу, чтобы репозиторий вызывал сервер каждый раз, когда я запрашиваю от него все сущности. Как это повлияет на подпись методов на репозитории.)
Просто нашел это, и это было полезно для меня, поэтому я подумал, что добавлю. Я предполагаю, что вы также захотите переопределить `addResponder (responder: IResponder)` и вызвать `responder.result (некоторый пустой объект результата)` для любого зарегистрированного ответчика. – Ocelot20 2013-10-04 14:55:25