在说什么是WCF服务之前,我先来说一下什么是SOA思想。SOA全称是面向服务的体系结构(Service-oriented architecture)是构造分布式计算的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它是一种组件架构模型。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。而WCF 就是基于SOA思想的其中一种实现方式。
那什么是WCF? WCF的全称是: Windows Communication Foundation。从本质上来说,它是一套软件开发包,是Microsoft推出的符合SOA思想的技术框架。WCF给我们提供了丰富的功能,其中包括:托管、服务实例管理、异步、安全、事务管理、离线队列等。并且WCF对产业中的标准协议进行了封装和定义,它把程序员从繁琐的通信、格式编码中解放出来,使得程序员能够专注于业务逻辑的实现。同时,WCF统一了微软公司之前推出的多种分布式技术,其中包括:
- Web服务
- .Net Remoting。
- 微软消息队列(MSMQ)。
- 其他一些服务
WCF对这些技术的集成包括两个方面:
- WCF的架构本身吸取了这些技术的精华。
- WCF开发的服务/客户端可以和现有的Web服务、MSMQ程序进行交互。
以上的理论知识,由搜索和自我理解的加工。那么接下来我就来做一个小小的实践。
1. 首先我们打开 vs2013,选择新建项目>WCF>选择WCF服务运用程序,这样就可以在解决方案资源管理中看到运用程序包括如图文件:
2. 接下来对代码进行了注释,一下是项目生成的代码和我自己添加的代码。
1 using System.Runtime.Serialization; 2 using System.ServiceModel; 3 4 namespace WcfServiceDemo 5 { 6 /// <summary> 7 /// 1.0 如果一个接口要作为WCF的服务接口,则必须标注 【ServiceContract】服务契约 特性 8 /// 所谓的契约,我个人理解就是约定,合同。要使用我就得按我的规矩办事。 9 /// </summary> 10 [ServiceContract] 11 public interface IService 12 { 13 14 /// <summary> 15 /// 2.0 操作契约,只有标注了 【OperationContract】特性的方法才能被其他程序或服务调用。 16 /// </summary> 17 [OperationContract] 18 string GetData(int value); 19 20 [OperationContract] 21 CompositeType GetDataUsingDataContract(CompositeType composite); 22 23 [OperationContract] 24 string SayYourName(string userName); 25 } 26 27 28 // 使用下面示例中说明的数据约定将复合类型添加到服务操作。 29 /// <summary> 30 /// 服务中使用的实体需要添加 【DataContract】作为数据契约,也就是在被调用的时候才可用 31 /// </summary> 32 [DataContract] 33 public class CompositeType 34 { 35 bool boolValue = true; 36 string stringValue = "Hello "; 37 38 /// <summary> 39 /// 实体类中的属性 需要标注 [DataMember] 特性才能被识别 40 /// </summary> 41 [DataMember] 42 public bool BoolValue 43 { 44 get { return boolValue; } 45 set { boolValue = value; } 46 } 47 48 [DataMember] 49 public string StringValue 50 { 51 get { return stringValue; } 52 set { stringValue = value; } 53 } 54 } 55 }