做新生入学系统这么长时间了,新加入的伙伴问我关于WCF的事情,自己说的也是云里雾里的,还是回过头来总结一下,要不然永远也不会知道自己到底懂得了多少。
一、概述
1、WCF -- 服务
WCF(Windows Communication Foundation)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。
WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
WCF专门用于面向服务开发。
2、Contracts -- 契约
在WCF中,契约分为四种:
(1)服务契约:Service Contract用语定义服务操作
<span style="font-size:18px;"> [ServiceContract]//用于指示WCF此类或者结构能够被远程调用 public interface IFreshMajorServiceWCF { #region 查询专业(带学院参数的查询) + QueryMajor() [OperationContract] //用于指示WCF该方法可被远程调用。 List<FreshMajorServiceContracts> QueryMajor(string department); #endregion }</span>
(2)数据契约:Data Contract 用于定义数据结构
[DataContract]//用于指示 WCF此类或者结构能够被序列化并传输 public class FreshMajorServiceContracts { [DataMember]//用于指示WCF该属性或者字段能够被序列化传输。 public string id { get; set; } //专业ID [DataMember] public string name { get; set; } //专业姓名 }
(3)异常契约:Fault Contract 用于自定义错误异常的处理方式
在默认情况下,当服务端抛出异常的时候,客户端能接收到异常信息的描述,但这些描述往往格式统一,有时比较难以从中获取有用的信息,此时,我们可以自定义异常消息的格式,将我们关心的消息放到错误消息中传递给客户端,此时需要在方法上添加自定义一个错误消息的类,然后在要处理异常的函数上加上FaultContract,并将异常信息指示返回为自定义格式。
(4)消息契约:Message Contract 用于控制消息格式
可以自定义消息格式,包括消息头、消息体,还能指示是否对消息内容进行加密和签名。
二、项目应用
统一服务接口
之前我们的开发是需要向外发布多个接口,客户端来访问每一个接口;用了WCF以后我们让这个接口去继承这些所有的接口,最终我们只向外发布了一个接口,就可以访问我们所有的服务。这就是统一服务接口。我们要将我们的WCF服务发布到IIS上。
向外发布的接口:
[ServiceContract] public interface IFreshService : IFreshFlowService, IFreshStuService, IFreshDepartmentService, IFreshStudentServiceWCF, IFreshStudentInfoWCF, IFreshMajorServiceWCF, IDistributeClassServiceWCF, IFreshDormitoryService, IFreshAdministratorService, IFreshImportStuServiceWCF,IFreshFamilyInfoService ,IFreshEducationExperienceService ,IFreshStudentReportService ,IFreshmenForBase
三、WCF好处
1、统一性
我们可以像创建对象一样来创建服务,WCF是对于ASMX,.Net Remoting,Enterprise Service等一些技术的整合。虽然现在体会不到真正的好处,但是确实是非常强大的。
2、互操作性
WCF最基本的通信机制是简易对象访问协议,保证了系统之间的互操作性。可以跨进程、跨机器甚至与跨平台的通信,只要支持标准的Web Servie。
3、安全域可信赖性
WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。
4、兼容性
WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net
Remoting。即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。
这篇文章只是基本的学习一下WCF的一些相关的知识,接下来一步一步的深入的对WCF在项目中应用的体会。