Acabo de chocar contra una enorme pared de ladrillos con Paypal. Había creado un proyecto C # normal para crear algunas clases contenedoras usando su WSDL.
Si crea un proyecto que no es web, la única opción que tiene para agregar un wsdl es una referencia de servicio web. Y esto crea el mismo conjunto de clases de proxy que una referencia web, pero en realidad no ... agrega más de lo que ni siquiera los chicos de PayPal son conscientes.
Así que todo este tiempo estuve buscando la Interfaz correcta en esta lista de clases de proxy para usar como servicio (SoapBinding) y PayPalAPIAASoapBinding
no estaba allí, le dije a nuestro punto de contacto de PayPal.
Solo pude ver las siguientes 2 interfaces que me parecieron lo que necesitaba usar, ya que no vi una PayPalAPIAASoapBinding
que PUEDA ver en una referencia de servicio basada en Web Reference:
PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient
Así que me di cuenta de que probablemente había creado 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 esté estrechamente relacionada con mi proyecto web. Por eso creé el Proyecto C #.
Entonces, ¿qué diablos es una referencia de servicio frente a una referencia web? ¿Y cómo se supone que voy a separar esto en otro proyecto si Service Reference me va a lanzar un bucle y me dará un conjunto de interfaces diferentes a las de una Web Reference?
Además, para hacer las cosas aún MÁS confusas, VS 2008 tiene un proyecto de Aplicación de Servicio Web.
Entonces, ¿qué uso? Estamos utilizando el marco .NET 3.5 y estamos no listo para pasar a WCF . Entonces, ¿puedo seguir usando la nueva referencia de servicio incluso si no uso WCF o qué? SI está usando .NET 3.5 y aún no WCF y aún desea hacer servicios web básicos, ¿sigue la ruta de referencia de servicio y simplemente no usa el marco WCF? Lo que significa que aún se puede usar como una referencia web .NET 2.0, solo que obtendrá una generación completamente diferente del WSDL.
Respuestas:
Add Web Reference es la tecnología de servicios web ASP.NET obsoleta y antigua (ASMX) (que utiliza solo 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, Winforms, lo que sea).
Agregar referencia de servicio es la nueva forma de hacerlo, agregando una referencia de servicio WCF, que le brinda un modelo de servicio mucho más avanzado y mucho más flexible que simplemente las cosas antiguas de ASMX.
Dado que no está listo para pasar a WCF, también puede agregar la referencia web de estilo antiguo, si realmente debe hacerlo: cuando haga una "Agregar referencia de servicio", en el cuadro de diálogo que aparece, haga clic en [Avanzado ] botón en la esquina izquierda del botón:
y en el siguiente cuadro de diálogo que aparece, seleccione el botón [Agregar referencia web] en la parte inferior.
fuente
Si entiendo bien tu pregunta:
Para agregar una referencia de servicio web .net 2.0 en lugar de una referencia de servicio WCF, haga clic con el botón derecho en su proyecto y haga clic en 'Agregar referencia de servicio'.
Luego haga clic en "Avanzado ..." en la parte inferior izquierda del cuadro de diálogo.
Luego, haga clic en "Agregar referencia web ..." en la parte inferior izquierda del siguiente cuadro de diálogo.
Ahora puede agregar una referencia web SOAP regular como está buscando.
fuente
Agregar una referencia de servicio le permite crear un cliente WCF, que se puede usar para hablar con un servicio web regular siempre que use 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é), debe crear una referencia de servicio web regular.
fuente
Al final, ambos hacen lo mismo. Hay algunas diferencias en el código: los servicios web no agregan un espacio de nombres raíz del proyecto, pero la referencia de servicio agrega clases de servicio al espacio de nombres del proyecto. los
ServiceSoapClient
clase recibe un nombre diferente, lo cual no es importante. Al trabajar con TFS, prefiero usar Service Reference porque funciona mejor con el control de fuente. Ambos funcionan con protocolos SOAP.Me parece mejor usar la referencia de servicio porque es nueva y, por lo tanto, se mantendrá mejor.
fuente