Pregunta

Tengo 2 contratos (CA & CB) implementadas por un único servicio WCF con 2 puntos finales (EPA y EPB).

Este es no para fines de seguridad, sino puramente por razones de claridad / organización, me gustaría sólo para "ver" las operaciones de Contracta cuando descubro el servicio a través endpointA; y del mismo modo, sólo se ve a través de las operaciones de ContractB endpointB.

No necesito a "proteger" a estas operaciones per se. El escenario es tal que cualquier cliente sólo necesita un "lado" del servicio, nunca las dos cosas (pero, las operaciones en sí comparten recursos, por lo que tiene sentido tener un único servicio en lugar de 2 servicios).

Parece que un servicio determinado básicamente obtiene 1 WSDL, ergo todas las operaciones están expuestos a todos los puntos finales. Es que la forma en que funciona, o hay una manera de "forma" un punto final mediante operaciones no definidas en el contrato puntos finales oclusión?

¿Fue útil?

Solución

Por defecto, tienes razón - clase de implementación de un servicio se pone un enlace WSDL que contiene todos los métodos de servicio (de todos los contratos de servicios) que implementa la clase este servicio

.

No hay formas presentes (por lo que yo sé) a la "forma" del WSDL de ninguna manera (Fácil) - WCF sí ofrece formas de entrar en el proceso de crear el WSDL (estática o dinámica), pero esos Aren 't para los débiles de corazón. Sería mucho más fácil para que usted acaba de dividir la ejecución de los contratos de servicio en dos clases separadas y entonces tendría dos servicios distintos, WSDL separada y todo.

Otros consejos

Marc es absolutamente impresionante derecha. Sólo estoy añadiendo por qué sucede esto en WCF. En todos los metadatos WCF funcionalidad relacionada se basa en el comportamiento de servicio de metadatos y el punto final Mex. Estas dos características se definen en el nivel de servicio. Por lo que no puede tomar más alta granularidad (a menos que se escribe una gran cantidad de código personalizado) y especificar los metadatos por punto final.

servicio WCF (clase) se mapea directamente a WSDL: elemento de servicio que expone cada contrato como WSDL separado: puerto (en WCF conocido como punto final). Este es el punto principal para responder a su pregunta. Si no desea que su segundo contrato en el que WSDL: servicio no se puede aplicar de la misma clase.

Usted ha mencionado que sus contratos de servicio comparten recursos. En ese caso, el servicio WCF probablemente también contiene la lógica de negocio. Esa es una razón para sus problemas. El buen diseño para la implementación de servicios de WCF es crear sólo como envolturas alrededor de las clases de lógica de negocios independientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top