关于WCF的概念、原理、优缺点等,在这里就不多说了,网上很多,可以自行搜索,比我解释的要专业的多。

这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此次教程之内

文章最后有本例的下载连接,包含源代码、说明教程、编译后文件

实例环境:Windows Server 2008 R2 + VS 2010(C#)

打开 VS 2010,选择 新建项目,选择 ”WCF”|”WCF 服务库 ”,注意这里是”WCF 服务库 ”,不是"WCF 服务应用程序"

确定后,系统会自动建立默认文件 ” Service1.cs”和” IService1.cs”,其实也是系统给你的示例

打开"IService1.cs",你可以看到系统给你的示例代码,将光标定位到"IService1"上,按F2健,可将接口重命为你想要的名子,重命名后将解决管理器中文件也同命修改。我修改为 ”IMyFirstService”;打开“Service1.cs",按相同方法修改

回到MyFirstService,在这里我定义了两个函数"Base64Encrypt"和"Base64Decrypt",请注意格式,[OperationContract]一定要有,否则外部无法访问

切换到"MyFirstService",接口实现,编写具体代码。

好了,WCF服务库的代码部分就结束了,下面要开始配置,打开项目下的App.config文件

这里,我们主要看system.servicemodel节点,有2体个子节点"services"和"behaviors",其中"behaviors"节点主要是安全和调试方面的设置,我们不在此讨论,主要说一下第1个子节点"services",我们来看一下"services"节点内

估计大多数人和我一样,这些是什么乱七八糟的东西,头大。既然开头说了,本文只说如何实现,所以不说其所以然了,肯定,这样的配置无法在后面的宿主里成功调用,为什么呢,因为缺少了binding的配置,而默认并未生成配置节点,那好我们自己来加,注意标识的地方

配置一下项目属性,我的生成目录在F:\WCFTEST,生成项目

好的,WCF服务库已工作已结束。

开始宿主程序

右击解决方案,添加|新建项目”Windows”|”Windows 服务”,项目名就默认吧,不改了

在Windows服务项目中添加WCF服务库的引用

打开"WindowsService1"项目的App.config,发现什么都没有

将“MyTestWcfServiceLibrary”项目中的App.config文件的内容全部复制过来(即现在2个项目的App.config文件内容是完全一样的)

开始编写Windows服务的代码,要先添加system.servicemodel引用,并using

添加服务安装程序

配置安装程序

好的,WCF宿主程序也结束了,成生项目

开始编写客户端调用

右击解决方案|添加|新建项目|Windows|windows 窗体应用程序,项目名就默认吧(WindowsFormsApplication1),添加2个label,2个textbox,3个button

右击引用|添加服务引用,服务地址在windows服务项目中App.config文件中,依次展开找到system.serviceModel|services|service|host|baseAddresses|add节点,baseAddress等于号后的双引号中的字符串即为服务地址,注意如果是生产环境,那么你服务所使用的端口号在开启。本例地址为“http://localhost:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”

(下载连接中的教程中此图使用错误,应该是这样的图,教程中使用的是在WindowsService1中的服务引用的图)

此时,服务地址是localhost,所以可以直接引用成功,如果服务地址是一个网络地址,需要在宿主服务器中将服务启动后才可以引用服务,否则会提示找不到服务。也就是说如果你的服务地址是“http://192.168.1.1:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”,,那么你要先将服务安装并启动服务,这样才可以添加服务引用

客户端代码

设为启动项目,运行

编码

解码

文中所写的全部在这个下载中(写了这么详细了,如果还没做出来,那就花点钱吧^_^)

http://download.csdn.net/detail/meerio/9215083

使用C#创建及调用WCF完整实例 (Windows服务宿主)的更多相关文章

  1. [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    写在前面 原文地址:C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章躺在我的收藏夹中有很长一段时间了,今天闲着没事,就自己动手实践了一下.感觉 ...

  2. C# WCF 完整实例,winform 窗体作为 宿主

    上一次提到,我们的WCF程序宿主是发布到IIS上面的.虽然这样做未尝不可,不过不便于我们进行“开始”或“停止”WCF服务的操作.所以再次尝试了编写以窗体应用程序作为WCF服务宿主的方式,并取得了成功. ...

  3. C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...

  4. WCF 下的windows服务的安装卸载

    安装:启动vs2010(如果是win2008要以管理员来启动)命令:installutil demo.exe 卸载:先在服务里停止这个服务,然后启动vs2010(如果是win2008要以管理员来启动) ...

  5. .NET创建一个即是可执行程序又是Windows服务的程序

    不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...

  6. Python搭建调用本地dll的Windows服务(浏览器可以访问,附测试dll64位和32位文件)

    一.前言说明 博客声明:此文链接地址https://www.cnblogs.com/Vrapile/p/14113683.html,请尊重原创,未经允许禁止转载!!! 1. 功能简述 (1)本文提供生 ...

  7. winform调用WCF默认实例

    一:截图 二:调用代码 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  8. 调用WCF不需要添加服务引用,使用一个WCFHelper类就可以

    效果图: 调用过程: string WCFURL = "http://localhost:100/Service1.svc"; UserRequest user = new Use ...

  9. FastReport的WCF托管到Windows服务的配置文件

    官网上找到的,还没有来得及研究,有时间了再研究. <?xml version="1.0"?> <configuration> <appSettings ...

随机推荐

  1. bzoj2660: [Beijing wc2012]最多的方案

    题目链接 bzoj2660: [Beijing wc2012]最多的方案 题解 对于一个数的斐波那契数列分解,他的最少项分解是唯一的 我们在拆分成的相临两项之间分解后者,这样形成的方案是最优且不重的 ...

  2. bzoj4641 基因改造 KMP / hash

    依稀记得,$NOIP$之前的我是如此的弱小.... 完全不会$KMP$的写法,只会暴力$hash$.... 大体思路为把一个串的哈希值拆成$26$个字母的位权 即$hash(S) = \sum\lim ...

  3. windows下整数溢出分析

    0x00前言 整数溢出就是往存储整数的内存单位存放的数据大于该内存单位所能存储的最大值,整数溢出有时候间接导致缓冲区溢出.如JPEG溢出漏洞(MS04-028). 0x01整数溢出分类 整数溢出可以分 ...

  4. 【BZOJ】4720: [Noip2016]换教室

    4720: [Noip2016]换教室 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1690  Solved: 979[Submit][Status ...

  5. mysql长连接

    长连接是干嘛的:  它是做连接复用的: 在openresty中的lua-resty-mysql 里 connect方法去连接mysql时会去ngx_lua cosocket连接池中寻找是否有可用连接 ...

  6. python开发_json_一种轻量级的数据交换格式

    以下是我做的对于python中json模块的demo 运行效果: Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.16 ...

  7. BZOJ 4421: [Cerc2015] Digit Division 排列组合

    4421: [Cerc2015] Digit Division 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4421 Descripti ...

  8. ssh连接时提示THE AUTHENTICITY OF HOST XX CAN'T BE ESTABLISHED

    问题描述:使用ssh远程连接的时候报如下错误: 解决办法: 输入如下命令: ssh -o StrictHostKeyChecking=no root@123.59.xx.xx 输入密码,链接成功 其他 ...

  9. 使用Chrome快速实现数据的抓取(五)—— puppeteer

    如果要以自动化的方式驱动Chrome进行数据抓取,必须实现Chrome Dev Protocol协议的客户端.这个协议本身并不复杂,我在之前的文章中也简单的介绍过一下. Google本身有一个Node ...

  10. 在gdb将所有线程的堆栈输出到文件中去

    http://m.blog.csdn.net/blog/lantianjialiang/40111253