博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF编程系列(一)初识WCF
阅读量:5164 次
发布时间:2019-06-13

本文共 3087 字,大约阅读时间需要 10 分钟。

 

Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型。

WCF的基本概念:
  地址:定义服务的地址
  绑定:定义服务的通讯方式(传输协议、编码方案)
  契约:定义服务的具体实现
  终结点:由地址、绑定和契约共同构成一个终结点,服务器通过终结点向客户端公开服务,客户端通过终结点调用服务。

下面通过一个简单的服务示例来认识WCF(只需让本例顺利运行即可,关于代码中的各种类型及WCF的相关概念我们将在后续介绍):

1.新建项目,名称 XfrogWCFService,解决方案名称 XfrogWCFStudy001,模板选择类库,选择.NET Framework 3.0版本
2.修改Class1.cs文件名称为 IFirstService.cs
3.添加引用 System.ServiceModel
4.修改IFirstService.cs代码如下:

隐藏行号 复制代码 ? IFirstService.cs
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.ServiceModel;
  5.  
  6. namespace Xfrog.Study.WCF
  7. {
  8. [ServiceContract]
  9. public interface IFirstService
  10. {
  11. [OperationContract]
  12. String GetData(String name);
  13. }
  14. }
  15.  

 

我们定义了一个IFirstService接口,注意在接口上申明了ServiceContract特性,即服务契约,表明该接口是一个服务。方法 上声明了OperationContract特性,表示该方法是IFirstService的一个服务方法,客户端可远程调用该方法。

5.添加一个新类,文件名为FirstService.cs,代码如下:

隐藏行号 复制代码 ? FirstService.cs
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Xfrog.Study.WCF
  6. {
  7. public class FirstService : IFirstService
  8. {
  9. string IFirstService.GetData(String name)
  10. {
  11. return String.Format("Hello {0},Welcome To WCF!", name);
  12. }
  13. }
  14. }
  15.  

 

OK,到此我们的服务代码已经编写完成,下面我们必须为服务提供一个运行的宿主,通过该宿主程序来启动我们的服务。

6.在同一解决方案下新建一个项目,名称为Host,类型为控制台应用程序
7.Host项目中添加引用,引用项目XfrogWCFService,然后再添加引用:System.ServiceModel
8.修改Program.cs代码如下:

隐藏行号 复制代码 ? Program.cs
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.ServiceModel;
  5. using Xfrog.Study.WCF;
  6.  
  7. namespace Host
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. using (ServiceHost host = new ServiceHost(typeof(FirstService)))
  14. {
  15. host.Open();
  16. Console.WriteLine("服务已启动,按任意键中止...");
  17. Console.ReadKey(true);
  18. host.Close();
  19. }
  20. }
  21. }
  22. }
  23.  

 

以上,我们已经实现了服务以及为服务提供了一个运行宿主,即契约部分已经完成,下面我们为服务指定地址及绑定,本步骤可通过WCF的管理工具,或直接编写配置文件来完成。我们先采用手工编写配置文件的方式:
9.新建项,选择应用程序配置文件,文件名App.config保持不变。
10.修改app.config内容如下:

隐藏行号 复制代码 ? App.config
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  

 

11.设置Host项目为启动项目,启动调试。控制台上显示服务已启动后,打开浏览器输入服务地址: ,浏览器中会打开我们的服务页面,这表示我们的服务已经启动成功,客户端可通过该地址访问我们的服务了。
下面,我们将创建一个客户端来访问我们的服务
12.在同一解决方案下新建一个项目,名称为Client,类型为控制台应用程序
13. 我们将使用微软的svcutil工具生成FirstService服务的客户端代理类,通过开始菜单/Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008命令提示,启动命令环境。
14.确认FirstService服务已启动
15.切换当前路径到解决方案目录:
cd G:\Study\WCF\XfrogWCFStudy001
g:
16.输入命令:
svcutil /o:FirstServiceClient.cs
执行成功后,会在解决方案目录下生成两个文件:FirstServiceClient.cs 和output.config
17.中止Host项目的调试,回到Client项目,选择添加 现有项 ,然后选择这两个文件,添加后,将output.config重命名为App.config
18.Client项目中添加引用,选择System.ServiceModel
19.修改program.cs代码如下:

隐藏行号 复制代码 ? Program.cs
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Client
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. String key = "";
  12. while (String.Compare(key, "Q", true)!=0)
  13. {
  14. FirstServiceClient client = new FirstServiceClient();
  15. Console.WriteLine(client.GetData(key));
  16.  
  17. key = Console.ReadLine();
  18. }
  19. }
  20. }
  21. }
  22.  

 

20.Host项目上单击右键,选择调试—>启动新实例,待服务启动完成后,在Client项目上单击右键,选择调试—>启动 新实例。输入任意字符回车,Client将调用FirstService服务GetData方法,返回一个字符串。输入q退出Client。 

转载于:https://www.cnblogs.com/dwuge/p/5318510.html

你可能感兴趣的文章
语言基础(9):static, extern 和 inline
查看>>
ES5_03_Object扩展
查看>>
bzoj 2600: [Ioi2011]ricehub
查看>>
创建数据库,表
查看>>
工厂模式
查看>>
计算机网络基础知识
查看>>
C#里如何遍历枚举所有的项
查看>>
如何在键盘出现时滚动表格,以适应输入框的显示
查看>>
超级强大的鼠标手势工具
查看>>
常用Dockerfile举例
查看>>
jquery的ajax用法
查看>>
设计模式-策略模式(Strategy)
查看>>
django orm 数据查询详解
查看>>
JarvisOJ Basic 熟悉的声音
查看>>
C# list导出Excel(二)
查看>>
CAS 单点登录模块学习
查看>>
跟着辛星用PHP的反射机制来实现插件
查看>>
Android应用开发-网络编程①
查看>>
input中的name,value以及label中的for
查看>>
静态库制作-混编(工程是oc为基础)
查看>>