发表于: 2017-12-08 18:32:32

1 742


今日完成的事:

       看了soa的sca。sca是soa架构的一个标准。

明天的要做事:

       继续学习回顾

问题:

收获:

一、SOA是什么 

SOA的全称是Service-Oriented Architecture,面向服务架构。是一种架构,不是一种具体的开发技术。面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

 

要真正理解什么是SOA需要从软件开发的技术发展史谈起。

 

真正的软件开发从开始到现在经历了四个阶段,也可以说成是四代:

1、汇编语言开发

2、面向过程的软件

3、面向对象的组件开发

4、面向服务的架构开发,也是今天要谈论的SOA架构

 

SOA与前面三代的软件开发技术对比,不同点是SOA超越了软件开发语言本身。是一种面向服务的架构,与软件开发语言无关。

 

但就软件开发本身来说,SOA是一种技术,又超越了所有具体的技术。

 

二、SOA的技术革命

 

SOA既然能成为第四代软件开发技术,究竟带来什么革命。

 

首先,SOA是一种开发思想。是一种松耦合的框架。可以让软件超越开发语言。

 

其次,SOA的开发需要SOA体系的支撑,就像J2EE应用一样,离不开应用服务器。SOA也一样,也有一个类似J2EE服务器的东西支持着整个SOA体系架构----ESB(

Enterprise Service Bus),企业服务总线。通过这个总线,将多个系统连接起来。

 

其次,SOA是基于消息请求响应的一个系统,对请求类型有高度的兼容性。与一个Web应用容器相比,web应用容器只能处理HTTP请求,而 SOA的ESB可以接受HTTP、FTP、WebService、JMS...等请求。这就使得SOA架构具有高度的兼容性,可以将不同的平台集成到一 起,从而相互协调工作。


认识SCA

 

SCA(Service Component Architecture)中文翻译为“服务组件架构”,是一种全新的软件架构思想。

 

SCA中,最重要的一个概念是Service----服务,它的内涵式独立于具体的技术。因此,SCA不会称之为 Java组件架构,或Web Service 组件架构。所谓的具体技术,主要有两层含义:一是程序语言,而是传输协议。

 

现有的组件是和传输协议紧密耦合的。比如EJB组件采用的是RMI传输协议,Web Service组件采用的是SOAP传输协议。SCA组件则能自由地绑定各种传输协议。

 

SCA是对目前组件编程的进一步升华,其目标是让服务组件能自由绑定各种传输协议,集成其他的组建与服务。

 

SCA与传统的业务组件最大区别在于SCA实现了两个功能:一是组件和传输协议的分离,二是接口和实现语言的分离。

 

SCA的本质是一种软件架构思想,SCA架构是独立于程序语言的SOA架构。

 

SCA的目标是创建一个可集成服务组件的运行环境。

 

我什么需要SCA?答案:集成的需要。

先看没有使用SOA技术的系统的集成的情况,需要相互约定和暴露接口。需要编写集成的客户端调用代码。调用方和被调用方要“知彼知己”才能很好的集成,而这又都带来高昂的代价和复杂度。

 

使用SCA的好处:组件之间处于一种松耦合的状态,不需要在自己的代码中加入对方组件的接口代码。

 

二、认识SCA容器

 

SCA是一种思想,SCA思想的具体实现是SCA标准和SCA的容器环境。

SOA容器也分JBI容器、SCA容器等。SCA容器也是SOA容器总称的一种,通常都单独称SCA容器,而直接泛称SOA容器。这里为了区别与别的SOA容器开来,而称之为SCA容器。

 

SCA容器实现了将复杂的服务组件集成过程隐藏在容器内部,开发者之需要按照SCA的标准去开发和集成服务,最终部署到SCA的容器里面即可。

 

SCA容器的实现很复杂,有关其容器的组成与架构也是一种商业秘密。开发人员只需要关系如何遵循SCA标准去开发和集成服务组件即可。

 

为了更好去实现SCA架构,理解SCA服务组件概念的内涵和外延对开发者来说是非常重要的。


三、服务组件

 

1、概念

服务组件准确讲没有确切的概念,它更贴近于一件实实在在的物品,只能从他的形状、组成、结构、功能、状态、属性等侧面来描述它。

 

服务组件是SCA里面最基本的功能单元,它主要包括接口、实现、引用、属性等部分。可以从一下侧面来描述服务组件。

a)、是在一个模块(Composit)内的通过配置生成的一个实现的实例。

b)、多个组件可以用同一个实现(思考:一个Java的对象可以同时实现多个接口)。

c)、提供服务和消费服务(组件可以调用别的组件的服务)。

d)、通过配置来实现对象的属性值(配置节点为property)。

e)、组件通过连线(Wire)来设置服务引用。连线可以连接到别的组件的服务,也可以连接到模块的引用(模块的概念后面会详细讲述)。

 

2、 服务组件的组成部分

服务组件的组成包含四个部分:服务、组件实现、引用、创建属性。

 

下面给出服务组件的结构图如下:

 

 

如上图,分别讲述服务组成的各个部分:

a)、服务(Service),用来让其他组件调用。是一个接口。如果是基于Java的SCA,它就是Java的接口;也可以是WSDL的ProtType接口,目前只有这两种形式。

b)、组件实现(Implementation),实现所创建的服务,对Java来说,就是接口的实现类。

c)、引用(Reference),一个组件可能需要调用其他组件,需要创建于igeqita组件的引用。对Java来说,就是其他组件的Java接口。

d)、属性(Property),对组件实现的一种属性参数注入。

 

对一个服务组件来说,服务和实现时必须的,引用和属性是非必需的。例如,对上面Hello World的例子来说,组件的结构图如下:

 

四、服务模块

 

SCA是通过模块(Composite)将SCA组件集成在一起的。

SCA的模块是实际上是将SCA组件(做为零件)重新组合集成度更高的组建,从整体看来SCA模块和SCA组件的结构式一致的。从构成组件的“零件”角度看,SCA模块是用了组件作为零部件重新组装为新的组件(模块)。

 

其实道理也非常简单,下面是SCA模块的基本原理图:

 

如上图,可以看到,模块从整体上也是个组件。

模块是通过SCA的配置文件配置组装形成的,不需要程序的硬编码。

提升(Promote):就是将组件的接口、属性、或引用装配为模块的对应的接口、属性或引用。

连线(Wire):就是在模块内部,组件之间的调用关系。比如组件A的实现调用了组件B,那么组件AB间就存在一个连线。

当组件之间需要调用的时候,由于目前组件(如EJB、WS、JMS)传输协议的多样化,这样在相互的调用的时候,需要将绑定不同的协议去调用。这里尽可能避免让人迷惑而又没有价值的绑定(Binding)一词的概念。



返回列表 返回列表
评论

    分享到