Просто выйти из коробки для момент, вы подумали об использовании WCF с MSMQ? Я не уверен, что я полностью понимаю, что вы архитектура, но похоже, что клиент API должен развернуть еще один процесс, на котором размещен API. При запуске хоста API может возникнуть проблема синхронизации, и когда клиент пытается совершать вызовы. Недавно Microsoft отвергла .NET Remoting (а также все другие предыдущие технологии связи, такие как веб-службы ASMX) как устаревшие, и настоятельно рекомендует разработчикам перейти на платформу WCF.
Если вы используете WCF с MSMQ, у вас не должно быть проблем с синхронизацией. Ваше клиентское приложение может отбрасывать сообщения в надежной очереди независимо от того, запущен ли хост API или нет. Хост API может быть запущен в любое время, и он будет обрабатывать и обрабатывать любые сообщения, ожидающие очереди. Даже если у вас все еще есть клиентское приложение, запускающее хост API, проблема синхронизации больше не будет проблемой, потому что вы используете очередь для передачи сообщений, а не .NET Remoting. WCF обеспечивает приятную, удобную и удобную оболочку вокруг MSMQ, поэтому барьер для входа относительно невелик.
Другая красивая вещь об использовании WCF поверх .NET Remoting заключается в том, что вы можете легко перемещать хост API на другой физический сервер без необходимости изменять клиентские приложения. Вы могли бы даже перейти на другую платформу очередей, если захотите (например, RabbitMQ на AMQP), не изменяя ни клиентские, ни клиентские приложения API. WCF обрабатывает все это взаимодействие для вас, обеспечивая более чистую развязку и более надежную связь между вашим клиентским приложением и хостом API.
Если переход к WCF не является вариантом, вы должны иметь возможность явно устанавливать порт с помощью .NET Remoting. Я не знаю, как вы настраиваете API хоста, но URL для любого данного хуторе объекта, как правило, в виде:
tcp://<hostname>[:<port>]/<object>
Если добавить порт, то вы должны быть в состоянии использовать решение Abhijeet для определить, открыт ли порт или нет. Вы не будете получать свободные связи и надежные коммуникационные преимущества WCF, но это определенно будет меньше. ;)
Jon Skeet! Вы должны знать ответ! = [ – snicker