zoukankan      html  css  js  c++  java
  • 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:WCFCalculatorService中。后面我们注册的windows服务将从这个目录下找exe文件。

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

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

     参考:

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

  • 相关阅读:
    分布式系统中的Session问题
    HotSpot VM运行时---命令行选项解析
    K大数查询
    [DarkBZOJ3636] 教义问答手册
    小朋友和二叉树
    [COCI2018-2019#2] Sunčanje
    小SY的梦
    [HDU6722 & 2019百度之星初赛四 T4] 唯一指定树
    [HDU6800] Play osu! on Your Tablet
    [NOI2007] 货币兑换
  • 原文地址:https://www.cnblogs.com/Ming8006/p/3788001.html
Copyright © 2011-2022 走看看