Domanda

Introduzione:

Alcuni giorni fa ho implementato con successo un servizio WCF ospitato in un servizio Windows. La community qui su StackOverflow mi ha aiutato con l'esposizione WSDL qui . Ti ringrazio ancora una volta Tuttavia, recentemente ho scoperto che esiste un altro potenziale client per questo servizio, questa volta situato sulla stessa macchina del servizio e questo mi ha portato a pensare che dovrei aggiungere un altro endpoint con il nome PipesBinding.

Per quanto mi riguarda, le pipe nominate sembrano essere la migliore soluzione per la comunicazione intra-macchina. Per favore correggimi se questo è sbagliato.

Problema:

Devo esporre un altro endpoint per lo stesso servizio / contratto, ma questa volta usando netNamedPipeBinding. Tuttavia, in realtà non capisco come posso quindi aggiungere un riferimento al servizio da un client. Stupidamente dopo aver aggiunto

<endpoint address="net.pipe://localhost/OfficeService"
          binding="netNamedPipeBinding"
          contract="netBridge.Development.OfficeService.IWordService"
          bindingConfiguration="localBinding" />

Ho provato ad aggiungere un riferimento al servizio in un'applicazione Windows Form situata sullo stesso computer digitando net.pipe: // .... url. Non ha funzionato Devo dire che ho rimosso l'endpoint mex (MetaData Exchange) in precedenza perché l'ho considerato non necessario.

  1. Questo endpoint mex è necessario per il rilevamento dell'associazione dell'endpoint named pipe?
  2. Come devo aggiungere un riferimento al servizio nell'app client all'endpoint della pipe denominato?
È stato utile?

Soluzione

Il tuo endpoint sembra a posto, anche se sono curioso di sapere cosa c'è in localBinding ...

Sembra che l'opzione più semplice sia semplicemente modificare la configurazione dell'endpoint sul client di pipe denominato in modo che corrisponda all'endpoint del servizio. Al client non dovrebbe importare finché è l'unico endpoint nel file di configurazione dei client. Altrimenti dovrai aggiungere nomi ai tuoi endpoint e fare in modo che il client ne scelga uno specifico quando si esegue il nuovo oggetto proxy.

Buona fortuna!

Altri suggerimenti

l'endpoint mex è necessario durante lo sviluppo in quanto fornisce una posizione http in cui è stato creato wsdl. il wsdl descrive al client come comunicare con il server tramite named pipe, TCP / IP o qualsiasi altra cosa. una volta che l'app client ha creato il proxy sull'associazione di pipe denominata e impostato la configurazione, l'endpoint mex non è più necessario. pertanto, l'endpoint mex può essere rimosso prima della distribuzione attraverso gli ambienti, se lo si desidera.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top