¿Diferencia entre referencia web y referencia de servicio?

¿Cuál es la diferencia entre referencia web y referencia de servicio en WCF? ¿Cuál es preferible en WCF?

La respuesta de bajo nivel aquí es que una referencia web creará una clase de cliente proxy que permite que su código hable a 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 hablar con Servicios Web basados ​​en Java o basados ​​en Python o Ruby, siempre que todos hablen WSDL y se ajusten al estándar de interoperabilidad WS-I).

Una Referencia de servicio creará una clase de cliente proxy 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 WS-I Basic Profile 1.1, y expone los metadatos relevantes como WSDL. Internamente, usa la stack de comunicación ASMX del 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, WS-I Basic Profile). Internamente, utiliza la stack de comunicación WCF en el lado del cliente.

Tenga en cuenta que estas dos 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 un nuevo código, siempre debe utilizar una referencia de servicio simplemente porque es más flexible y está más preparada para el futuro.

La referencia de servicio es la interfaz más nueva para agregar referencias a toda clase de servicios WCF (es posible que no sean servicios web), mientras que la referencia web se refiere específicamente a las referencias web de ASMX.

Puede acceder a las referencias web a través de las opciones avanzadas en Agregar referencia de servicio (si lo recuerdo correctamente).

Usaría la referencia de servicio porque, tal como lo entiendo, es el mecanismo más nuevo de los dos.

Las referencias de servicio se refieren a puntos finales y enlaces, que son completamente configurables. Le permiten señalar 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, se está vinculando mucho 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á mapear contratos de datos a dlls existentes, si coinciden (en realidad este es el comportamiento predeterminado).