В нашем проекте у нас есть ряд программ, которые взаимодействуют друг с другом как внутри компьютера, так и по внутренней сети. Для решения этой проблемы мы используем сегодня COM / DCOM.
Однако мы считаем, что DCOM слишком сложен. Как настроить изменение параметров безопасности для каждой версии Windows.
Поэтому мы ищем протокол, который обеспечивает связь между нашими различными программами на разных компьютерах с Windows и которые не имеют такой нагрузки, как DCOM.
Программы написаны на C ++ / MFC и C #
Безопасность не так важна, поскольку система работает в небольшой локальной сети, полностью отделенной от других сетей.
Если вам нужна гарантированная доставка сообщений и поддержка транзакций — лучшим вариантом будет использование любой подсистемы обмена сообщениями. Если вы абсолютно уверены, что вся ваша система будет работать на компьютерах с Windows — MSMQ — ваш выбор. Его можно легко установить из программы установки компонентов Windows.
Если вы ожидаете, что некоторые узлы будут работать на других ОС — узнайте больше о RabbitMQ.
Существует множество подсистем обмена сообщениями, которые можно использовать, например, IBM MQ или Tibco Messaging.
Как было упомянуто выше — я согласен, что MassTransit может быть хорошим вариантом для работы с MSMQ, но потребует некоторых начальных методов обучения и архитектурных подходов. Открытый исходный код и бесплатное использование.
NServiceBus — тот же самый зверь, вероятно, более отточенный, но его нельзя использовать бесплатно. Очень дорого, как по мне.
Если вы решите использовать RabbitMQ, взгляните на упаковку EasyNetQ.
Однако, если вам не нужна гарантированная доставка между приложениями — почему бы не использовать REST-сервисы с использованием MVC4. Его гораздо быстрее настроить, и вы сможете легко поддерживать клиенты других платформ, такие как устройства iOS или Android.
Почему бы не использовать NServiceBus или MassTransit?
Они оба могут использовать MSMQ в качестве транспорта (что очень легко включить в любой версии Windows).
С такими инструментами (или с вашей собственной оболочкой поверх MSMQ) вы сможете общаться естественным путем, отправляя сообщения и подписываясь на сообщения, что делает ваши компоненты системы хорошо отделенными.
В качестве альтернативы вы можете использовать такие вещи, как RabbitMQ (или даже ZeroMQ, если вы стремитесь к высокой производительности), они оба имеют привязки практически для любого популярного языка программирования, поэтому ваша система может иметь компоненты, написанные на разных языках и работающие на разных ОС.
Определенно взгляните на ZeroMQ в любом случае, когда вы рассматриваете варианты 🙂