Совет по использованию ZeroMQ

Я разрабатываю новое клиент-серверное приложение (.Net) и до сих пор использовал WCF, который соответствует запросу-ответу приложения. красиво подойти. Однако меня попросили заменить это решением на основе сокетов, отчасти для поддержки клиентов, отличных от .Net, и будущих требований pub-sub/broadcast (я понимаю, что WCF способен, но за решением стоят другие факторы). Потерпев неудачу при написании собственного решения для асинхронных сокетов, теперь я смотрю на ZeroMQ.

В моем клиентском приложении есть несколько фоновых потоков, которые периодически запрашивают данные с сервера. Кроме того, определенные действия пользовательского интерфейса (например, нажатие кнопки) могут инициировать отправку сообщения на сервер. WCF сделал это легко - код просто вызывал соответствующий метод на одноэлементном прокси-сервере службы WCF (на самом деле я использую средство Castle Windsor WCF, которое дает мне возможности асинхронного вызова, но это, вероятно, не имеет отношения к моему вопросу).

Я не слишком уверен, как этот подход применим к ZeroMQ, особенно в отношении управления сокетами — я новичок в ZeroMQ и все еще читаю руководство. Правильно ли я говорю, что мне понадобится отдельный сокет для каждого потока (т.е. два потока b/g и пользовательский интерфейс)? Как насчет времени жизни сокета — создавать его каждый раз, когда я хочу отправить/получить (предположительно, неэффективно), или создать сокет при запуске потока и повторно использовать его в течение всего времени жизни потока?

13
задан Andrew Stephens 22 June 2012 в 11:12
поделиться