2011-05-30 9 views
5

Estoy tratando de familiarizarme con el uso de WCF, y estoy vagando si alguien podría decirme si tengo la idea correcta con los puntos finales.WCF Puntos finales múltiples e IServices

He estado trabajando a través de los videos en msdn, y ahora estoy vagando por la forma de configurar el servicio WCF. El escenario es si tengo múltiples IServices, p. de tal manera que tengo una iThis y el iThat, y el cliente necesita el acceso a ambos (nota: que van a utilizar net.tcp),

  • iThis manijas de consulta de base de datos y,

  • el iThat trata los cálculos independientes de la base de datos,

supongo que tengo que definir puntos finales separados para iThis y el iThat, que se hace referencia en el cliente por separado. ¿O crearía un servicio IThisAndThat general al que se haga referencia en el cliente y que contenga la funcionalidad para ambos?

¿O son otras formas de desarrollar y manejar los servicios de WCF con múltiples IServices? Mientras pregunto, ¿puedes definir la dirección base para tcp o solo http?

~ Gracias a todos, cualquier ayuda o punteros sería genial.

Respuesta

4

supongo que tengo que definir puntos finales separados para iThis y el iThat, que se hace referencia en el cliente por separado. ¿O crearía un servicio IThisAndThat general que se hace referencia en el cliente y contiene la funcionalidad para ambos?

Puede hacer ambas cosas:

  • puede crear un servicio independiente implementación de la clase - uno para IThis, otra para IThat
  • o puede crear una clase implememtation único servicio que implementa tanto IThis como IThat

Esa elección depende completamente de ti.

Para cada servicio implementación clase que tiene, puede definir cualquier cantidad de puntos finales que desee tener. Por lo tanto, si tiene un ThisService implementando IThis, puede definir un punto final HTTP y TCP para eso, y también tiene un ThatService que implementa IThat para el cual define un punto final TCP. Eso es totalmente tu decisión.

PERO: sólo se puede definir sus criterios de valoración para cada servicio aplicación clase - si tiene un ThisAndThatService la implementación de ambos contratos de servicio, no se puede definir 3 puntos finales para IThis y dos diferentes para IThat - los criterios de valoración que se definen son por servicio implementación clase.

Mientras yo estoy pidiendo se puede definir dirección base para TCP o únicamente http?

Sí, por supuesto - se puede definir una dirección de base para cada uno de los diversos esquemas de direccionamiento (http, net.tcp, net.msmq, net.pipe y así sucesivamente).

+0

@marc_s seguramente un punto final es por interfaz, no por clase de implementación: el punto final depende del contrato en lugar de la implementación, después de todo. Definir un 'servicio' por implementación, pero el servicio puede tener múltiples puntos finales, cada uno con sus propios contratos (o compartidos) ... –

+0

@Kirk Broadhurst: sí - el punto final se basa en la interfaz - ** PERO ** se define dentro de la etiqueta , que se define una vez para ** la clase de implementación del servicio ** –

+0

@marc_s Entonces no entiendo ". .. no puedes definir 3 puntos finales para IThis y dos diferentes para IThat ... ". Seguramente solo tendrías 5 puntos finales en un servicio, 3 que implementarían IThis y 2 implementarían IThat. –

1

Algunos conceptos básicos:

Cada servicio tiene uno o más puntos finales. Los puntos finales son específicos de su servicio relevante, es decir, cada punto final solo puede pertenecer a un servicio y no puede compartirse entre servicios.

Un punto final define un punto de entrada al servicio; incluye una dirección, un enlace y un contrato que pueden ser utilizados por un cliente.

diferentes criterios de valoración mosto tener diferentes direcciones, y pueden tener diferentes fijaciones y contratos (es decir, que no tienen por qué). Por lo general, los diferentes puntos finales tienen diferentes enlaces, es decir, el protocolo de transporte. Pueden tener diferentes contratos si se supone que determinados clientes solo tienen acceso a ciertas operaciones.

Finalmente, su servicio debe implementar todos los contratos que exponen sus diversos puntos finales.

Aquí hay una página de MSDN muy concisa y directa que describe estos conceptos. http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/9f4391e9-8b9f-4181-a081-860d42b992a9/

Hay mucha información sobre WCF en la web, y hay mucho que aprender. Lo mejor es mirar algunos tutoriales o guías que se centran en lo que estás tratando de hacer.

+0

¿Algún comentario sobre este Votation down? ¿Es engañoso o incorrecto de alguna manera? –

Cuestiones relacionadas