Wcf 基础教程 服务寄宿之 Windows 服务寄宿
wcf的寄宿方式多种多样,今天我们一起来探讨一下windows 服务的寄宿方式,其实明白了控制台的寄宿方式,在windows下的寄宿方式也是一样,只不过是操作方式有点区别。编程代码基本是一样的。
我们首先创建一个window 服务应用程序,然后在service1.cs设计界面中添加安装程序,这些都是我们创建windows服务应用程序应该熟知的步骤,我就不再赘述了,我们需要做的就是把控制台程序中的添加服务宿主的代码拷贝到windows服务应用程序中。
1 protected override void OnStart(string[] args) 2 { 3 4 using (ServiceHost host = new ServiceHost(typeof(CalService), new Uri("http://127.0.0.1:9999/calService"))) 5 { 6 7 host.AddServiceEndpoint(typeof(ICal), new WSHttpBinding(), ""); 8 if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null) 9 { 10 ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); 11 behavior.HttpGetUrl = new Uri("http://127.0.0.1:999/calService/mex"); 12 behavior.HttpGetEnabled = true; 13 host.Description.Behaviors.Add(behavior); 14 } 15 if (host.State != CommunicationState.Opening) 16 { 17 host.Open(); 18 19 } 20 } 21 }
代码基本没变,唯一变的就是代码放置的位置,我们放置到了windows服务启动的事件中。这样我们就可以在windows服务寄宿的时候,通过浏览器浏览到我们创建的服务元数据。
下面就是安装这个windows服务应用程序了,我们不能像控制台程序那样直接在vs中运行,windows服务应用程序必须安装到操作系统中才可以。我们采用的就是installUtil.exe 这个工具,定位到我们windows程序的目录,然后执行,就可以把服务安装到操作系统中,如果要卸载服务,只需在安装的路径后面添加-u即可卸载。
安装了服务,我们确保服务启动以后,就可以正常在浏览器中浏览了。
上面只是简单介绍了windows服务的编码实现,没有用到配置文件,和控制台程序一样,我不再赘述了。下面说说我为什么要单独把windows服务,操作那么简单的单独拿出来说呢:
- windows服务可以在系统后台长时间运行,由操作系统控制。
- windows服务可以通过管理器方便的暂停、停止、启动,方便管理程序。
- 最重要的一点就是windows服务是我们开发中常用到的,我们不可能运行一个控制台程序一直在服务器运行,因为不知道哪个人就会关闭掉,安全性较差。
- 当然了,简单的运行wcf服务在windows服务中还看不出来复杂性,随着项目的复杂,配置项也是方便管理的,因为可以停止、重新启动。睡觉了。拜拜
有人的地方就有政治,有政治就有斗争,但我讨厌政治,讨厌无休止的迎合。