我的WCF之旅(1):创建一个简单的WCF程序

我的WCF之旅(1):创建一个简单的WCF程序

ID:37768938

大小:346.69 KB

页数:36页

时间:2019-05-30

我的WCF之旅(1):创建一个简单的WCF程序_第1页
我的WCF之旅(1):创建一个简单的WCF程序_第2页
我的WCF之旅(1):创建一个简单的WCF程序_第3页
我的WCF之旅(1):创建一个简单的WCF程序_第4页
我的WCF之旅(1):创建一个简单的WCF程序_第5页
资源描述:

《我的WCF之旅(1):创建一个简单的WCF程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端和服务端进程互

2、相调用的关系。图1计算服务应用运行环境WCF的服务不能孤立地存在,需要寄宿于一个运行着的进程中,我们把承载WCF服务的进程称为宿主,为服务指定宿主的过程称为服务寄宿(ServiceHosting)。在我们的计算服务应用中,采用了两种服务寄宿方式:通过自我寄宿(Self-Hosting)的方式创建一个控制台应用作为服务的宿主(寄宿进程为Hosting.exe);通过IIS寄宿方式将服务寄宿于IIS中(寄宿进程为IIS的工作进行W3wp.exe)。客户端通过另一个控制台应用模拟(进程为Client.exe)。接下来,我们就

3、一步一步来构建这样的一个WCF应用。步骤一:构建整个解决方案通过VS2008创建一个空白的解决方案,添加如下四个项目。项目的类型、承载的功能和相互引用关系如下,整个项目在VS下的结构如图2所示。·Contracts:一个类库项目,定义服务契约(ServiceContract),引用System.ServiceMode程序集(WCF框架的绝大部分实现和API定义在该程序集中);·Services:一个类库项目,提供对WCF服务的实现。定义在该项目中的所有WCF服务实现了定义在Contracts中相应的服务契约,所以Ser

4、vices具有对Contracts项目的引用;·Hosting:一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Contracts和Services两个项目和System.ServiceMode程序集;·Client:一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。图2计算服务在VS中的结构步骤二:创建服务契约WCF采用基于契约的交互方式实现了服务的自治,以及客户端和服务端之间的松耦合。WCF包含四种类型的契约:服务契约、数据契约

5、、消息契约和错误契约,这里着重于服务契约。从功能上讲,服务契约抽象了服务提供的所有操作;而站在消息交换的角度来看,服务契约则定义了基于服务调用的消息交换过程中,请求消息和回复消息的结构,以及采用的消息交换模式。第4章将提供对服务契约的详细介绍。一般地,我们通过接口的形式定义服务契约。通过下面的代码,将一个接口ICalculator定义成服务契约。WCF广泛采用基于自定义特性(CustomAttribtue)的声明式编程模式,我们通过在接口上应用System.ServiceModel.ServiceContractAtt

6、ribute特性将一个接口定义成服务契约。在应用ServiceContractAttribute特性的同时,还可以指定服务契约的名称和命名空间。至于契约名称和命名空间的含义和作用,在本人拙著《WCF技术剖析(卷1)》第4章,在这里我们将契约名称和命名空间设置成CalculatorService和http://www.artech.com/)。通过应用ServiceContractAttribute特性将接口定义成服务契约之后,接口的方法成员并不能自动成为服务的操作。在此方面,WCF采用的是显式选择(ExplicitOp

7、t-in)的策略:我们须要在相应的操作方法上面显式地应用OperationContractAttribute特性。1:usingSystem.ServiceModel;2:namespaceArtech.WcfServices.Contracts3:{4:[ServiceContract(Name="CalculatorService",Namespace="http://www.artech.com/")]5:publicinterfaceICalculator6:{7:[OperationContract]8:do

8、ubleAdd(doublex,doubley);9: 10:[OperationContract]11:doubleSubtract(doublex,doubley);12: 13:[OperationContract]14:doubleMultiply(doublex,doubley);15: 16:[OperationCon

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。