¿Diferencia entre referencia web y referencia de servicio?


Respuestas:


102

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.


1
+1 por agregar que cualquier servicio web estándar con un WSDL con el formato adecuado cumple los criterios
sidney.andrews

Entonces, ¿puedo agregar una referencia de servicio a un servicio web basado en Java? ¿Seguiría teniendo sentido? ya que Java no sabe nada acerca de la pila WCF ...
user20358

sí, puede agregar una referencia de servicio a un servicio web de Java, etc., si tiene un wsdl. La referencia del servicio lo tratará como una referencia web "clásica" en este caso.
Brady Moritz

+1 para indicar que el servicio web puede consumir servicios web descritos por WSDL, así como ASMX. De hecho, tengo una capa empresarial que tiene una referencia web y una referencia de servicio. La referencia web consume un servicio web WSDL, mientras que la referencia de servicio consume un servicio ASMX.
Jagd

67

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 basicHttpBindingo 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.


1
¿Alguien puede ayudarme a comenzar a consumir un servicio a través de Referencia de servicio? Con Web Reference, siempre parece que puedo encontrar las funciones principales en algún tipo de objeto de servicio. Con una referencia de servicio, no tanto. Como ejemplo, estoy tratando de usar el servicio de tarifas de FedEx para obtener precios para las diferentes opciones de envío de FedEx. Sé que hay una llamada getRates () en alguna parte, pero no puedo encontrarla con una Referencia de servicio.
Ben Mills

@BenMills: busque una clase con un Clientsufijo.
Christian Hayter

17

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.


8
Agregar referencia de servicio -> Avanzado -> Agregar referencia web ... nada como soluciones no intuitivas.
Jagd

7

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


5

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).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.