Pergunta

Temos um serviço que possui algumas configurações que são suportadas apenas por net.tcp.Qual é a melhor maneira de adicionar outro endpoint?Preciso criar um host totalmente novo?

Foi útil?

Solução

Um serviço pode ter vários terminais em um único host, mas cada terminal deve ter uma combinação exclusiva de endereço, ligação e contrato.Para um serviço hospedado no IIS (ou seja, um arquivo .SVC), basta definir o endereço do endpoint como um relativo URI e certifique-se de que o cliente gerado pelo Visual Studio ou wsdl.exe especifique o nome do ponto de extremidade em seu construtor.

Veja também o artigo do MSDN Vários pontos finais.

Outras dicas

Você pode ter vários endpoints definidos no servidor ou no cliente.

Para fazer isso no cliente, você só precisa editar seu arquivo app.config com um novo endpoint com um nome diferente e definir quando criar seu novo cliente.

Por exemplo, se você tiver um endpoint em seu aplicativo cliente como:

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

Pelo qual você liga:

YourServiceClient client = new YourServiceClient();

Você pode adicionar um novo endpoint com um novo nome:

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

Com o qual você pode ligar:

YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");

Acabei de alterar o domínio acima, mas se você criou uma nova seção de configuração de ligação, poderá simplesmente alterar o valor "bindingConfiguration".

Você precisará criar um host totalmente novo se estiver usando o IIS como seu host - o IIS suporta apenas ligações HTTP e não TCP.Se, no entanto, você estiver usando o WAS ou um serviço do Windows, poderá simplesmente criar um novo endpoint net.tcp.

Podemos usar vários endpoints para o mesmo serviço.Podemos configurar a configuração da web da seguinte maneira também

 <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>   
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top