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,到此服务安装成功,去服务管理把服务开启

四、Client段调用

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

在客户端验证既可以。

整个解决方案源代码下载

时间: 2024-07-30 20:28:16

WCF宿主Window Service Demo的相关文章

Web Service Demo图解和WCF Demo图解对比

1.新建一个MVC web项目. 2.点击项目,[右键]→[添加]→[新建项] 3.点击[Web]→[Web服务] 4.恭喜,Web Service已经新建成功,里面的方法就可以参考着根据自己的需要进行修改了,是不是很简单. 5.Web Serice建成之后当然是开始调用了.在[引用]上[右键],添加[服务引用] 6.开始引用. 7.恭喜服务已经引用成功. 再看配置文件,会多出一些代码,这些都是自动生成的,可以看看理解理解. 8.开始在程序中调用方法了 9.到此为止Web Service的建立到

【Window Service】关于Window Service的两三事

引言  Window Service通常用于寄宿WCF服务或者定时作业.下面记录一下它的用法. 创建 创建Window Service项目后,可以看到Program和Service1类.Program是程序的主入口,而Service1则是我们逻辑实现的主要地方 ,两个关键方法是OnStart和OnStop,用于实现服务启动和结束时的逻辑. 安装 在Service1类的设计界面上右击,选择添加安装程序,就可以完成了安装程序的创建. Nlog Window Service作为一个后台程序,发生了什么

手动配置WCF宿主的.config文件遇到的几种错误

今天尝试用控制台应用程序作为WCF宿主,遇到几个问题,这几个问题虽然都不难,但寻找解决方案相当费时费力,做记录. WCF标准的配置文件为: <system.serviceModel>        <services>            <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServic

WCF注册Windows Service

WCF注册Windows Service 2014-06-14 返回 在前面创建一个简单的WCF程序,我们把WCF的服务寄宿到了Host这个控制台项目中了.下面将介绍如何把WCF的服务寄宿到Windows服务中: 1. 删除原来Host控制台项目,然后在solution上右键,新建一个WindowService项目.如下图: 2.对MyFirstWindowsService项目添加对Contracts项目.Service项目和System.ServiceModel的引用. 3.将MyFristW

SVN之二:配置window service自动启动

1.需求 系统启动,SVN的服务器进程也自动启动,解决系统重启后,需要手动启动svnserve的问题. 2.解决方法 将svnserve.exe添加window service,设置为自动启动,注意语法格式"="后面一定要有一个空格:具体如下: 添加服务 C:\>sc create svnserver binpath= "C:\Program Files\SlikSvn\bin\svnserve.exe --se rvice -r C:\test" displ

java打包成window service服务[转]

1 解释 java project  我说的是main方法作为程序入口的java工程,有别于 web project. 这样的工程 一般都是web project的附属扫描程序或一些独立的执行程序,如数据同步程序等.     把这样的project 要部署到生产机上去运行,这样就涉及到两个问题:         1 打包问题,我们一般不会把整个工程文件夹给放上去,一般做法是打一个jar包.        2 执行问题  最好的做法就是这些main方法程序的工程 对客户来说是透明的 就要求工程 发

WCF宿主MVC的问题

让人头疼了几天的问题,终于得到解决,拿出来分享一下..其实只要在路由里屏蔽关键字即可. WCF宿主MVC的问题

Android Service demo例子使用详解

Android Service demo例子使用详解\ 概述Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 Service 则没有 UI 界面,所有的操作都是基于后台运行完成.并且 Service 跟 Activity 一样也是可以由其它的应用程序调用启动的,而且就算用户切换了应用程序,Service 依旧保持运行.一个组件如果与 Service 进行了绑定( bind ),就可以跟 Service 进行数

注册Tomcat到Window Service服务

注册Tomcat到Window Service服务 1.软件和环境 环境:JDK1.8 应用服务:Tomcat9.0(非安装版) 操作系统:Windows 2012 2.设置Tomcat为系统服务 win+R打开运行窗口,输入cmd打开dos窗口,使用cd命令将位置切换到tomcat路径下的bin文件. cd C:\apache-tomcat-9.0.8\bin.输入service命令可以查看service.bat文件的使用说明, C:\apache-tomcat-9.0.8\bin>servi