2010-01-28 30 views
95

Acabo de golpear una enorme pared de ladrillo con Paypal. Creé un proyecto regular de C# para crear algunas clases de contenedor utilizando su WSDL.Referencia Web vs. Servicio Referencia

Si crea un proyecto que no sea web, la única opción que tiene para agregar un wsdl es una referencia de servicio web. Y esto construye el mismo conjunto de clases de proxy que una Referencia Web, pero no realmente ... agrega más de lo que incluso los chicos de PayPal desconocen.

Así que estuve todo este tiempo buscando la interfaz correcta en esta lista de clases proxy para usar como el servicio (SoapBinding) y el PayPalAPIAASoapBinding no estaba allí. Seguí contando a nuestro punto de PayPal en contacto.

Sólo podía ver los siguientes 2 interfaces que se me apareció lo que tenía que usar ya que no vi un PayPalAPIAASoapBinding que se puede ver en una referencia de servicio basado en Web de referencia:

PayPalAPIAAInterfaceClient 
PayPalAPIInterfaceClient 

por lo que pensé oh, probablemente creé una referencia de servicio frente a una referencia web, que es una opción en un proyecto web. Pero no quiero que mi referencia de servicio se una estrechamente a mi proyecto web. Entonces, por eso creé el Proyecto C#.

¿Qué diablos es una referencia de servicio frente a la referencia web? ¿Y cómo se supone que debo separar esto en el proyecto antera si Service Reference me va a lanzar un bucle y me dará un conjunto de interfaces diferentes a las que haría una Referencia Web?

Además, para hacer las cosas aún más confusas, VS 2008 tiene un proyecto de aplicación de servicio web.

Entonces, ¿qué debo usar? Estamos usando .NET 3.5 framework y estamos no listos para pasar a WCF. Entonces, ¿puedo seguir usando la nueva referencia de servicio incluso si no utilizo WCF o qué? Si está utilizando .NET 3.5 y no WCF aún y aún desea hacer servicios web básicos, ¿todavía sigue la ruta de referencia del servicio y simplemente no utiliza el marco WCF? ¿Todavía se puede usar como una referencia web .NET 2.0, solo que obtendrá una generación completamente diferente del WSDL?

+0

Posible duplicado de [¿Diferencia entre referencia web y referencia de servicio?] (Http://stackoverflow.com/questions/308454/difference-between-web-reference-and-service-reference) –

Respuesta

187

Agregar referencia web es la ASP antigua, obsoleta.La tecnología NET webservices (ASMX) (utilizando solo el XmlSerializer para sus cosas): si hace esto, obtiene un cliente ASMX para un servicio web ASMX. Puede hacer esto en casi cualquier proyecto (aplicación web, sitio web, aplicación de consola, formas de pago, lo que sea).

Agregue la referencia de servicio es la nueva forma de hacerlo, agregando una referencia de servicio WCF, que le ofrece un modelo de servicio mucho más avanzado y mucho más flexible que simplemente las antiguas cosas de ASMX.

Dado que no está listo para pasar a WCF, también puede agregar la referencia web anterior, si es necesario: cuando hace una "Agregar referencia de servicio", en el cuadro de diálogo que aparece, haga clic en en el botón [Opciones avanzadas] en la esquina izquierda botón:

alt text

y en el siguiente cuadro de diálogo que aparece, seleccione el botón [Agregar referencia web] en la parte inferior.

+0

interesante, ya que cuando podemos agregar fotos a las publicaciones! ¡bonito! Debe haber hecho a través de url? – PositiveGuy

+5

¡Qué estúpido es que MS lo oculte en un cuadro de diálogo WCF! Ni siquiera tiene sentido con la ubicación aquí – PositiveGuy

+9

@coffeeaddict: bueno, creo que MS está tratando de influir sutilmente hacia el uso de WCF por defecto, y solo el antiguo ASMX si está realmente decidido :-) –

4

Agregar una referencia de servicio le permite crear un cliente WCF, que se puede usar para hablar con un servicio web normal siempre que utilice el enlace apropiado. Agregar una referencia web le permitirá crear solo una referencia de servicio web (es decir, SOAP).

Si está absolutamente seguro de que no está listo para WCF (realmente no sé por qué), entonces debe crear una referencia de servicio web regular.

+3

Porque WCF NO es fácil para novatos Y, además, mi jefe no me deja moverme a él, es la verdadera razón. Es código y corre aquí. Cuando tienes esa situación, no puedo hacer nada al respecto. – PositiveGuy

+7

@coffeeaddict Creo que usted y su jefe están mal informados. Ambos tipos de referencias crearán una clase que proporciona métodos para llamar a las operaciones del servicio. ¿Cómo es relevante que la clase creada por una referencia de "servicio" herede de una clase base que está en una biblioteca que Microsoft considera parte de una tecnología que llama WCF? –

+1

¿Necesitará .NET 2.0 también en la computadora? ¿O .NET 4.0 podrá manejar la tecnología de "Referencia web" basada en .NET 2.0? Quiero saber porque estoy implementando un servicio web SOAP como "Referencia web" en una aplicación .NET 4.0. –

6

Si entiendo su pregunta correcta:

Para añadir un servicio Web .NET 2.0 Referencia en lugar de una referencia de servicio WCF, haga clic en su proyecto y haga clic en 'Agregar referencia de servicio.'

Luego haga clic en "Avanzado ..." en la esquina inferior izquierda del cuadro de diálogo.

Luego haga clic en "Agregar referencia web ..." en la esquina inferior izquierda del siguiente cuadro de diálogo.

Ahora puede agregar una referencia web regular de SOAP como la que está buscando.

+0

¿Necesitará .NET 2.0 también en la computadora? ¿O .NET 4.0 podrá manejar la tecnología de "Referencia web" basada en .NET 2.0? Quiero saber porque estoy implementando un servicio web SOAP como "Referencia web" en una aplicación .NET 4.0. –

2

Al final, ambos hacen lo mismo. Existen algunas diferencias en el código: los servicios web no agregan un espacio de nombre de raíz del proyecto, pero la referencia de servicio agrega clases de servicio al espacio de nombre del proyecto. La clase ServiceSoapClient recibe una denominación diferente, lo cual no es importante. Al trabajar con TFS, prefiero usar la referencia de servicio porque funciona mejor con el control de fuente. Ambos funcionan con protocolos SOAP.

Encuentro que es mejor usar la referencia de servicio porque es nueva y se mantendrá mejor.

Cuestiones relacionadas