net wcf web-services

net - wcf service host



¿Cuántos ServiceContracts puede tener un servicio WCF? (4)

@jdiaz

Por supuesto, debe esforzarse por tener asuntos comerciales muy diferentes en diferentes servicios, pero considere el caso en el que desea que, por ejemplo, todos sus servicios implementen una operación GetVersion (). Podría tener un contrato de servicio solo para esa operación y hacer que cada servicio lo implemente, en lugar de agregar la operación GetVersion () al contrato de todos sus servicios.

¿Cuántos ServiceContracts puede tener un servicio WCF?

Específicamente, dado que un ServiceContract es un atributo de una interfaz, ¿cuántas interfaces puedo codificar en un servicio web de WCF? ¿Es uno de uno a uno?

¿Tiene sentido separar los contratos en múltiples servicios web?


Los servicios de WCF pueden tener múltiples puntos finales, cada uno de los cuales puede implementar un contrato de servicio diferente.

Por ejemplo, podría tener un servicio declarado de la siguiente manera:

[ServiceBehavior(Namespace = "DemoService")] public class DemoService : IDemoService, IDoNothingService

Que tendría configuración a lo largo de estas líneas:

<service name="DemoService" behaviorConfiguration="Debugging"> <host> <baseAddresses> <add baseAddress = "http://localhost/DemoService.svc" /> </baseAddresses> </host> <endpoint address ="" binding="customBinding" bindingConfiguration="InsecureCustom" bindingNamespace="http://schemas.com/Demo" contract="IDemoService"/> <endpoint address ="" binding="customBinding" bindingConfiguration="InsecureCustom" bindingNamespace="http://schemas.com/Demo" contract="IDoNothingService"/> </service>

Espero que ayude, pero si busca las interfaces teóricas máximas que puede tener para un servicio, sospecho que es un múltiplo de 2 increíblemente grande.


Puede hacer que un servicio implemente todos los contratos de servicio que desee. Quiero decir, no sé si hay un límite, pero no creo que exista.

Esa es una forma ordenada de separar las operaciones que implementará el mismo servicio en varias interfaces de contrato de servicio conceptualmente diferentes.


Un servicio puede teóricamente tener cualquier número de Endpoints, y cada Endpoint está ligado a un contrato o interfaz particular, por lo que es posible que un único servicio conceptual (y configurado) aloje múltiples interfaces a través de múltiples endpoints o alternativamente para que varios endpoints alojen la misma interfaz.

Sin embargo, si está utilizando la clase ServiceHost para alojar su servicio, en lugar de IIS, solo puede asociar una única interfaz por ServiceHost. No estoy seguro de por qué este es el caso, pero lo es.