预期采用 Windows Communication Foundation:便于以后集成
如果您现在使用 ASP.NET,并预期在以后使用 WCF,则本主题所提供的指导可确保新的 ASP.NET Web 服务可与 WCF 应用程序一起正常工作。
一般性建议
对任何新服务采用 ASP.NET 2.0。这样做将允许新服务访问新版本中的改进和增强。不过,这也允许在同一个应用程序中与 WCF 组件一起使用 ASP.NET 2.0 组件。
协议
使用 ASP.NET 2.0 的新工具验证与 WS-I 基本配置文件 1.1 的一致性:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(
ConformsTo = WsiProfiles.BasicProfile1_1,
EmitConformanceClaims=true)]
public interface IEcho
通过使用 WCF 预定义的绑定 BasicHttpBinding,符合 WS-I 基础配置文件 1.1 的 ASP.NET Web 服务将可与 WCF 客户端互操作。
服务开发
避免使用 SoapDocumentServiceAttribute 属性依据 SOAP 消息正文元素的完全限定名将消息路由到方法,而应使用 SOAPAction HTTP 标头。WCF 使用 SOAPAction HTTP 标头来路由消息。
数据表示形式
只要为 XML 显式定义了命名空间,则在默认情况下,XmlSerializer 将类型序列化为的 XML 与 DataContractSerializer 将类型序列化为的 XML 在语义上完全相同。如果预期在以后采用 WCF,则在定义用于 ASP.NET Web 服务的数据类型时,请执行以下操作:
- 使用 .NET Framework 类而不是 XML 架构来定义该类型。
- 仅将 SerializableAttribute 和 XmlRootAttribute 添加到该类,使用后者显式定义类型的命名空间。不要添加 System.Xml.Serialization 命名空间中的其他属性来控制如何将 .NET Framework 类转换为 XML。
通过采用此方法,以后可将 .NET 类转换为附加了 DataContractAttribute 和 DataMemberAttribute 的数据协定,而无需为了传输而对类序列化成的 XML 进行重大更改。消息中由 ASP.NET Web 服务使用的类型将能够作为数据协定由 WCF 应用程序处理,从而使 WCF 应用程序具有更高的性能,同时还会有其他方面的益处。
安全性
避免使用 Internet 信息服务 (IIS) 提供的身份验证选项。WCF 客户端不支持这些选项。如果必须保护某一服务,请使用 WCF 提供的选项,因为这些选项更丰富,并且基于标准协议。