尝试了下将服务寄宿在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,引用后,客户端配置文件自动生成。

在客户端验证既可以。

整个解决方案源代码下载

WCF宿主Window Service Demo的更多相关文章

  1. WCF 宿主与通信模式(二)

    宿主 每个WCF服务都必须托管在Windows进程中,该进程称为宿主进程(host process) 单个宿主进程可以托管多个服务,相同的服务类型也可以托管在多个宿主进程中. wcf中托管服务一般有一 ...

  2. wcf和web service的区别

    1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单 ...

  3. WCF和Web Service的 区(guan)别(xi)

    参考文献:http://social.microsoft.com/Forums/zh-CN/c06420d1-69ba-4aa6-abe5-242e3213b68f/wcf-webservice 之前 ...

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

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

  5. WCF宿主实践入门

    本篇属于WCF实践入门,由于博主本人水平有限,没有理论上的介绍,仅仅从其几种不同的宿主方式分别介绍WCF的使用. WCF有多种宿主方式:1.自托管宿主,2.windows service宿主,3.II ...

  6. RabbitMQ.NET In Window Service

    工作中要求使用RabbitMQ,以Windows Service 模式启动,中间有遇到一些问题,网上大部分博客有误导倾向, 在这里做一个简单的记录,以免后面的人走坑: 1. 自动重新连接,不需要手动处 ...

  7. WCF入门三[WCF宿主]

    一.概述 WCF程序必须在宿主上运行,也就是WCF服务必须寄宿在某一个windows的进程中,可以是IIS.控制台程序.窗体程序.WAS以及所有.net程序等程序进程中.在我用VS2013创建WCF服 ...

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

    引言  Window Service通常用于寄宿WCF服务或者定时作业.下面记录一下它的用法. 创建 创建Window Service项目后,可以看到Program和Service1类.Program ...

  9. C# window service的创建

    其实我也是第一次在博客园写博客,看到那些高手说自己要多动手写博客,于是乎自己也尝试尝试. 废话不多说.这几天在研究window service,通过查找各种大神写的博客,我终于成功的自己写出来了. 下 ...

随机推荐

  1. json数据的拼接与解析

    json数据格式 [{ "firstName": "Brett", "lastName":"McLaughlin", & ...

  2. 转:gdb相关学习

    声明本文转自:http://www.cnblogs.com/rosesmall/archive/2012/04/12/2444431.html (查看内存部分有补充) 另推荐一个入门级的好文章:htt ...

  3. YARN中的失败分析

    YARN中的失败分析 对于在YARN中运行的MapReduce程序,需要考虑以下几种实体的失败任务.application master.节点管理器.资源管理器 1. 任务运行失败 任务运行失败类似于 ...

  4. 分布式技术 memcached

    memcached 是一个高性能的分布式内存对象缓存系统,用于动态web应用,以减轻数据库负载,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.memcache ...

  5. 调整JVM堆内存解决OutOfMemoryError

    今天在用 processing(http://zh.wikipedia.org/wiki/Processing) 编写处理 midi 文件的程序的时候,遇到了一个问题.程序主要是读取分析 midi , ...

  6. Ceilometer 数据库比较

    Ceilometer和其他OpenStack项目相比,部署中比较不同的是Ceilometer可以选用多种不同的后台数据库来保存测量值和警告器. 目前Ceilometer支持的后台数据库及及其相应的配置 ...

  7. numpy函数:[6]arange()详解

    arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,会python的人肯定经常用range函数,比如在for循环中,几乎都用到了range,下面我们通过range来学 ...

  8. 任务1-1 了解Web基本概念

    1.认识网页 从图中可以看到,网页主要由文字.图像和超链接等元素构成.当然,除了这些元素,网页中还可以包含音频.视频及Flash. 为了快速了解网页是如何形成的,接下来查看一下网页的源代码

  9. 完全分布式安装hadoop集群

    0.安装jdk 1.配置hosts文件 2.建立hadoop运行账号 3.配置ssh免密码登录 4.在namenode上配置hadoop 4.1.修改hadoop-env.sh文件 4.2.修改yar ...

  10. centos ifcfg-eth0

    DEVICE=eth0IPADDR=192.168.1.117NETMASK=255.255.255.0GATEWAY=192.168.1.1ONBOOT=yes