WCF寄宿到Windows Service

WCF寄宿到Windows Service[1]

2014-06-14

WCF寄宿到Windows Service
参考

WCF寄宿到Windows Service


返回

在前面创建一个简单的WCF程序,我们把WCF的服务寄宿到了Host这个控制台项目中了。下面将介绍如何把WCF的服务寄宿到Windows服务中(源代码):

1. 删除原来Host控制台项目,然后在solution上右键,新建一个WindowService项目。如下图:


2.对WcfServices.HostingWindowsSerice项目添加对Contracts项目、Service项目和System.ServiceModel的引用。

3.将WcfServices.HostingWindowsSerice项目中的Class1.cs文件重命名为CalculatorHost.cs,然后打开这个文件,里面代码如下:

 1 using System.ServiceProcess;
 2 using System.ServiceModel;
 3 using WcfServices.Services;
 4 
 5 namespace WcfServices.HostingWindowsService
 6 {
 7     public partial class CalculatorHost : ServiceBase
 8     {
 9         private ServiceHost _host;
10 
11         public ServiceHost Host
12         {
13             get { return _host; }
14             set { _host = value; }
15         }
16 
17 
18         public CalculatorHost()
19         {
20             InitializeComponent();
21         }
22 
23         protected override void OnStart(string[] args)
24         {
25             Host = new ServiceHost(typeof(CalculatorService));
26             Host.Open();
27         }
28 
29         protected override void OnStop()
30         {
31             if (Host != null)
32             {
33                 Host.Close();
34                 Host = null;
35             }
36 
37         }
38     }
39 }
View Code

4.CalculatorHost.cs[Design]的界面上右键,选择添加安装器(Add Installer)。这时,项目里会自动生成一个ProjectInstaller.cs文件。

5.打开ProjectInstaller.cs[Design]的设计界面,将会出现下图:

6.选中serviceInstaller1,打开它的属性视图(Ctrl W,P),修改属性。如下图所示:

7.接着选中serviceProcessInstaller1,打开它的属性视图,修改属性。如下图:(这里服务账号也可以是其他的。)

8.接下来我们看看这个项目里的program.cs文件。代码如下:

 1 using System.ServiceProcess;
 2 
 3 namespace WcfServices.HostingWindowsService
 4 {
 5     static class Program
 6     {
 7         /// <summary>
 8         /// 应用程序的主入口点。
 9         /// </summary>
10         static void Main()
11         {
12             ServiceBase[] ServicesToRun;
13             ServicesToRun = new ServiceBase[] 
14             { 
15                 new CalculatorHost() 
16             };
17             ServiceBase.Run(ServicesToRun);
18         }
19     }
20 }
View Code

 

9.这些都做好了之后,在WcfServices.HostingWindowsSerice项目中添加服务端的配置文件。这个在上一节中也写过,代码如下: 

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3   <system.serviceModel>
 4     <behaviors>
 5       <serviceBehaviors>
 6         <behavior name="CaclulaterBehavior">
 7           <serviceMetadata httpGetEnabled="true" />
 8         </behavior>
 9       </serviceBehaviors>
10     </behaviors>
11     <services>
12       <service behaviorConfiguration="CaclulaterBehavior" name="WcfServices.Services.CalculatorService">
13         <endpoint address="http://localhost:8080/calculatorservice" binding="basicHttpBinding"
14             bindingConfiguration="" contract="WcfServices.Contracts.ICalculator" />
15         <host>
16           <baseAddresses>
17             <add baseAddress="http://localhost:8080/calculatorservice" />
18           </baseAddresses>
19         </host>
20       </service>
21     </services>
22   </system.serviceModel>
23 </configuration>
View Code

 

10.Build项目WcfServices.HostingWindowsSerice,查看生成的文件如下:

将整个debug文件夹中文件拷出来,放到另外一个目录下。比如D:\WCF\CalculatorService中。后面我们注册的windows服务将从这个目录下找exe文件。

11.下面就是要注册了。我们用InstallUtil.exe来注册(当然你也可以用sc)。打开InstallUtil.exe在我的电脑的目录是:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319。你可以从命令行进如这个目录,然后执行InstallUtil命令。也可以在所有程序中找到visual studio Tools,里面的visual studio command prompt命令行工具。执行安装的命令是InstallUtil D:\WCF\CalculatorService\WcfServices.HostingWindowsSerice.exe

12.成功后,你就可以在控制面板->管理工具->服务中找到它了,如下图:

 

 参考:

[1] WCF注册Windows Service  http://www.cnblogs.com/judastree/archive/2012/08/29/2662184.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值