Consideraciones referentes a las clases personalizadas de proxy cliente de servicios Web

Actualización: noviembre 2007

En los diseñadores de sistemas distribuidos, los extremos de consumidor en las aplicaciones representan puntos de conexión configurables a los extremos de proveedor. Cuando se implementa una instancia de una definición de sistema compuesta desde estas aplicaciones, los extremos de consumidor en estas aplicaciones se configuran con las direcciones de cualquier extremo de proveedor conectado. Para obtener más información, vea Información general sobre extremos en aplicaciones y Información general sobre los sistemas de aplicaciones.

Para los extremos de consumidor de servicios Web, necesita el uso de clases de proxy cliente de servicios Web "dinámicas" que recuperen las direcciones URL de los extremos del proveedor de servicios Web conectados desde las entradas del archivo de configuración de aplicación adecuado en tiempo de ejecución.

Nota:

Para una aplicación que admite la implementación, Visual Studio genera un archivo de configuración para esa aplicación cuando lo implementa a partir del diagrama de aplicaciones. El archivo de configuración se incluye como parte del proyecto de aplicación en el Explorador de soluciones. Para obtener más información, vea Cómo: Implementar aplicaciones en diagramas de aplicaciones.

De forma predeterminada, el Diseñador de aplicaciones genera las referencias Web a estos extremos de consumidor de servicios Web en aplicaciones ASP.NET, Windows y Office. Estas referencias Web crean a continuación las clases de proxy dinámicas adecuadas con las entradas del archivo de configuración correspondientes.

Nota:

Si utiliza referencias Web estáticas en una aplicación o en una biblioteca de clases de referencia, estas referencias Web no las detecta el Diseñador de aplicaciones y no se muestran como extremos de consumidor de servicios Web, aunque pueden funcionar correctamente. Se recomienda utilizar siempre referencias Web dinámicas, aunque no tenga pensado que la dirección URL del servicio Web cambien en la implementación.

Las secciones siguientes contienen más información sobre cómo utilizar las clases de proxy cliente de servicios Web personalizadas en lugar de las clases de proxy dinámicas:

  • Representing Custom Web Service Client Proxy Classes as Web Service Consumer Endpoints

  • Configuration File Entries for Custom Web Service Proxy Client Classes Used with Windows and Office Applications

  • Configuration File Entries for Custom Web Service Proxy Classes Used with ASP.NET Applications

  • Migrating Web References and Custom Proxy Classes from Visual Studio .NET 2003

Representación de las clases de proxy cliente de servicios Web como extremos de consumidor de servicios Web

El Diseñador de aplicaciones admite el diseño de extremos de consumidor de servicios Web que implementan las referencias Web. Sin embargo, también puede realizar la ingeniería inversa y mostrar manualmente las clases de proxy de consumidor creadas como extremos de consumidor de servicios Web mientras existan las entradas apropiadas en el archivo de configuración de la aplicación de consumidor (App.config o Web.config).

En la aplicación de consumidor aparece un extremo de consumidor de servicios Web para cada entrada del archivo de configuración que el Diseñador de aplicaciones identifica como representante de una configuración de dirección URL del servicio Web para una clase de proxy personalizada. Además, si la dirección URL del servicio Web en la entrada del archivo de configuración coincide con la dirección URL de un extremo del proveedor de servicios Web en el diagrama de aplicaciones, aparece una conexión entre el extremo de consumidor y el extremo del proveedor de servicios Web. Si no existe ningún extremo del proveedor de servicios Web coincidente, pero la dirección URL se puede utilizar para buscar un archivo WSDL válido para el servicio Web adjuntando "?wsdl" o "?disco" a la dirección URL, en este caso se agrega el servicio Web externo al diagrama de aplicaciones y se conecta al extremo de consumidor de servicios Web. Si no se puede buscar un archivo WSDL utilizando la dirección URL, el extremo de consumidor de servicios Web permanece sin conectar.

Las entradas del archivo de configuración que representan la configuración de la dirección URL del servicio Web y la forma como el Diseñador de aplicaciones las identifica difieren entre las aplicaciones ASP.NET y las aplicaciones para Windows y Office. Las instrucciones siguientes describen cómo se puede asegurar de que las clases de proxy personalizadas están representadas correctamente como extremos de consumidor de servicios Web en cada tipo de aplicación.

Nota:

