本文实例讲述了WCF实现的计算器功能。分享给大家供大家参考,具体如下:
对于WCF,我们有了前面的理论基础,今天通过一个计算器的实例主要给大家讲解怎么一步一步地创建一个完整的WCF应用。
计算器。服务:一个类库项目,定义服务契约(服务合同),应用系统。ServiceModel程序集;提供对WCF服务的实现。
Calculator.Host:一个Windows窗体应用程序,实现对定义在Calculator.Service项目中的服务的寄宿,该项目需要引用Calculator.Service项目和系统。ServiceModel程序集。
Calculator.Client:一个Windows窗体应用程序模拟服务的客户端,该项目应用System.ServiceModel程序集。
一般,我们通过接口的形式定义服务契约。通过下面的代码,将一个接口ICalculator定义成服务契约。我们通过在接口上应用System.ServiceModel.ServiceContractAttribute特性将一个接口定义成服务契约。
将接口定义成服务契约后,接口的方法成员并不能自动成为服务的操作。我们需要在相应的操作方法上面显式地应用OperationContractAttribute特性。
使用系统; 使用System.Collections.Generic; 使用来; 使用text; 使用System.ServiceModel; 名称空间Calculator.Service { (ServiceContract) 公共接口ICalculator { (OperationContract) 双添加(双x,双y); (OperationContract) 双减去(双x,双y); (OperationContract) 双用(双x,双y); (OperationContract) 双分裂(双x,双y); } } >之前
当服务契约创建成功后,我们需要通过实现服务契约来创建具体的WCF服务,WCF服务CalculatorService实现了服务契约的接口ICalculator,实现了所有的服务操作。
使用系统; 使用System.Collections.Generic; 使用来; 使用text; 名称空间Calculator.Service { 公开课CalculatorService: ICalculator { 公共双添加(双x,双y) { 返回x + y; } 公共双减去(双x,双y) { 返回x - y; } 公共双乘(双x,双y) { 返回x * y; } 公共双分裂(双x,双y) { 返回x/y; } } } >之前
服务寄宿的目的就是开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或多个中级诶单,使之暴露给潜在的服务消费者。服务消费者最终通过相匹配的终结点对该服务进行调用。我们完全可以通过代码的方式完成所有的服务寄宿工作。
使用Calculator.Service; 使用系统; 使用System.Collections.Generic; 使用System.ComponentModel; 使用System.Data; 使用System.Drawing; 使用来; 使用System.ServiceModel; 使用System.ServiceModel.Description; 使用text; 使用System.Windows.Forms; 名称空间Calculator.Host { 公共部分中类Form1:形式 { 公共Form1 () { InitializeComponent (); } ServiceHost主机=零; 私人空间btnOpen_Click(对象发送方,EventArgs e) { 主机=new ServiceHost (typeof (CalculatorService)); host.AddServiceEndpoint (typeof (ICalculator),新的WSHttpBinding (),”http://localhost: 8008/计算器”); 如果(host.Description.Behaviors.Find()==null) { ServiceMetadataBehavior行为=new ServiceMetadataBehavior (); 的行为。HttpGetEnabled=true; 的行为。HttpGetUrl=新的Uri (http://localhost: 8008/计算器/元数据); host.Description.Behaviors.Add(行为); } 宿主+=委托{label1打开。文本="服务已经启动!”;}; host.Open (); } 私人空间btnClose_Click(对象发送方,EventArgs e) { 如果(主机。状态!=CommunicationState.Closed) { 宿主+=委托{label1关闭。文本="服务已经停止!”;}; host.Close (); } } } } >之前
服务被成功寄宿后,服务端便开始了服务调用请求的监听工作。此外,服务寄宿将服务描述通过元数据的形式发布出来,相应的客户端就可以获取这些元数据,创建爱你客户端程序进行服务的消费。在VS下,当我们添加服务引用的时候,VS在内部帮我们实现元数据的获取,并借组这些元数据通过代码生成工具自动生成用于服务调用的服务代理相关代码和相应的配置。
WCF实现的计算器功能实例