juste pour sortir de la boîte pour une avez-vous pensé à utiliser WCF avec MSMQ? Je ne suis pas sûr de bien comprendre que vous êtes une architecture, mais il semble que le client de l'API doit créer un autre processus qui héberge l'API. Il peut y avoir un problème de synchronisation entre lorsque vous démarrez l'hôte API et lorsque le client essaie d'effectuer des appels. Microsoft a récemment abandonné .NET Remoting (ainsi que toutes leurs autres technologies de communication précédentes, telles que les services Web ASMX) en tant qu'héritage, et recommande fortement que les développeurs passent à la plate-forme WCF.
Si vous utilisez WCF avec MSMQ, vous ne devriez pas avoir un problème de synchronisation. Votre application cliente peut déposer des messages dans une file d'attente durable, que l'hôte de l'API soit en cours d'exécution ou non. L'hôte API peut être démarré à tout moment, et il récupère et traite tous les messages en attente dans la file d'attente. Même si l'application cliente démarre toujours l'hôte API, le problème de temporisation ne sera plus un problème car vous utilisez la mise en file d'attente pour transférer les messages au lieu de .NET Remoting. WCF fournit un wrapper agréable, pratique et facile à utiliser autour de MSMQ, donc la barrière à l'entrée est relativement faible. L'autre avantage de l'utilisation de WCF sur .NET Remoting est que vous pouvez facilement déplacer l'hôte API vers un serveur physique différent sans avoir à changer l'application client. Vous pouvez même passer à une autre plate-forme de mise en file d'attente si vous le souhaitez (par exemple RabbitMQ sur AMQP), sans modifier les applications hôte client ou API. WCF gère toutes ces interactions pour vous, offrant un découplage beaucoup plus propre et des communications plus fiables entre votre application client et votre hôte API.
Si le déplacement vers WCF n'est pas une option, vous devriez pouvoir définir explicitement le port avec .NET Remoting. Je ne sais pas comment vous configurez votre hôte API, mais l'URL pour tout objet télécommandables donné est habituellement sous la forme de:
tcp://<hostname>[:<port>]/<object>
Si vous ajoutez le port, alors vous devriez être en mesure d'utiliser la solution de Abhijeet à déterminez si le port est ouvert ou non. Vous ne gagnerez pas le couplage lâche et les avantages de communications fiables de WCF, mais ce serait certainement moins de travail. ;)
Jon Skeet! Vous devez connaître la réponse! = [ – snicker