Si no se siguen estas instrucciones, podría crear todavía clases de proxy personalizadas que funcionen correctamente en tiempo de ejecución. Sin embargo, estas clases no estarán representadas como extremos de consumidor de servicios Web, no se conectarán en el diagrama de aplicaciones, no se validarán para la implementación, no se informarán como extremos en el informe de implementación y no estarán disponibles para la configuración del extremo utilizando cualquier herramienta de implementación disponible.

Entradas del archivo de configuración para las clases de cliente proxy de servicios Web personalizadas utilizadas con aplicaciones para Windows y Office

Con las clases de proxy personalizadas utilizadas con aplicaciones para Windows y Office, la configuración de la dirección URL del servicio Web debe aparecer en una entrada applicationSettings en el archivo de configuración App.config de la aplicación de consumidor. No puede ver ni editar esta configuración mediante el Editor de restricciones y configuración, por tanto debe crearla o editarla mediante el panel Configuración al que se tiene acceso haciendo clic con el botón secundario del mouse en el proyecto de aplicación para Windows u Office y viendo las propiedades del proyecto. También debe designar esta configuración como tipo WebServiceURL o String. Para obtener más información, vea Administrar la configuración de la aplicación.

Nota:

La designación del tipo WebServiceURL no aparece en el archivo de configuración App.config. Sin embargo, se almacena como un archivo de configuración asociado que normalmente permanece oculto. Si agrega manualmente la configuración al archivo de configuración App.config, debe agregar la designación del tipo WebServiceURL o String como configuración en el panel Configuración.

En el panel Configuración, puede elegir el ámbito de Aplicación o Usuario para la configuración si la designa como tipo WebServiceURL. Al cambiar el ámbito, se mueve la entrada a la sección applicationSettings o userSettings en el archivo de configuración. Sin embargo, si decide designar la configuración como tipo String, debe elegir Aplicación para el ámbito.

Sugerencia:

Si especifica una configuración de dirección URL del servicio Web en el archivo App.config, especifique una ubicación del servicio Web, no la ubicación de la descripción del servicio Web o archivo WSDL. En el caso de los servicios Web basados en archivos .asmx, la descripción del servicio Web suele encontrarse en la misma ubicación que la ubicación de WSDL. Por consiguiente, para los servicios Web basados en archivos .asmx, el Diseñador de aplicaciones supondrá que la ubicación del servicio Web es igual a la ubicación del archivo WSDL. Si se encuentra un archivo WSDL en esa ubicación, se realiza una ingeniería inversa del servicio Web externo en el diagrama de aplicaciones y se conecta a un extremo de consumidor de servicios Web al que se ha realizado la ingeniería inversa. Si no se encuentra un archivo WSDL válido en esa ubicación, sólo se realiza la ingeniería inversa del extremo de consumidor de servicios Web.

En el ejemplo siguiente se muestra cómo una entrada de applicationSettings puede aparecer en un archivo de configuración App.config de un proyecto Windows cuando la configuración se designa como tipo String:

<applicationSettings>
   <WindowsApplicationName.MySettings>
      <setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
   </WindowsApplicationName.MySettings>
</applicationSettings>

Para las entradas con tipo WebServiceURL, el nombre de la configuración no tiene que ser el nombre de la clase de proxy. Una entrada del archivo de configuración que se define de esta forma y se designa con el tipo WebServiceURL o String en el panel Configuración es todo lo que se precisa para crear un extremo de consumidor de servicios Web en una aplicación para Windows u Office, aunque no haya ninguna clase de proxy personalizada asociada a esa entrada. La eliminación de este extremo elimina la entrada pero no elimina la clase de proxy personalizada asociada.

Entradas del archivo de configuración para clases de proxy del servicio Web personalizadas utilizadas con aplicaciones ASP.NET

