zoukankan      html  css  js  c++  java
  • WCF宿主Window Service Demo

    尝试了下将服务寄宿在window 服务上。具体步骤如下

    整个解决方案截图

    一、创建window 服务

         Wcf.WinService

         

    namespace Wcf.WinService
    {
        public partial class CalService : ServiceBase
        {
            public ServiceHost serviceHost = null; //服务宿主
    
            public CalService()
            {
                InitializeComponent();
                base.ServiceName = "WCF.ServiceHostByWindowService";
            }
    
            protected override void OnStart(string[] args)
            {
               
                if(serviceHost != null)
                {
                    serviceHost.Close();
                }
                serviceHost = new ServiceHost(typeof(Cal));
                serviceHost.Open();          
                base.OnStart(args);
            }
    
            protected override void OnStop()
            {
                if (serviceHost != null)
                {
                    serviceHost.Close();
                    serviceHost = null;
                }
                base.OnStop();
            }
        }
    }
    window 服务代码

     二、创建数据契约,wcf服务类

           

    namespace Wcf.WinService
    {
        [ServiceContract]
        public interface ICal
        {
    
            [OperationContract]
            int Add(int a, int b);
    
             [OperationContract]
            string GetValue(string value);
    
        }
    }
    服务契约
    namespace Wcf.WinService
    {
        public class Cal : ICal
        {
    
            public int Add(int a, int b)
            {
                return a+b;
            }
    
            public string GetValue(string value)
            {
                return "hello " + value;
            }
        }
    }
    Cal服务
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <system.serviceModel>
      <services>
        <service name="Wcf.WinService.Cal"  behaviorConfiguration="basicBehavior">
          <host>
            <baseAddresses>
              <add baseAddress="http://localhost:8999/CalService"/>
            </baseAddresses>
          </host>
          <endpoint address="http://localhost:8999/CalServices" 
                    contract="Wcf.WinService.ICal" 
                    binding="basicHttpBinding" />
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="basicBehavior">
            <serviceMetadata httpGetEnabled="true" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>
    </configuration>
    wcf服务端配置

    三、安装window服务

        1.双击CalService,右键增加安装程序,项目中会自动增加一个ProjectInstaller的文件,且该上面包含serviceProcessInstaller1 和serviceInstaller1 两个组件

        2. 设置serviceProcessInstaller1的属性Account为LocalSystem ,设置serviceInstaller1的ServiceName:WCF.CalService(最终服务的名字,可自己随便设置)

        3.生成解决方案,讲debug下 Wcf.WinService.exe 和 Wcf.WinService.exe.config 复制到D盘

        4.以管理员方式运行vs2012开发人员命令提示,安装服务 installUtil D:Wcf.WinService.exe,到此服务安装成功,去服务管理把服务开启

       5.卸载服务  InstallUtil.exe -u D:Wcf.WinService.exe

    四、Client段调用

        客户端引用服务地址 http://localhost:8999/CalService,引用后,客户端配置文件自动生成。

    在客户端验证既可以。

    整个解决方案源代码下载

  • 相关阅读:
    linux目录特殊权限 t :禁止删除(粘滞)权限
    牛X 好用的sshd_config:ChrootDirectory:特别注意【该目录必须是只能且仅能root用户有w权限!】
    mysql FIND_IN_SET 尝试性优化
    Java base64 添加data URI
    【java】itext5 添加页眉页脚
    【java】一些图片印章的处理方法
    授权MySQL root 用户所有权限
    法学 五院四系
    最具投资前景
    JCL ABEND CODE
  • 原文地址:https://www.cnblogs.com/clc2008/p/3964101.html
Copyright © 2011-2022 走看看