当前位置:首页 >> 信息与通信 >>

WCF实例


8.2Hello, World 实例
本实例与传统入门教材相同,仍然以输出一个“Hello,World”字符串开始。实例将新建 2 个项目,第一个项目名为“HelloWorldService”,它提供 WCF 服务,并且以开发环境方式暴露 一个端口供客户端调用;另外一个项目叫“HelloWorldClient”,它调用 WCF 服务方法,并输出 返回值。 本实例的运行结果如图所示:

8.2.1 创建 WCF 服务端程序
1) 打开 Microsoft Visual Studio 2010; 2) 选择菜单>文件>新建>项目; 3) 在弹出的“新建项目”对话框中展开左边的“已安装的模板”>Visual C#; 4) 选择“WCF”; 5) 在对话框右边选择“WCF Service Application“; 6) 在对话框下部的 “项目名 “中输入” HelloWorldService 在位置中输入” d:\Exercise “, “,在解决方案名称输入”WcfSample“,确保选中”Create directory for solution “,确保未选中”Add to source control“,设置后的界面如下:

7) 点击“OK“按钮,VS2010 已自动建立了一个 WCF Service Application,并且为我们自 动打开了 Service1.svc.cs 文件; 8) 打开“Solution Explorer”;(VS2010 默认打开,位置在 VS2010 桌面的右边,如果 VS2010 没有打开,请使用快捷键 Ctrl + W,S 打开) 9) 在“Solution Explorer”中展开“HelloWorldService”; 10) 双击“IService1.cs”文件; 11) 用下面的代码

/// <summary> /// 提供一个 WCF 服务方法 /// </summary> /// <returns>返回“Hello, World!”</returns> [OperationContract] //声明为“OperationContract”的方法将暴露在 WCF 服务器上

string GetHelloWorld();

替换第 22 行的注释
// TODO: Add your service operations here

知识点: “ServiceContract”代表服务契约,表示IService1接口是一个WCF服务,这样,客户端就 可以访问这个接口和它内部有效的方法了。 “OperationContract”代表操作契约,表示GetHelloWorld方法是服务契约中的一个方法, 只有声明为“OperationContract”的方法才会被公开在WCF服务中。如果服务中没有任何一个方 法声明为“OperationContract”,那么这个服务将没有任何意义。

12) 右键点击 HelloWorldService 项目,在弹出的菜单中选择“Build”,VS2010 会在“Error List”中提示“Error 1 'HelloWorldService.Service1' does 12 not 18 implement interface member'HelloWorldService.IService1.GetHelloWorld()' d:\Exercise\WcfSample\HelloWorldService\Service1.svc.cs HelloWorldService”; 13) 在“Error List”对话框中双击错误项,系统会自动打开“Service1.svc.cs”文件; 14) 在打开的“Service1.svc.cs”文件中选择“IService1”并右击; 15) 在弹出的右键菜单中选择“Implement Interface“>”Implement Interface “,VS2010 会自动在文件后面生成如下代码:
public string GetHelloWorld() { throw new NotImplementedException(); }

16) 用
return "Hello, World!";

替换
throw new NotImplementedException();

17) 重复第 12 步,VS2010 将不会报任何编译时错误了; 18) 选择“HelloWorldService“项目并右击,在弹出的菜单中选择”Properties“,系统会展 示项目属性界面,如下图:

19) 选择左边“Web“项,在右边展示的选择中选择“ Service”>“Use Visual Studio Development Server”>“Specific port”; 20) 在“Specific port“后面的文本框中输入“2027”,设置正确的界面如下:

21) 展开“HelloWorldService”项目; 22) 选择“Service1.svc“文件并右击,在弹出的菜单中选择“View in Browser”,如果正 确的话,应在浏览器中出现如下界面:

23) 如此,服务器端已完成了;

8.2.2 创建 WCF 客户端程序
服务器端的服务写好了,我们再来了解客户端是如何调用的。 1) 打开上一节创建的 WcfSample 解决方案; 2) 右击解决方案 WcfSample; 3) 在弹出菜单中选择“Add”>“New Project”;

4) 在弹出的“Add New Project”对话框中左边展开“Installed Templates”; 5) 选择“Visual C#”,并在对话框可边选择“Console Application”; 6) 在对话框下部的“Name”中输入“HelloWorldClient”,并且中“Location”中输入 “D:\Exercise\WcfSample”,界面如下:

7) 点击“OK”按钮,VS2010 会自动在“WcfSample”解决方案下生成 HelloWorldClient 项目; 8) 到此,WCF 客户端就创建好了;

8.2.3 在客户端添加 WCF 引用
在开始前,请重复第一节(创建 WCF 服务端程序)第 18 步至 22 步,运行 WCF 服务(请 确保运行正常)。 1) 打开 WcfSample 解决方案; 2) 展开 HelloWorldClient 项目; 3) 右击“References”,在弹出的菜单中选择“Add Service References…”; 4) 在弹出的对话框的 “Address” 中输入 WCF 服务地址 “http://localhost:2027/Service1.svc” (也许您的 WCF 运行地址不相同,请输入您的正确地址) 5) 点击“Go”按钮,系统会自动展示 WCF 服务端的相关服务接口; 6) 在对话框的下部的“Namespace:”中输入“HelloWorldService”,完整的界面如下;

7) 点击 “OK” 按钮完成添加引用操作, 系统会自动在 “HelloWorldClient” 项目下添加 “Service References”文件夹,并添加了关于“HelloWorldService”的引用,如图:

8) 至此,WCF 引用就添加完了;

8.2.4 调用 WCF 服务
准备工作已经完成,下面我们来看看如何调用 WCF 提供的 GetHelloWorld 方法呢。 步骤如下:

1) 打开 WcfSample 解决方案; 2) 展开“WcfSample”>“HelloWorldClient”,双击打开“Program.cs”文件,系统将展示 大家熟悉的界面:

3) 在 Main 方法中添加如下代码:
//实例化一个 WCF 代理对象 Service1Client client = new Service1Client(); //获取从 WCF 服务方法返回的值 string result = client.GetHelloWorld(); //将 GetHelloWorld 方法返回值输出到屏幕 Console.WriteLine(result);

4) 如果“Program.cs”文件没有添加对“HelloWorldClient.HelloWorldService”的引用,请 在“Program.cs”文件的引用代码块的最后一行加入如下代码: using HelloWorldClient.HelloWorldService; 5) 右击“HelloWorldClient”,在弹出菜单中选择“Set as Startup Project”将其设置为启动 项目; 6) 按 Ctrl + F5 运行程序,运行界面如下:

7) 如此,本实例已全部完成了。



相关文章:
WCF经典使用场景(互联网、局域网、匿名等)总结和例子
WCF经典使用场景(互联网、局域网、匿名等)总结和例子_互联网_IT/计算机_专业资料...WCF 的基础 ABC 和 Endpoint,对于常见的场景如果这么多的组合显然也很复杂,实际...
WCF实例上下文模式与并发模式对性能的影响
WCF实例上下文模式与并发模式对性能的影响_计算机软件及应用_IT/计算机_专业资料。WCF 实例上下文模式与并发模式对性能的影响实例上下文模式 InstanceContextMode 控制在响...
WCF服务实例激活类型编程与开发
WCF 服务实例激活类型编程与开发 所属分类: WCF 分布式开发步步为赢, SOA and EAI .Net Remoting 的激活方式也有三种:SingleTon 模式、SingleCall 模式、客户端...
更多相关标签: