Compartir a través de


Puntos finales de servicios web basados en archivos WSDL

Actualización: noviembre 2007

Puede utilizar un enfoque orientado a contratos para definir el comportamiento de los servicios. Puede realizar esta tarea creando puntos finales de proveedor de servicios web a partir de los archivos de Lenguaje de descripción de servicios web (WSDL). También puede ajustar los puntos finales de proveedor de servicios web existentes a los archivos WSDL.

Nota:

Puede realizar estas tareas utilizando archivos .disco. Esta versión sólo admite los archivos WSDL que contienen un único enlace WSDL y un archivo .disco que hace referencia a un único servicio web. Para obtener más información, vea Comunicación entre las aplicaciones.

Para obtener más información, vea las secciones siguientes:

  • Creating Web Service Endpoints from WSDL Files

  • Conforming Web Service Endpoints to WSDL Files

  • Web Service Endpoints Based on WSDL Files

  • Custom Types Referenced in Operation Signatures

Para obtener más información acerca del diseño de servicios orientado a contratos, visite la página Contract First Web Services Interoperability de MSDN online en https://go.microsoft.com/fwlink/?LinkId=49584.

Crear puntos finales de servicios web a partir de archivos WSDL

Puede crear puntos finales basados en WSDL en los sistemas y aplicaciones ASP.NET. Este punto final aparece en la aplicación o el sistema. Se rellena con las firmas de operación a las que hace referencia el archivo WSDL. Estas firmas de operación también aparecen en el archivo de clase de servicio web si la aplicación asociada ya está implementada. En el proyecto de la aplicación pueden aparecer archivos de clase adicionales si estas firmas hacen referencia a tipos personalizados. Para obtener más información, vea Custom Types Referenced in Operation Signatures.

Nota:

Sólo se pueden implementar aplicaciones, no sistemas.

Al crear un extremo de proveedor de servicios Web a partir de un archivo WSDL, el resultado es equivalente a emplear la utilidad de línea de comandos Wsdl.exe con la opción /server. Para obtener más información, vea:

Ajustar puntos finales de servicios web a archivos WSDL

Puede ajustar los puntos finales de proveedor de servicios web existentes a los archivos WSDL. Esta acción agrega o cambia las firmas de operación existentes, ajustándolas al archivo WSDL. Esta acción también podría afectar a las firmas de operación y a los nombres de tipo en el código si la aplicación asociada ya está implementada. Sin embargo, los tipos anidados en los conjuntos de datos no se ajustarán.

Nota:

Al ajustar un punto final de un miembro de un sistema, en realidad se ajusta la definición de punto final subyacente. Esta acción modifica los usos de esa definición en otros sistemas.

Si bien el código del cuerpo de método no sufre cambios, los cambios en las firmas de operación y los nombres de tipo podrían hacer que el código del cuerpo de método ya no se compile. Por consiguiente, revise el código. Identifique los posibles cambios necesarios para corregir los errores del compilador. Para obtener más información, vea Cambios en el código después de ajustar extremos de servicios web a archivos WSDL.

Puntos finales de servicios web basados en archivos WSDL

Un archivo WSDL especifica los requisitos para proporcionar y consumir un servicio web. Actúa como un contrato entre el proveedor y el consumidor. Los puntos finales de servicios web basados en la misma versión de un archivo WSDL también permiten sustituir esos puntos finales. Para obtener más información, vea Sustitución de extremos de servicios web.

La definición de enlace de WSDL en un archivo WSDL describe las operaciones que ofrece un servicio web. El punto final de proveedor de servicios web representa este enlace de WSDL. Si la aplicación ASP.NET asociada habilita la generación de archivos WSDL, Visual Studio genera un nuevo archivo WSDL por cada servicio web en esa aplicación (una vez implementada la aplicación). Visual Studio también utiliza este archivo WSDL para generar las referencias web de las aplicaciones de consumidor de servicios web asociadas (una vez implementadas). Para obtener más información, vea Cómo: Controlar la generación de archivos WSDL para los servicios web ASP.NET.

Una vez que se haya publicado el archivo WSDL para un servicio web, cada cambio que se realice en una definición de servicio web se considerará un nuevo enlace de WSDL.

Sugerencia:

Si cambia la definición de servicio web, cambie el nombre de enlace de WSDL, el espacio de nombres de enlace de WSDL o ambos. El cambio de una definición de servicio Web sin cambiar su nombre o espacio de nombres de enlace de WSDL puede ocultar el hecho de que el servicio Web ha dejado de ser compatible con las aplicaciones conectadas o previamente conectadas. El valor predeterminado del nombre de servicio de WSDL y del nombre de enlace de WSDL es "WebServiceN", donde "N" representa un número ordinal. Sin embargo, una vez implementada la aplicación, eliminar el nombre de enlace de WSDL del archivo de clase de servicio web cambia el valor predeterminado a "WebServiceNSoap". El valor predeterminado para el espacio de nombres del servicio de WSDL y el espacio de nombres de enlace de WSDL es "http://tempuri.org". La descripción del servicio de WSDL y las propiedades de ubicación de enlace de WSDL no tienen un valor predeterminado. El valor predeterminado para el nombre de enlace de WSDL es "WebServiceN".

Si se cambia el nombre de enlace o el espacio de nombres de enlace de WSDL en un punto final de proveedor de servicios web no implementado, las propiedades correspondientes de los puntos finales de consumidor conectados y no implementados se actualizarán automáticamente o se actualizarán cuando se vuelvan a conectar. Sin embargo, cuando cambia estas propiedades en un extremo del proveedor de servicios Web implementado, los extremos del consumidor de servicios Web conectados e implementados podrían no actualizarse inmediatamente. Sin embargo, puede actualizar manualmente estas propiedades para estos extremos de consumidor.

Tipos personalizados a los que se hace referencia en las firmas de operación

Las firmas de operación en un punto final de servicios web podrían hacer referencia a clases CLR que controlan la serialización XML de los tipos XML complejos a los que se hace referencia en el archivo WSDL o en los archivos de esquema XML relacionados. Si la aplicación asociada aún no está implementada, Visual Studio genera los archivos de código para estas clases en el momento de la implementación. Genera estos archivos junto con los correspondientes archivos de proyecto de servicio web y de aplicación. Si la aplicación ya está implementada, agrega los archivos de código para estas clases al proyecto existente. Para obtener más información, vea Información general sobre aplicaciones ASP.NET en diagramas de aplicaciones.

Nota:

Cuando se copia un punto final de servicios web basado en WSDL a otra aplicación, Visual Studio copia sólo las firmas de operación. Si la aplicación de destino ya está implementada, no copia los archivos de código de las clases CLR adicionales. Si la aplicación de destino aún no está implementada, no generará los archivos de código para estas clases en el momento de la implementación. Para evitar esta situación, cree los puntos finales a partir del mismo archivo WSDL o .disco utilizado para los puntos finales que desee copiar.

En algunos esquemas XML, la clase de servicio web y las clases de serialización de datos requieren atributos de serialización adicionales para asegurar que el código XML tiene el formato correcto. Sin embargo, los puntos finales de proveedor de servicios web basados en WSDL admiten sólo un conjunto pequeño de estos atributos de serialización. En un número reducido de casos, el archivo WSDL generado para el punto final de servicios web y los mensajes XML resultantes pueden no ser coherentes con el archivo WSDL original utilizado para crear el punto final de proveedor de servicios web.

Sugerencia:

Si surgen estos problemas, use la utilidad Wsdl.exe para generar la clase de servicio web y las clases de serialización de datos en lugar de crear un punto final de proveedor de servicios web a partir de un archivo WSDL. Sin embargo, deberá agregar manualmente al proyecto el código generado y, a continuación, crear el archivo .asmx necesario. De este modo, aparecerá un punto final de proveedor de servicios web correcto. Esto permite utilizar el diseñador para editar el punto final.

La siguiente lista contiene más información sobre compatibilidad con estos atributos de serialización:

  • Los atributos de serialización XML siguientes se agregan a las clases generadas para los tipos XML complejos: SerializableAttribute, SoapTypeAttribute, XmlIncludeAttribute, XmlRootAttribute y XmlTypeAttribute.

  • Los atributos de serialización XML siguientes se agregan a los campos de clase: XmlAnyAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlChoiceIdentifierAttribute, XmlElementAttribute, XmlEnumAttribute, XmlIgnoreAttribute, XmlNamespaceDeclarationsAttribute y XmlTextAttribute.

  • Los atributos de serialización no se aplican al tipo de valor devuelto de los métodos Web.

  • Los atributos de serialización no se aplican a los parámetros de los métodos Web.

  • Los atributos de serialización codificados por SOAP siguientes no se aplican a estas clases: SoapElementAttribute, SoapIgnoreAttribute, SoapAttributeAttribute, SoapAttributeOverrides, SoapAttributes, SoapEnumAttribute y SoapIncludeAttribute.

  • Los argumentos de atributos que requieren un tipo XML complejo se generan como tipo String con el nombre completo del tipo. Lo que provocará un error del compilador que se deberá corregir.

    Por ejemplo, <XmlIncludeAttribute(GetType("ClassName"))> en Visual Basic se genera como <XmlIncludeAttribute("ClassName")>, mientras que [XmlIncludeAttribute(typeof("ClassName"))] en Visual C# se genera como [XmlIncludeAttribute("ClassName")].

Vea también

Tareas

Cómo: Agregar extremos a aplicaciones

Cómo: Ajustar puntos finales de servicios web a archivos WSDL

Conceptos

Información general sobre extremos en aplicaciones