Я сейчас работаю над системой, которая находится в одном пространстве процессов; мы разбиваем это на несколько процессов, первоначально для запуска на одном компьютере, но в конечном итоге для распределения по нескольким отдельным машинам. Я склоняюсь к использованию ESB (NServiceBus, Rhino ESB) или, возможно, катаюсь со своими очередями WCF + для обработки сценариев pub / sub и запроса / ответа, которые есть в нашем приложении.
Однако я борюсь с абстракцией: я не хочу, чтобы различные компоненты знали, что они разговаривают по шине. Текущие API-интерфейсы, соединяющие различные сервисы, довольно хорошо соответствуют этой модели, но я хочу скрыть это со стороны клиента и сервера. Если не считать много пользовательских прокси-кодов для клиента и сервера, есть ли лучший способ подойти к этому? Я понимаю, что WCF может автоматически генерировать прокси на основе определения сервиса, но мне действительно нравятся некоторые другие вещи, которые я получаю с (скажем) Rhino Servicebus.
В идеале я хотел бы иметь возможность менять различные реализации (с ESB / уровнем обмена сообщениями и без него), просто используя IoC (зная, что должны быть установлены ограничения, установленные соглашением о том, что можно передавать через интерфейсы) , но я не уверен, куда идти с этим. Я бы действительно предпочел не менять каждый вызов метода на текущих интерфейсах на отдельный класс сообщений.
Какие-нибудь ресурсы / шаблоны / инструменты, чтобы помочь мне сделать это? Пожалуйста, задавайте вопросы, если мне не ясно. Спасибо.