Domanda

Abbiamo un servizio che ha alcune impostazioni supportate solo su net.tcp.Qual è il modo migliore per aggiungere un altro endpoint?Devo creare un host completamente nuovo?

È stato utile?

Soluzione

Un servizio può avere più endpoint all'interno di un singolo host, ma ogni endpoint deve avere una combinazione univoca di indirizzo, associazione e contratto.Per un servizio ospitato da IIS (ovvero un file .SVC), è sufficiente impostare l'indirizzo dell'endpoint su a parente URI e assicurati che il client generato da Visual Studio o wsdl.exe specifichi il nome dell'endpoint nel relativo costruttore.

Vedi anche l'articolo MSDN Endpoint multipli.

Altri suggerimenti

È possibile definire più endpoint sul server o sul client.

Per farlo sul client, devi solo modificare il tuo file app.config con un nuovo endpoint con un nome diverso, quindi definire quando crei il tuo nuovo client.

Ad esempio, se hai un endpoint nella tua app client come:

<endpoint address="https://yourdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService" />

Che chiami con:

YourServiceClient client = new YourServiceClient();

Puoi aggiungere un nuovo endpoint con un nuovo nome:

<endpoint address="https://yourotherdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService_ENDPOINT2" />

Con cui puoi chiamare:

YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");

Ho appena cambiato il dominio sopra, ma se hai creato una nuova sezione di configurazione dell'associazione, potresti semplicemente modificare il valore "bindingConfiguration".

Dovrai creare un host completamente nuovo se stai attualmente utilizzando IIS come host: IIS supporta solo i collegamenti HTTP e non quelli TCP.Se tuttavia stai utilizzando WAS o un servizio Windows, sarai in grado di farla franca semplicemente creando un nuovo endpoint net.tcp.

Possiamo utilizzare più endpoint per lo stesso servizio.Possiamo configurare la configurazione web anche nel modo seguente

 <service name="MessagePatternDemo.Service1">  
 <endpoint name="ep1" address="/ep1" binding="basicHttpBinding" 
   contract="MessagePatternDemo.IService1"/>  
 <endpoint name="ep2" address="/ep2" binding="wsHttpBinding"  
   contract="MessagePatternDemo.IService1" />  
 <endpoint name="mex" contract="IMetadataExchange" address="mex"  
   binding="mexHttpBinding" />  
 </service>   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top