¿Cuál es la diferencia entre la referencia web y la referencia de servicio en WCF? ¿Cuál es preferible en WCF?
¿Cuál es la diferencia entre la referencia web y la referencia de servicio en WCF? ¿Cuál es preferible en WCF?
Respuestas:
La respuesta de bajo nivel aquí es que una referencia web creará una clase de proxy de cliente que permite que su código se comunique con un servicio web que se describe a través de WSDL y se comunica a través de SOAP o HTTP GET (otros carteles indican que solo es ASMX, pero Las referencias web también pueden comunicarse con los servicios web basados en Java o con Python o Ruby siempre que todos hablen WSDL y cumplan con el estándar de interoperabilidad WS-I).
Una referencia de servicio creará una clase de proxy de cliente que se comunica con un servicio basado en WCF: independientemente de si ese servicio WCF es un servicio web o no.
Una referencia web le permite comunicarse con cualquier servicio basado en cualquier tecnología que implemente el WS-I Basic Profile 1.1, y expone los metadatos relevantes como WSDL. Internamente, utiliza la pila de comunicación ASMX en el lado del cliente.
Una referencia de servicio le permite comunicarse con cualquier servicio basado en cualquier tecnología que implemente cualquiera de los muchos protocolos admitidos por WCF (incluidos, entre otros, el perfil básico WS-I). Internamente, utiliza la pila de comunicación WCF en el lado del cliente.
Tenga en cuenta que ambas definiciones son bastante amplias, y ambas incluyen servicios no escritos en .NET.
Es perfectamente posible (aunque no recomendado) agregar una referencia web que apunte a un servicio WCF, siempre que el punto final WCF use basicHttpBinding
o alguna variante personalizada compatible.
También es posible agregar una referencia de servicio que apunta a un servicio ASMX. Al escribir código nuevo, siempre debe usar una Referencia de servicio simplemente porque es más flexible y está preparada para el futuro.
Client
sufijo.
La referencia de servicio es la interfaz más nueva para agregar referencias a todo tipo de servicios WCF (pueden no ser servicios web), mientras que la referencia web se refiere específicamente a las referencias web ASMX.
Puede acceder a referencias web a través de las opciones avanzadas en agregar referencia de servicio (si no recuerdo mal).
Usaría la referencia de servicio porque, según tengo entendido, es el mecanismo más nuevo de los dos.
Las referencias de servicio tratan con puntos finales y enlaces, que son completamente configurables. Le permiten apuntar su proxy de cliente a un WCF a través de cualquier protocolo de transporte (HTTP, TCP, memoria compartida, etc.)
Están diseñados para trabajar con WCF.
Si usa un WebProxy, está prácticamente obligado a usar WCF sobre HTTP
Otro punto a tener en cuenta es que la nueva interfaz de usuario para la interfaz de servicio le dará mucha más flexibilidad sobre cómo desea crear su clase de proxy. Por ejemplo, le permitirá asignar contratos de datos a dlls existentes, si coinciden (en realidad, este es el comportamiento predeterminado).