关闭

WCF_Windows宿主服务

621人阅读 评论(0) 收藏 举报
分类:

Windows宿主wcf服务

系统启动,服务即启动。调用很方便

windows宿主步骤:

  • 编写WCF服务
  • 添加windows安装项目
  • 服务端配置
  • 使用工具安装服务
  • 服务调用

添加类库项目

项目中添加必要的引用 (参考:自宿主服务)然后添加一个wcf服务
添加服务接口及接口实现
具体代码可参考上一篇,服务编写是一样的。参考:自宿主服务

添加windows 服务项目



添加成功之后

右键添加安装程序

项目中多出两个类文件

接着设置属性





属性设置完成之后,对wcf服务进行服务端的配置

配置文件中同样多一个host文件,因为windows服务也需要在服务端确定访问地址。

配置内容如下:
 <system.serviceModel>
    <services>
      <service name="WCFWindowsHost.Service.UserInfoService" behaviorConfiguration="HttpGetEnable">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="NoSecurity" contract="WCFWindowsHost.Service.IUserInfoService"></endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8082/UserInfoService"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="HttpGetEnable">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="NoSecurity" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647"/>
          <security mode="None"></security>
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>

接下来编写服务启动程序

在添加的安装类中编写
partial class UserInfoWindowsService : ServiceBase
    {
        private readonly ServiceHost _host;
        public UserInfoWindowsService()
        {
            InitializeComponent();
            _host = new ServiceHost(typeof(UserInfoService));
        }

        protected override void OnStart(string[] args)
        {
            _host.Opened += delegate
            {
                Console.WriteLine(@"wcf windows service is start at @{0}", DateTime.Now);
            };
            _host.Closed += delegate
            {
                Console.WriteLine(@"wcf windows service is stop at @{0}", DateTime.Now);
            };
            try
            {
                _host.Open();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }

        protected override void OnStop()
        {
            try
            {
                _host.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
    }

在windows服务项目中的program中调用

 static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            var servicesToRun = new ServiceBase[] 
            { 
                new UserInfoWindowsService(), 
            };
            ServiceBase.Run(servicesToRun);
        }
    }

以上代码部分就完成

接下来,以管理员身份,在dos窗体,安装windows服务


使用的安装工具为:installUtil.exe       工具位置可查看实用小工具

安装:
首先路径转到windows服务项目的bin\Debug目录

然后找到nstallUtil.exe 工具的位置,右键+shift,复制为路径到dos窗体 ,然后再添加Debug目录下的exe程序

回车,执行命令:{windows服务项目地址}\bin\Debug>"{安装工具地址} {Debug下exe程序}


然后查看服务是否已成功安装

在“服务”中查看,是否有我们安装的服务WCFServiceTest

找到之后,启动服务,并在属性中设置为“自动” 

启动之后,查看启动的服务的端口是否被监听

netstat  -ano| findstr 8082
被监听,说明服务成功启动


wcf服务宿主windows之后的调试

可以将当前启动的windows服务附加到进程,然后在服务实现的代码上设置断点即可调试。


卸载windows服务

命令:{windows服务项目地址}\bin\Debug>"{安装工具地址}  /u  {Debug下exe程序}




以上就WCF宿主Windows的操作流程。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【ITOO】WCF宿主的几种方式

上篇博客已经说明了WCF的一个服务如何创建,那么创建好了服务之后,我们如何发布出去呢?要想完整的做完一个WCF服务,一共分三步走,第一步就是像上篇博客所说创建服务,第二步是发布服务,还有最后一步就是客...
  • xdd19910505
  • xdd19910505
  • 2015-03-24 16:39
  • 2229

使用Winform程序作为WCF服务的宿主

如果我们自己新建一个WCF服务库,生成了dll文件。那我们需要创建一个宿主程序,在本例中我们新建一个Winform程序作为WCF的宿主程序。 在网上很多教程里对创建过程写的很模糊,错误也很多。本文是作...
  • basonson
  • basonson
  • 2016-02-26 15:28
  • 4843

WCF完整实例(Windows服务宿主)

  • 2015-10-26 22:05
  • 1.20MB
  • 下载

WCF中采用控制台宿主和Winform宿主的主要区别

一般的文章中都写到了WCF可以采用多种宿主方式,但是对于控制台宿主和Winform宿主有哪些区别,多数没有写清楚。 对于服务端来说,WCF消息监听和接收体系通过IO线程池并发的处理来自客户端的服务调...
  • irix2008
  • irix2008
  • 2016-04-12 20:22
  • 953

使用WindowsService为宿主实装WCF 服务

由于需要,需要把WCF服务宿主在windows service 中,下面说明一下,Demo的步驟: 1. 写WCF服务   创建一个接口类,与一个实现类。接口类上打上[ServiceContrac...
  • zztfj
  • zztfj
  • 2012-08-28 00:31
  • 5696

WCF——1.3 WCF服务、WinForm宿主、WinForm客户端

原文:点击打开链接 只要前面的1.2能做出来, 这个确实比较简单了。 —————————————————————————————— Winform的Self-Host和Console...
  • yenange
  • yenange
  • 2013-11-27 13:45
  • 6089

WCF 服务 宿主在windows service中的Demo

由于需要,需要把WCF服务宿主在windows service 中,下面说明一下,Demo的步驟: 1. 写WCF服务   创建一个接口类,与一个实现类。接口类上打上[ServiceContrac...
  • otong
  • otong
  • 2012-05-22 10:11
  • 8959

使用Winform程序作为WCF服务的宿主

如果我们自己新建一个WCF服务库,生成了dll文件。那我们需要创建一个宿主程序,在本例中我们新建一个Winform程序作为WCF的宿主程序。 在网上很多教程里对创建过程写的很模糊,错误也很多。本文是作...
  • basonson
  • basonson
  • 2016-02-26 15:28
  • 4843

【ITOO】WCF宿主的几种方式

上篇博客已经说明了WCF的一个服务如何创建,那么创建好了服务之后,我们如何发布出去呢?要想完整的做完一个WCF服务,一共分三步走,第一步就是像上篇博客所说创建服务,第二步是发布服务,还有最后一步就是客...
  • xdd19910505
  • xdd19910505
  • 2015-03-24 16:39
  • 2229

在VS2013下新建一个控制台宿主的WCF工程

最近因为需要开发SOA相关的东西,学习了一下知识。 记录一下如何在vs2013下新建一个将控制台作为宿主的WCF工程。 控制台托管的好处在于方便开发的时候进行调试。 具体分为4步。 第...
  • u011507599
  • u011507599
  • 2016-02-23 21:19
  • 1534
    个人资料
    • 访问:440991次
    • 积分:5867
    • 等级:
    • 排名:第5101名
    • 原创:162篇
    • 转载:74篇
    • 译文:16篇
    • 评论:124条
    博客专栏
    最新评论