您现在的位置: IT专家网 > WinSystem子站 > 评论分析
承载和使用 WCF 服务
作者: Chris Peiris、Dennis Mulder, 出处:微软, 责任编辑: 韩博颖,
2008-05-21 09:04
本文讨论 Windows Communication Foundation (WCF) 承载方案和 WCF 服务的使用。传统的 ASMX Web 服务通常仅由 Microsoft Internet 信息服务 (IIS) 承载。
在 Windows 服务中进行承载
在 Windows 服务中承载 WCF 服务是一种合理的选择。不应将 Windows 服务与 WCF 服务混为一谈。它们都使用“服务”一词,但却具有不同的含义。Windows 服务是由操作系统管理的进程。Windows 提供了服务控制管理器,用于控制操作系统上安装的服务。Windows 通过服务来支持诸如网络、USB、远程访问、消息队列等操作系统功能。您可以使用 Visual Studio 2005,利用 Windows 服务项目模板(如图 5-2 所示)创建 Windows 服务。

图 5-2. Visual Studio 2005 Windows 服务项目模板
Windows 服务项目模板会生成一个项目,其中包含两个文件:service1.cs 文件和 program.cs 文件。其中 service1.cs 文件包含服务实现,而 program.cs 文件则用于实例化并实质上承载 Windows 服务。要在 Windows 服务内部承载 WCF 服务,只需执行 Windows 服务的 Start() 方法和 Stop() 方法,如列表 5-2 所示。由于启动 Windows 服务的范例与启动 WCF ServiceHost 内的服务相似,因此最后需要将 WCF 服务的生存期与 Windows 服务的生存期相连。
列表 5-2. 承载 WCF ServiceHost 的 Windows 服务
| using System; using System.ServiceModel; using System.ServiceProcess; using QuickReturns.StockTrading.ExchangeService; namespace QuickReturns.StockTrading.ExchangeService.Hosts { public partial class ExchangeWindowsService : ServiceBase { ServiceHost host; public ExchangeWindowsService() { InitializeComponent(); } protected override void OnStart(string[] args) { Type serviceType = typeof(TradeService); host = new ServiceHost(serviceType); host.Open(); } protected override void OnStop() { if(host != null) host.Close(); } } } |
- 本文关键词:

