读书笔记摘要-SOA和WCF基础介绍
一、面向对象弊端(SOA应用而生):
1.对象传递问题:当对象跨越进程或主机,系统需要对对象进行特殊的处理(序列化和反序列化)
2.类型的版本定义:对某些类型进行重新部署或升级时,容易导致错误或异常,出现耦合的表现。
二、SOA(Service Oriented Architecture)的概念:一种组件架构模型,根据需求对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。
服务是SoA的基础,可以直接被使用,有效控制系统中与软件dialing交互的人为依赖性。
W3C对SoA的定义是一组公开发布接口,并且提供接口查询的组件。
三、SOA至少需要以下四个特性(SoA并没有限定具体的实现技术):
1.每个服务具有明确的服务边界:服务的公共接口和起内部专用实现间的界限,使得服务于位置和技术无关,客户端无法知晓实现的技术、地理位置和运行平台,降低服务和客户端之间的耦合。
2.服务是独立的:服务运行时独立,不需要任何外部服务和组件依靠,各自的部署和版本不会影响整个SoA系统,业务逻辑上课相互访问,与服务独立不矛盾。
3.采用标准的契约定义和通信协议:即各自的技术和平台可以不同,但是相互访问就要求契定义和协议是行业标准的。
4.服务是自解释的:W3C定义其内容必须是自解释的。即服务必须以某种标准的方式告诉整个SOA系统该服务提供的功能,且实现和解释相一致。
四、WCF本质是一套软件开发包,设计目的是为分布式计算提供可管理的方法,提供广泛的互操作性,并未服务定位提供直接的支持。
可发开服务端和客户端,主要功能有:托管、服务实例管理、异步、安全、事务管理、离线队列等,通过对标准协议的定义和封装,从通信和格式编码种 解放出来,专注业务逻辑的实现,同时同意了之前推出的分布式技术:
1.Web服务和WSE
2..NET Remoting
3..NET 企业服务
4.微软消息队列(MSMQ)
备注:使用WCF开发的服务/客户端可以和现有的Web服务、MSMQ持续进行交互,符合SOA最基本的原则。
五、WCF体系框架:
1.契约:属于一个服务公开接口的一部分、定义了服务端公开的方法、使用的传输协议、可访问的地址、传输的消息格式。描述了该服务的功能和作用。
2.服务运行:定义了运行时的具体行为,起运行内容跨越了服务边界,即包含对外公布的内容,也包含了服务内部的实现。
3.消息:包含消息的传输方式、编码与解码,基本属于服务边界以内的具体实现,具体的传递实现,需符合契约中定义的绑定协议。
4.激活和宿主:即WCF需要在一个可运行的程序中寄宿,寄宿方式有:自寄宿、iis寄宿、Windows激活服务、Windows服务和COM+组件等。
激活和宿主属于WCF程序的部署方式,根据SoA的原则,激活和宿主类型的变化不会影响服务本身的特性和外部对该服务的访问。
六、WCF基础概念
1.地址:每个服务的地址唯一,由资源标识符(URI)表示。包含了通信所使用的协议,即传输所用的协议。不负责定义服务传输所用协议,
只是提供和通信协议兼容的地址。常用的协议有:http(HTTP协议)、net.tcp(TCP协议)、net.msmq(使用MSMQ协议)
2.绑定:定义了服务和外部通信的方式,由绑定约束构造而成,形成通信基础结构,一个绑定包含以下内容:
第一、通信使用的协议,如HTTP、TCP、P2P等。
第二、消息编码方式,如纯文本、二进制编码、MTOM等。
第三、消息安全保障策略。
第四、通信堆栈的其他任何要素
备注说明:绑定是组成一个服务终结点的三要素之一。
3、契约:包括四种,服务契约、数据契约、错误契约、消息契约。
第一、服务契约:服务契约将多个关联操作联系在一起,组成单个功能单元,契约可以定义服务级设置,
如服务的命名空间、 对应的回调契约以及其他 此类设置
第二、数据契约:服务使用的数据类型必须在元数据中进行描述,以其他各方面与该服务进行交互操作,
数据类型的说明称为数据契约,而这些类型可 以在消息的任何部分使用
(例如:作为参数或者返回类型),如果服务仅使用简单类型,则无需显示使用数据契约。
第三、错误契约:可将错误契约与服务操作进行关联,以指数可能返回到调用方的错误,
一个操作可能有0个或者更多个与其相关联的错误。
这些错误是在编程模型中建模为异常的SOAP错误。
第四、消息契约:描述消息的格式。如他会声明消息原生应包含在消息头中还是包含在消息正文中,
应该对消息的何种元素应用何种级别的安全等。
备注说明:契约是组成一个服务终结点的三要素之一。
4、终结点:一个终结点由三个要素组成,分别是介绍的地址、绑定和契约。
终结点是用来发送或接受消息的构造。以SOA的思想来看,
一个终结点相当于服务的公共接口,每个服务可以有一个或多个终结点。
由于每个服务只有一个地址,所以某个服务拥有的所有终结点都共享一个地址。
注意:终结点的配置或者编程不属于业务逻辑的编程。
WCF的设计目的之一就是分离终结点的定义和契约的具体实现。
5、元数据:描述服务的特征,外部实现需要了解这些特征以该服务进行通信。
服务公开的元数据包括XML架构文档(用于定于服务的数据协定)和
WSDL文档(用于描述服务的方法),启用元数据后,
WCF通过检查服务及终结点自动生成服务的元数据,
若要发布服务的元数据,需启用其行为
6、宿主:服务必须承载在某个进场中,宿主是控制服务的生存期的应用程序。服务可以是自寄宿、
也可以有现有的宿主进程进行管理,从内部实现 来看,一个服务宿主进程,
可以包含一个或多个应用程序域
而每个应用程序域又可以被放入任意个服务宿主,每个服务宿主可以有任意个上下文。
每个上下文可以有0个或者1个服务实例。