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 应用



Tuscany的一些概念相关推荐

  1. 对tuscany中domain、cloud、node、composite关系的理解

    tuscany是对sca.sdo标准的实现,sca完成服务的封装和wire,sdo完成数据的统一. sca是一种ESB实现方式 其实,sca完成的功能远远不止封装服务那么简单.我们在使用sca的过程中 ...

  2. TUSCANY 学习笔记1

    tuscany是对sca.sdo标准的实现,sca完成服务的封装和wire,sdo完成数据的统一. SCA:Service Component Archtecture 服务组件框架 SDO:Servi ...

  3. Apache Tuscany SCA 用户指南

    介绍 这篇用户指南帮助你熟悉SCA概念,并且带你浏览示范怎样创建SCA 应用的一个例子.它也说明了Tuscany支持的多种不同环境(例如命令行客户端或Web应用)以及如何打包程序以运行在这行环境中. ...

  4. 什么是tuscany

    大家好,我是IT修真院武汉分院第14期的学员,一枚正直纯洁善良的JAVA程序员.今天给大家分享一下,修真院官网JAVA任务9的知识点--Tusacny 什么是TUSCANY? 要了解Tuscany 先 ...

  5. Tuscany SCA软件架构设计理念分析鉴赏 (一)

    Tucany  SCA软件架构设计理念分析(一) 李俊杰 1.     概述 SCA (Service Component Architecture) 是一个开发SOA(Service-Oriente ...

  6. Tuscany SCA软件架构设计理念分析(二)

    Tuscany  SCA软件架构设计理念分析(二) --动态代理模式和方法调用 李俊杰 1.     概述 上一篇文章主要讲述了Tuscany SCA的插件板模式及工厂模式的发展和提升,本文主要介绍T ...

  7. RPC 笔记(03)— gRPC 概念、安装、编译、客户端和服务端示例

    1. gRPC 概念 gRPC 是 Google 开源的一款高性能的 RPC 框架.GitHub 上介绍如下: gRPC is a modern, open source, high-performa ...

  8. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  9. 数据结构(01)— 算法复杂度概念及常见的复杂度计算

    1. 大 O 表示法 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度.大 O 表示法指出了最糟情况下的运行时间.大 O 表示法在讨论运行时间时, ...

最新文章

  1. 区块链 软分叉和硬分叉 简介
  2. 【数字信号处理】基本序列 ( 实指数序列 | 收敛序列 | 发散序列 )
  3. asp.net 点击查询跳转到查询结果页面_如何控制报表组点查询后默认选择的 tab 页...
  4. GFS 分布式文件系统从入门到实践
  5. 鲁九的六人小聚:夏吕吕岳倪兴
  6. (转)Java中的守护线程
  7. SKLEARN模型选择
  8. mac在当前文件夹打开终端,献给不喜欢终端打字的小伙伴
  9. Spark sql优化
  10. leetcode刷题日记-三个无重叠子数组的最大和
  11. Android 8.1user版本默认开启开发者模式
  12. 除了PS,这几款设计软件也是我的最爱
  13. (四十二)利率互换与货币互换的定价
  14. 威联通文件传输服务器,威联通QTS文件传输体验
  15. Android图片缓存框架 - Fresco的GenericDraweeHierarchy (五)
  16. Fedora 17: 安装 perl-Tk
  17. 蒜头君给出若干个整数,询问其中是否有一对数的和等于给定的数。
  18. 一般服务器监控什么项目,服务器中需要监控的项目
  19. 家庭宽带市场竞争分析
  20. 苹果6如何截屏_iPhone截屏操作也分三六九等?

热门文章

  1. urlrewrite使用介绍
  2. 大数据先导实践实验二
  3. 做BI财务数据分析,国产BI软件经验更足
  4. 精读《Prisma 的使用》
  5. AO3400-ASEMI低功耗长效应管AO3400
  6. 论文阅读——Updatable Learned Index with Precise Positions(VLDB‘21)
  7. 3D激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
  8. MPLAB IDE V8.8进行程序烧写
  9. Oracle bpm实现oa,Oracle BPM/SOA API 操作流程
  10. The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.1 可以捕获其环境的匿名函数