solo per uscire dalla scatola per un momento, hai pensato di usare WCF con MSMQ? Non sono sicuro di comprendere appieno la tua architettura, ma sembra che il client dell'API debba avviare un altro processo che ospita l'API. Potrebbe esserci un problema di temporizzazione tra quando si avvia l'host dell'API e quando il client tenta di effettuare chiamate. Recentemente Microsoft ha deprecato .NET Remoting (e tutte le altre tecnologie di comunicazione precedenti come i servizi Web ASMX) come legacy e raccomanda vivamente agli sviluppatori di passare alla piattaforma WCF.
Se si utilizza WCF con MSMQ, non si dovrebbe avere un problema con i tempi. L'applicazione client può rilasciare i messaggi in una coda duratura indipendentemente dal fatto che l'host API sia in esecuzione o meno. L'host API può essere avviato in qualsiasi momento e raccoglierà ed elaborerà tutti i messaggi in attesa in coda. Anche se l'applicazione client avvia l'host API, il problema di temporizzazione non sarebbe più un problema, in quanto si utilizza la messa in coda per trasferire i messaggi anziché .NET Remoting. WCF fornisce un involucro bello, conveniente e facile da usare intorno a MSMQ, quindi la barriera all'ingresso è relativamente bassa.
L'altra cosa bella dell'utilizzo di WCF su .NET Remoting è che è possibile spostare facilmente l'host API su un server fisico diverso senza dover modificare le app client. Potresti persino passare a una diversa piattaforma di accodamento se lo desideri (come RabbitMQ su AMQP), senza modificare le app host client o API. WCF gestisce tutta questa interazione per te, fornendo un disaccoppiamento molto più pulito e comunicazioni più affidabili tra l'app client e l'host API.
Se lo spostamento verso WCF non è un'opzione, dovresti essere in grado di impostare esplicitamente la porta con .NET Remoting. Io non sono sicuro di come si sta configurando il vostro ospite API, ma l'URL di un dato oggetto telecomandato è di solito sotto forma di:
tcp://<hostname>[:<port>]/<object>
Se si aggiunge la porta, allora si dovrebbe essere in grado di utilizzare la soluzione di Abhijeet a determinare se la porta è aperta o meno. Non otterrete l'accoppiamento libero e i vantaggi di comunicazione affidabili di WCF, ma sarebbe sicuramente meno lavoro. ;)
Jon Skeet! Devi conoscere la risposta! = [ – snicker