WCF和.NET服务如何实现SOA模式
模式是对典型情况下某个众所周知的问题的可重用解决方案的描述,是解决方案的模板。
解耦契约
WCF实现接口定义与实现的分离。所有操作,以及服务的参数类型和返回值类型都可以用接口来表示,这些接口创建到一个单独的类库项目中。描述参数或返回值结构的数据契约也可以用类来定义。
必须给接口和它们的操作签名添加元数据,WCF才承认它们是契约。由于这些元数据出现在特性(Atrribute)中,因此它们与接口是分离的,接口的实现只知道接口本身,这就解除了契约与实现之间的耦合。在元数据中定义操作名称和SOAP消息的XML结构,服务的实现不需要知道它们。
这些特性是[ServiceContract]、[OperationContract]、[DataContract]和[DataMember]。
代理模式
WCF使用了代理模式,即允许在项目中创建并使用一个使用了服务的类。这个代理类实现了一个共享的接口。
WCF提供了ClientBase<T>类,这个类可以派生出代理类。这个基类有建立通信和转换操作的所有逻辑。使用者可通过代理发送SOAP消息,并用定义的绑定把消息发给服务。这个类有一个保护属性,只在派生类中可见,它就是通道,属于代理使用的泛型。这个通道有与服务器端相同的逻辑实现方法列表。
OperationContext模式
该模式的作用是把方法的输入参数和这个方法执行时所需要的技术信息相分离。WCF提供一个OperationContext类,可以获取当前方法的执行和消息上下文。它能向正在执行的方法提供有关的调用信息。当工作在双向通信模式时,它提供了调用期间回调客户端的通道。
并发契约
WCF允许允许同时实现多个接口,并允许为一个服务配置多个终结点,从而支持并发契约。
其他
数据保密性、Web服务原子事务、会话外观、异常保护。
通信与集成模式
开发人员可利用WCF的功能以建立分布式应用程序,它们可以互相通信,并在彼此之间集成。
所有导致数据交换的通信都建立在消息发送的基础上。这些消息都经过格式化处理。它的序列化标准就是SOAP。
…以下分门别类还有许多,即集成模式、消息交换模式和消息模式。关于这种纲领性的东西,个人认为可以扫一眼,不理解不重要,心里有个概念就行。关键是在以后的学习中,要记得在回顾,在项目中融会贯通。