将 ASP.NET Web 服务迁移到 WCF

ASP.NET 提供用于生成 Web 服务的 .NET Framework 类库和工具,以及用于在 Internet Information Services(IIS)中托管服务的设施。 Windows Communication Foundation (WCF)提供 .NET Framework 类库、工具和托管设施,使软件实体能够使用任何协议(包括 Web 服务使用的协议)进行通信。 将 ASP.NET Web 服务迁移到 WCF 后,应用程序可以利用 WCF 特有的新功能和改进。

WCF 具有与 ASP.NET Web 服务相关的几个重要优势。 虽然 ASP.NET Web 服务工具仅用于生成 Web 服务,但 WCF 提供了在必须进行软件实体相互通信时可以使用的工具。 这将减少开发人员需要了解的技术数量,以适应不同的软件通信方案,进而降低软件开发资源的成本,以及完成软件开发项目的时间。

即使对于 Web 服务开发项目,WCF 也支持比 ASP.NET Web 服务支持更多的 Web 服务协议。 这些附加协议提供更复杂的解决方案,其中包括可靠会话和事务等。

WCF 支持比 ASP.NET Web 服务更多的传输消息的协议。 ASP.NET Web 服务仅支持使用超文本传输协议(HTTP)发送消息。 WCF 支持使用 HTTP 以及传输控制协议(TCP)、命名管道和 Microsoft 消息队列(MSMQ)发送消息。 更重要的是,可以扩展 WCF 以支持其他传输协议。 因此,使用 WCF 开发的软件可以适应与更广泛的其他软件协同工作,从而增加投资的潜在回报。

WCF 提供比 ASP.NET Web 服务更丰富的部署和管理应用程序的功能。 除了 ASP.NET 也具有的配置系统外,WCF 还提供配置编辑器、从发送方到接收方并通过任意数目的中介返回的活动跟踪、跟踪查看器、消息日志记录、大量性能计数器,以及对 Windows Management Instrumentation 的支持。

鉴于 WCF 相对于 ASP.NET Web 服务的潜在优势,如果使用,或者考虑使用 ASP.NET Web 服务,则有几个选项:

  • 继续使用 ASP.NET Web 服务,并放弃 WCF 提供的好处。

  • 请继续使用 ASP.NET Web 服务,以便在将来的某个时间采用 WCF。 本节中的主题介绍如何将新的 ASP.NET Web 服务应用程序与未来的 WCF 应用程序一起使用,从而最大限度地提高前景。 本节中的主题还介绍了如何生成新的 ASP.NET Web 服务,以便更轻松地将其迁移到 WCF。 但是,如果保护服务非常重要,或者需要可靠性或事务保证,或者必须构造自定义管理设施,则最好采用 WCF。 WCF 专为此类方案而设计。

  • 采用 WCF 进行新开发,同时继续维护现有 ASP.NET Web 服务应用程序。 这个选择很可能是最佳选择。 它会产生 WCF 的优势,同时可节省修改现有应用程序以使用它的成本。 在此方案中,新的 WCF 应用程序可以与现有 ASP.NET 应用程序共存。 新的 WCF 应用程序将能够使用现有的 ASP.NET Web 服务,WCF 可以通过 WCF ASP.NET 兼容模式将新的作功能编程到现有 ASP.NET 应用程序中。

  • 采用 WCF 并将现有的 ASP.NET Web 服务应用程序迁移到 WCF。 可以选择此选项,通过 WCF 提供的功能来增强现有应用程序,或者在新的更强大的 WCF 应用程序中重现现有 ASP.NET Web 服务的功能。

注释

如果 WCF 服务由 IIS 5.x 托管,并且 ASP.NET 已被卸载,则必须小心。 当 WCF 服务由 IIS 5.x 托管时,如果卸载 ASP.NET,则可以请求该服务的代码。 当在运行 IIS 5.x 的操作系统上卸载 ASP.NET 并卸载 WCF 时,.svc 扩展名的文件会被视为文本文件,内容(包括任何源代码)将返回给请求者。

本部分详细介绍了这些选项,将 ASP.NET Web 服务与 WCF 进行比较,并提供有关如何将 ASP.NET Web 服务代码迁移到 WCF 的说明。

另请参阅