使用C#建立及调用WCF完整实例 (Windows服务宿主)

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

这里直接说使用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",按相同方法修改.net

回到MyFirstService,在这里我定义了两个函数"Base64Encrypt"和"Base64Decrypt",请注意格式,[OperationContract]必定要有,不然外部没法访问调试

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

好了,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

相关文章
相关标签/搜索