ASP.NET no proporciona una forma de especificar que una entrada del archivo de configuración representa una dirección URL del servicio Web. Por consiguiente, el Diseñador de aplicaciones intenta hacer coincidir los nombres de las entradas del archivo de configuración con los nombres de la clase de proxy. Las instrucciones siguientes se aplican a las entradas del archivo de configuración para las clases de proxy personalizadas utilizadas con aplicaciones ASP.NET:

  • Un extremo de consumidor de servicios Web aparece únicamente si se encuentra una clase de proxy con un nombre coincidente en el proyecto de aplicación de consumidor o en cualquier proyecto o ensamblado de referencia.

  • Si la clase de proxy personalizada se utiliza únicamente con aplicaciones ASP.NET, la dirección URL del servicio Web debería aparecer en una entrada appSettings en el archivo de configuración Web.config de la aplicación ASP.NET. El nombre de la entrada del archivo de configuración debe ser el nombre completo de la clase de proxy. Puede editar la entrada appSettings en el archivo Web.config mediante el Editor de restricciones y configuración. Para obtener más información, vea Editor de restricciones y configuración y Aplicar configuración.

  • Si la clase de proxy personalizada se utiliza con aplicaciones para Windows y Office así como con aplicaciones ASP.NET, la dirección URL del servicio Web debería aparecer en una entrada applicationSettings en el archivo de configuración Web.config de la aplicación ASP.NET. El nombre de la entrada del archivo de configuración debe ser el nombre completo de la clase de proxy que lleve el prefijo del nombre de proyecto, que es el formato predeterminado utilizado por las referencias Web generadas automáticamente. Puede editar la entrada applicationSettings en el archivo Web.config mediante el Editor de restricciones y configuración. La sección applicationSettings no admite la sintaxis de punto (.) para establecer nombres; utilice en su lugar caracteres de subrayado (_).

El ejemplo siguiente muestra cómo una entrada appSettings podría aparecer en el archivo Web.config:

<appSettings>
   <add key="Namespace.WebServiceProxyClassName" value="https://localhost/WebServiceApplicationName/WebServiceName.asmx"/>
</appSettings>

El ejemplo siguiente muestra cómo una entrada applicationSettings podría aparecer en el archivo Web.config, que es la misma que la entrada utilizada en el archivo App.config de una aplicación para Windows u Office:

<applicationSettings>
   <WindowsApplicationName.MySettings>
      <setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
   </WindowsApplicationName.MySettings>
</applicationSettings>

La eliminación de un extremo de consumidor de servicios Web que representa una clase de proxy personalizada quita la entrada del archivo de configuración asociado, pero no elimina la clase de proxy asociada. La eliminación o el cambio de nombre de la clase de proxy personalizada no quita la entrada del archivo de configuración asociado; sin embargo, se quita el extremo de consumidor correspondiente porque ya no hay ninguna clase de proxy con un nombre coincidente. Volver a agregar la clase de proxy con un nombre coincidente o cambiarle el nombre a una clase de proxy existente para que coincida con la entrada del archivo de configuración hace que vuelva a aparecer el extremo.

Migrar referencias Web y clases de proxy cliente de servicios Web personalizadas de Visual Studio .NET 2003

Las entradas del archivo de configuración asociado para las referencias Web que se agregan a los proyectos para Windows u Office utilizando Visual Studio .NET 2003 se almacenan en una sección appSettings en lugar de en la sección applicationSettings. Cuando se actualiza a un proyecto para Windows u Office de Visual Studio .NET 2003 mediante el asistente para conversión, las referencias Web y las clases de proxy personalizadas no migran automáticamente de la sección appSettings a la sección applicationSettings. Para obtener más información acerca del asistente para conversión, vea Asistente de conversión de Visual Studio.

Sin embargo, las referencias Web migran automáticamente cuando se regeneran las clases de proxy, por ejemplo, cuando cambian los servicios Web correspondientes o se actualiza manualmente la referencia Web. Aparece una nueva configuración en la sección applicationSettings para cada referencia Web y la utilizan las clases de proxy actualizadas. Después de que se actualiza la sección applicationSettings, los extremos y las conexiones de consumidor de servicios Web correspondientes aparecen en el diagrama de aplicaciones. Para obtener más información, vea Cómo: Actualizar referencias Web a servicios Web en diagramas de aplicaciones.

Si desea mostrar los extremos de consumidor de servicios Web para las clases de proxy personalizadas, debe migrar manualmente estas clases. Puede realizar esta tarea actualizando las clases de proxy para que utilicen la sección applicationSettings y agregando la configuración adecuada mediante el panel Configuración disponible a través de las propiedades de proyecto de aplicación para Windows u Office. Para obtener más información, vea Administrar la configuración de la aplicación.

Vea también

Conceptos

Información general sobre extremos en aplicaciones

Información general sobre aplicaciones ASP.NET en diagramas de aplicaciones

Referencia

Referencias Web y Clases personalizadas de proxy cliente de servicios Web en las bibliotecas de clases

Tipos y prototipos de aplicaciones para la definición de aplicaciones

Otros recursos

Definir aplicaciones en diagramas de aplicaciones