Anticipación de la adopción de Windows Communication Foundation: cómo facilitar la futura integración
Si utiliza ASP.NET hoy, y prevé que utilizará WCF en el futuro, este tema proporciona una guía para garantizar que los nuevos servicios web de ASP.NET funcionarán bien junto con las aplicaciones de WCF.
Recomendaciones generales
Adopte ASP.NET 2.0 para cualquier nuevo servicio. Al hacer esto, se proporcionará acceso a las mejoras y ampliaciones de la nueva versión. Sin embargo, también permitirá la posibilidad de utilizar los componentes de ASP.NET 2.0 junto con los componentes de WCF en la misma aplicación.
Protocolos
Use la nueva facilidad de ASP.NET 2.0 para validar la conformidad con WS-I Basic Profile 1.1:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(
ConformsTo = WsiProfiles.BasicProfile1_1,
EmitConformanceClaims=true)]
public interface IEcho
Los servicios web de ASP.NET que se ajustan a WS-I Basic Profile 1.1 serán interoperables con clientes de WCF utilizando el enlace predefinido de WCF, BasicHttpBinding.
Desarrollo del servicio
Evite usar el atributo SoapDocumentServiceAttribute para que los mensajes se enruten a métodos en función del nombre completo del elemento de cuerpo del mensaje SOAP en lugar del encabezado HTTP SOAPAction. WCF usa el encabezado HTTP SOAPAction para enrutar los mensajes.
Representación de datos
El XML en el que XmlSerializer serializa de forma predeterminada un tipo es semánticamente idéntico al XML en el que DataContractSerializer serializa un tipo, dando por hecho que el espacio de nombres para el XML se define explícitamente. Al definir un tipo de datos para usar con servicios web de ASP.NET al prever la adopción en el futuro de WCF, haga lo siguiente:
Defina el tipo mediante las clases de .NET Framework en lugar de mediante el Esquema XML.
Agregue solo SerializableAttribute y XmlRootAttribute a la clase, utilizando el último para definir explícitamente el espacio de nombres del tipo. No agregue atributos adicionales del espacio de nombres System.Xml.Serialization para controlar cómo se traducirá la clase de .NET Framework a XML.
Mediante el uso de este enfoque, debería ser capaz de convertir más adelante las clases .NET en contratos de datos agregando DataContractAttribute y DataMemberAttribute sin modificar significativamente el XML en el que las clases se serializan para la transmisión. Los tipos utilizados en los mensajes por los servicios web de ASP.NET podrán ser procesados como contratos de datos mediante aplicaciones de WCF, lo que proporciona, entre otras ventajas, un mejor rendimiento en las aplicaciones de WCF.
Seguridad
Evite usar las opciones de autenticación proporcionadas por Internet Information Services (IIS). Los clientes de WCF no las admiten. Si es necesario proteger un servicio, utilice las opciones proporcionadas por WCF, ya que estas opciones son más completas y se basan en protocolos estándar.