您的位置:首页 > 其它

毕业一年总结专题7--SCA,SOA,TUSCANY的概念

2013-06-19 20:54 295 查看
都是网络上摘抄的,都是一些基本概念,整理起来,回顾起来比较方便点,面试的时候也好有准备

现在是2013.6.19晚上九点,再不回去估计就赶不上最后一趟公交了,话说晚饭还没吃,但貌似也不太饿。想想今天还是冲动了点,好了,回家。

SOA介绍:

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

SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML/Web Service技术之后的自然延伸。

基础结构:WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。

优势:SOA不同于现有的分布式技术之处在于大多数软件商接受它并有可以实现SOA的平台或应用程序。SOA能够在最新的和现有的应用之上创建应用;SOA能够使客户或服务消费者免予服务实现的改变所带来的影响;SOA能够升级单个服务或服务消费者而无需重写整个应用,也无需保留已经不再适用于新需求的现有系统。总而言之,SOA以借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。

SCA介绍:

SCA 是一种跟具体语言、平台无关的 SOA 编程模型。SCA的目的是使用户在构建企业应用时有一个不再直接面对具体的技术细节的层次,而是通过服务组件的方式来构建应用。这种方式也使得客户的企业应用具有良好的分层架构,能够很好的分离应用的业务逻辑和IT逻辑,不但易于应用的构建,也易于应用的更改和部署。

服务组件:服务组件提供给别的服务调用的入口叫Interface(接口)。而服务组件本身可能也需要调用别的服务,这个调用出口叫Reference(引用)。无论是接口还是引用,其调用规范都是WSDL或Java接口。

服务模块(Module):服务模块(简称模块)由一个或多个具有内在业务联系的服务组件构成。在模块中我们引入了两个特殊的"端点",一个是导入(Import),它的作用是使得模块中的服务组件可以调用模块外部的服务。另一个是导出(Export),它的作用是使得模块外部的应用可以调用模块中的服务组件。导入端点提供了四种绑定方式,包括:JMS绑定,Web Service绑定,SCA绑定和无状态会话BEAN的绑定。导出端点提供了三种绑定方式,包括:JMS绑定,Web Service绑定和SCA绑定。对于SCA模块之间的调用,我们可以非常方便的把绑定方式设置为SCA绑定,但是对于非SCA模块与SCA模块之间的调用我们只能选择其它绑定方式。

共享库:有一些资源可以在不同模块之间共享,那么我们可以选择创建一份可以在不同模块之间进行共享的资源,而不是在不同模块中重复创建。

Standalone Reference:模块中的服务组件是不能直接被外部Java代码使用的,为了外部的Java代码,比如JSP/Servlet使用模块中的服务组件,WID工具在模块中提供了一个特殊的端点,叫做Standalone Reference。这个端点只有引用(Reference),而没有接口(Interface)。只要把这个端点的引用连接到需要调用的服务组件的接口,外部的Java代码通过这个引用的名称来调用相应的服务组件了。具体如何调用请参考后面例子的实际代码。



Tuscany介绍:

Apache Tuscany 是开源界最成熟的 SCA 框架之一。



图为 Tuscany 的基本架构图,从图中可以看出,作为一个轻量级 SCA 框架,Tuscany 提供了非常松散耦合的框架结构。主要有以下几个特点:

· Tuscany 是平台无关的可嵌入框架,可以在各种 Hosting Platform 上运行,如 Tomcat,JBoss,WAS 等 Web 容器上运行,也可以在 J2SE 环境下运行。

· Tuscany 的核心模块提供了 SCA 规范的 API 实现,Tuscany 系统的 SPI 接口,一些系统基本实现(如事件,工厂类,存储等),以及一整套扩展机制,这些扩展机制为 Tuscany 整合各个平台的服务提供了基础。

Tuscany 的扩展是完全松散耦合的,框架本身提供了大量的扩展实现,用户也可以在自己的系统中扩展 Tuscany 的实现,只需要遵循 Tuscany 的扩展规范以及 API 接口。

Tuscany 主要有以下几个方面的扩展:

· Implementation:SCA 组件(Component)的实现方式,一个 SCA 组件可以由各种语言或技术平台实现,如:POJO,EJB,Spring Bean,bpel 流程,各种脚本语言等等。

· Binding:是 SCA 的绑定(Binding)规范的实现,SCA 服务(Service)和引用(Reference)的绑定方式,即一个 SCA 服务可以暴露为 Web Service,Java RMI 服务,http 资源,jms 消息等等,一个 SCA 引用也可以通过 Web Service,RMI 调用,http 调用,jms 调用等方式调用远端服务。

· Databinding:数据绑定方式,这是 Tuscany 提出的概念,一般用与在 Binding 中定义参数的传输格式,比如 Web Service 的 Binding 一般用 XML 格式,SCA 的 Binding 一般用 SDO 格式,Jsonrpc 的 Binding 一般用 Json 格式等等。

· Interface:是 SCA 的接口(Interface)规范的实现,SCA 服务(Service)和引用(Reference)的接口暴露方式,一般有 Java,WSDL 等类型。

Tuscany 的 Web 2.0 扩展

Tuscany 在 Web 2.0 方面主要提供了以下几类扩展:

· Implementation 扩展:script implementation 提供了各种脚本语言的实现,如 Javascript,python,ruby 等,widget implementation 提供了将一个 SCA Component 封装成 widget 的能力。resource implementation 提供了一种简单的 http 资源的实现。

· Binding 扩展:atom binding 提供了 atom 方式的绑定实现,dwr binding 提供了利用 dwr 框架进行 ajax 调用的能力,http binding 提供了直接进行 http 访问的能力,jsonrpc binding 提供了在 Javascript 中使用 jsonrpc 进行 ajax 调用的能力。

Databinding 扩展:json 格式的 databinding 提供了将 json 格式的数据与其他格式(如 xml,Java Bean,SDO 等)之间互相转换的能力。

可以参考IBM开发的教程:

使用 Spring Framework 设计和开发 SCA 组件,第 1 部分: 三剑客:Spring、SCA 和 Apache Tuscany

Apache Tuscany 上开发基于 SCA 的 Web 2.0 应用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: