成长的记忆

整理学习中的心得体会,记录开发中的酸甜苦辣,这是成长的记忆

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  5 随笔 :: 0 文章 :: 36 评论 :: 0 Trackbacks

OpenAdaptor白皮书

介绍


 

竞争不断地要求如今的企业集中他们的能力,迅速地结合,移动和度量他们的电脑系统,以满足不断改变的市场需求。

成功的公司必须确保他们的系统是通过无缝地结合多个应用软体来建造的。

IT
基础设施不仅要设计得强大,可靠,而且要灵活,可升级,以满足以後的新要求。

openadaptorTM
是能够对付这些挑战的解决办法。

opendaptorTM
公司提供他们结合资料所需要的,应用软体之间的资讯流,也就是资料来自何处,谁对它感兴趣,以及该资料怎样能被每个系统使用。明确地,它将资讯的提供者和消费者分离开来,这样就产生了不受资料实际位置影响,不受要访问资讯的消费者数目影响的,灵活的系统。这样,资讯就可以在系统之间结合,而不需要用户化每一个应用软体。

 

什麽是 openadaptorTM

openadaptorTM
是一个用 Java 语言编写的软体工具包,一个适配器框架。这一适配器框架的目的是要简化多个系统之间的结合,而这些系统不结合就很难共用资料。

在大组织里存在连接多个不同的系统,以相互传送资讯的要求是很正常的。这通常都需要一条专用的,点到点的资料连线,以及用户化的编程,以允许系统相互交谈。随著新系统的产生,专线的数目和用户化编辑都增加了,最终产生了资讯流动中的瓶颈。

 

一些组织通过开发像应用程式之间的资料代理一样的中间件产品,从而专注於这一问题。中间件大大地减低了系统体系结构的复杂性,因为每个新的资讯提供者都在相同的中心介面程式中编码,而该程式通过网路与其他程式建立连接。因此,随著新应用程式的引进,只要编写一条资讯介面与系统的其他部分通话。



不幸地,中间件解决办法也有它的局限性。当它为某个中心点提供通信时,它就不能自动化自定义介面编程。另外,中间件产品还使组织受困于信任某些产品卖主。

openadaptorTM
通过创建一个应用软体管道设备解决办法,专注於该问题,这一办法自动化了系统结合所需的自定义编码的大部分。它通过为开发者提供一组标准的,能用来连接系统与系统,或系统与中间件的连接器,或适配器,来做到这一点。

openadaptorTM
现在为以下传送器或产品提供一组标准的适配器:
- TIBCO ETX
Rendezvous
- IBM MQ
系列
- JMS
- JDBC
- RMI
- Flat Files
-
插座

 

openadaptorTM 也提供关於系统结合问题的适配器,如文件转换,过滤和充实,以及对资料交流标准的支援,如 XML FIX SWIFT 等。该产品能做的事情要将处理和标准检测除外。所有这些种类的适配器都可以无缝地结合到出版和订阅系统中去。

openadaptorTM
解除了开发者们对某一个中间件提供者的依赖,因为它为许多不同种类的中间件介面提供适配器。这是通过代码包实现的,它提炼介面协定要求,并将适当的介面 openadaptorTM 框架与潜在的中间件产品一起使用。

新适配器可以迅速地,简单地执行。感谢 openadaptorTM open source 许可,一旦某个工程生产了一种新的适配器类型,它可以自动地产所有工程使用。

对行业标准的支援
openadaptorTM 被设计来利用现存的标准。例如,资讯可以先映射为 XML ,通过资讯基础设施进行传送,然後重新映射成网路中每个订阅系统所要求的特定资讯格式。

可升级
openadaptorTM 出版 / 订阅 包含了一个内在的可升级的设计,它确保成长,而不牺牲性能。这样就使新系统迅速地,简单地连接,而不影响生产能力。这样,组织就可以在全球范围内结合应用软体。

 

普通特徵
openadaptorTM 普通介面标准允许的企业级的功能执行有:
。资料压缩 -- 压缩减少带宽瓶颈。
。例外处理 -- 建立和维护资讯医院,它们是介面,保留了一些因为某些原因而不能处理的资讯。这些例外资讯被修理,然後送回去重新处理。
。标准检测 -- 允许对比性地测试元件运行得怎麽样,特别是相互关联的元件。
。程式管理 -- 提供简单的工具运行和监控 openadaptorTM 程式。这包括一个浏览器介面上的远端控制功能,以及记录功能。

使用 openadaptorTM 的优势
。未来证明 -- 通过将应用软体联合或分离,这样就使介面在系统环境中更可维持。对介面的改变被掩盖在 openadaptorTM 通用介面的後面。相似的, openadaptorTM 使取代过时应用软体大大地变易。
。重新使用 -- 全球性的 openadaptorTM 框架提供重新使用应用软体代码所必需的框架。

容易使用
每个 openadaptorTM 适配器都是用一个简单的配置文件定义的。因为 openadaptorTM 提供一套有现货的元件,因此有可能建造一个适配器而根本不用编写任何实际的程式码。

更多资讯
你可以在 openadaptorTM 的网站中找到更多关於 openadaptorTM 的资讯( http://www.openadaptor.org )。

 

openadaptorTM 框架

 

openadaptorTM 框架是一个以资讯为基础的系统集成工具包。系统集成工作,简单的可以像处理一个文件一样,复杂的可以像建立系统之间的即时馈送一样。

该框架提炼在系统(或传送器)之间发送资讯的程式。它提供一个已经建造好了的元件框架,可以马上组装起来集成系统(通过使用简单的配置文件,而不是编写实际的程式码)。

该框架现在允许适配器的建造(这一框架也将被扩充,允许以资讯为基础的服务和闸道的建造)。

适配器是一个或多个起源地与一个或多个目的地之间的单向连线。起源地和目的地可以是一些不同的东西,如平面文件, TCP/IP 插座,资料库,特定系统 API (应用编程介面),中间件, RMI 服务, JMS 伫列等。

发送资讯所要求的不同工作步骤如下所示:



首先,要有与起源地的连接(连接器)。一旦做到了这一点,还要有一些资料凭以压入和拉出的机制(协定)。那时资料就被转换成资讯(资讯格式化)。在目的地连接那里也反过来进行同样的步骤。

 

还有一些其他的选择性功能:

。压缩和加密
出於性能的原因而将资讯压缩(和解压),和 / 或为安全目的而加密(和解密),都是必要的。

。资料充实
充实资讯的内容是正当的。这要以对另一个系统的查看为基础,或是以严重编码的规则为基础。检查资料的统一性,以及资讯内容的完整性都是有必要的。

。资讯过滤
以内容为基础确认某些种类的资讯可能也是正当的。这可能是出於放弃这一资讯,或是对它应用特别规则的目的。

。资讯转换
它涉及将资讯从一个系统翻译到另一个系统,以确保相容。

。例外处理
被拒绝了的资讯需要特别的对待和处理。

 

一个适配器是一个单独的程式 -- 每个原始资料元件都是作为一个单独的执行线程运行的。以下是一些很简单的适配器的例子:

1


该适配器读取来自资料库的资料,然後将它发布给 TIBCO (一个出版 / 订阅基础设施)。

2



该适配器从一个 MQ 序列拉出资讯,以内容为基础,过滤该资讯,然後将它写入一个文件。

导管可以像雏菊花环一样串起来。这样设计提供了高度的模组性和配置性。它像 UNIX 外壳中使用的命令行导管。一个典型的适配器如下:

 

适配器并不限定於线性结构。扇入和散开适配器也可以创建,像这样:


或像这样:


或可能像这样:



或甚至像这样:

 

openadaptorTM 现在提供以下种类的已经建造好了的原始资料和接收器:

平面文件:

允许对平面文件进行读和写。它对於移动工作和测试是很有用的。这些元件是不能交易的。

插座:

允许对 TCP/IP 插座进行读和写。它使用简单的协定进行换手和事项协调。

JDBC

允许对相关的资料库的资料进行读和写,如 Sybase, Oracle, MS SQL 伺服器。

RMI

允许将该适配器介绍为一个 RMI 服务,或是向 RMI 服务发送资讯。

TIBCO ETX &Rendezvous

允许出版和订阅 TIBCO 中间件产品。

MQ 系列

允许对 IBM MQ 系列中间件进行读和写。

JMS

允许向 JMS Java 资讯服务)序列和主题收发资料。


另外,一些工程已经为某些特定的系统(如 Fidessa DROM )编写了原始资料和接收器元件。

原始资料和接收器主要是负责支援起源地和目的地的传送器和协定。内部地, openadaptorTM 声称资料是叫做 DateObject (看第 13 页的 DataObject )的自我描述的资料结构。框架内的资讯被描述为 DataObjects 序列。 openadaptorTM 已经开发了一种可以用来描绘 DataObjects 序列的,以 ASCLL 码为基础的字串格式。这一格式也支援压缩,并且将被扩充,支援安全功能,如加密和资讯领会。这一格式被称作 DataObject XML

在没有特定的 API (应用编程介面)时,这就是起源地和目的地之间交流的资料格式。如果那时使用了文件接收器,默认行为就是将一则资讯作为 DataObjectXML 写出来。

 

然而,还是有可能接通不同的资料格式。 Source 可以被分配为一个能将不同种类的以 ASCLL 码为基础的格式转换为 DataObjects 的阅读器。相反的,接收器可以被分配为一个能用 DataObjects 为生不同种类的以 ASCLL 码为基础的格式的复写器。现在, openadaptorTM 只提供一些普通的阅读器和复写器,以支援定界领域,固定带宽领域,以及 XML openadaptorTM 还为容易执行的自定义格式提供框架。一些贡献者正致力於标准资料格式,包括 SWIFT FIX

openadaptorTM
现在提供以下种类的普通导管元件:

别名:

允许资讯结构和内容的转换。

过滤:

允许以结构和内容为基础放弃或发送电报。

例外处理:

允许抓住应程式例外,并且改道发送资讯。

加密:

允许以资讯内容和种类为基础,将之加密(解密)。

审计:

允许记录已经被成功地处理的消息的资讯,以及察觉复制的应用程式消息。


典型的工程都是通过结合和配置这些普通导管,或在自定义导管中编写少量的代码,来执行自定义行为。

 

DataObjects

DataObjects
openadaptorTM 作为基础的基本资料结构。当某则资讯被称作是 openadaptorTM 出版 / 订阅基础结构( ETX )资讯时,它实际上是意味著某些 DataObjects 的连续表示。当某个程式要将资讯发布到出版 / 订阅基础结构时,或是要将资讯写入某个文件时,它就需要创建 DataObjects

DataObjects
是在 openadaptorTM 适配器中内部地使用的。在 Source 元件中产生的资讯,挤过导管,然後在接收器元件中结束,这就是 DataObjects 的序列。

在最简单的级别, openadaptorTM 可以被认为是一个 名称 - 线对的集合 -- 该集合有一个种类,并且每个 名称 - 线对都被叫做一个属性。例如,一个类型为 "Person" DataObject 可能有两个属性,名字和年龄,这些属性各自的值可能为 Fred 21

为了支援更复杂的资料结构,某些属性的值不应该只是原始值(整数,双数,字串,布林值,等);它也可以是 DataObjects 的一个序列。例如,一个类型为 "Team" DataObjects 可能有两个属性,名称和成员;这些属性各自的值可能是 openadaptor DataObjects 中的一个 Person 序列。

DataObjects
被开发出来了,因此就有一种简单的轻便的资料结构可以在服务和应用软体之间交流。 openadaptorTM 最重要的方面就是自我描述。这就意味著任何写得很好的代码都可以收到任何 DataObject ,以及提取资讯。

 

控制器

下图说明了一个正在运行的适配器中所有在工作的元件:



像原始资料,导管和接收器一样,也有一个控制器。控制器负责为动 source 元件中线程,协调元件之间的通信,以及管理事项。

每个 source 元件在一个单独的线程中运行。在所有的元件都被初始化了之後,控制器为动所有这些线程。

source 元件创造了一则资讯时,它将向控制器请求下一个可用的事项。

然後 source 元件会将资讯传送给控制器,控制器就将它传送到管道中的下一个元件,等等。这是一个同步的呼叫,如果资讯成功地处理,最终将返回 source, 否则就会产生例外。

如果 source 元件收到了例外,它将退回这一事项,否则,它会答应负责这一事项。

控制器负责传播呼叫,以开始,提交和退回事项。


1 也可以选择性的有一个远端控制器和远端记录器。远端控制器可以在适配器运行时,与之相互影响,并管理它。远端记录器可以过滤适配器,并向远端客户广播资讯。
2 openadaptorTM
现在提供一个控制器的执行。它叫做简单控制器,也是默认控制器。使用配置文件可以推翻这一点。

 

DataObjects 字串阅读器和复写器

DataObjects
字串阅读器和复写器是用来在 DataObjects 和字串表示法之间进行转换。它们主要是被引进来,为接收器和 source 的扩散提供解决办法的。以前的 openadaptorTM 版本包含了以定界的,固定带宽的,私人拥有的格式文件为基础的接收器和 source 的变体。除了这一点,像 MqSink 等接收器还提供固定带宽格式化。如果某个开发者想要处理一个自定义文件格式,那时他就要编写一个自定义 source 元件。

从今以後,每个传送器就都只有一个接收器和 source 。每个接收器和 source 都能够分配一个 DOString 复写器和阅读器。当某个 source 被分配了一个 DOString 阅读器时,它就会把将字串转换成 DataObjects 的任务委托给阅读器。

这就意味著 DOString 阅读器和复写器可以与接收器和 source 联合起来,以产生每一个功能结合。那些想要读(或写)一个自定义文件格式的开发者,现在只需要编写一个阅读器(或复写器)。通常这只是一个执行 chop stick 方法的问题,这两种方法将记录砍成栏位字串,或将栏位字串粘贴成记录。

 

资讯医院

在理想的世界中,资讯在系统之间相互发送,并且每个系统都能够成功地处理每则资讯。明显地,事情并不是这样的,应用软体和系统通常要拒绝某则资讯,然後继续处理。

资讯医院可以被认为是不受任何适配器处理的, DataObjects 的修理伫列。现在已提供了一个使用 Sybase 和一个命令行介面的基本执行。还有一些带有资讯医院的,用来集成适配器的适配器元件,在例外发生时接纳资讯,并在晚一点的时候排出资讯。

 

为什麽一个框架就好了?

一个框架给了我们以下好处:

标准化
因为每个适配器都建立在相同框架的基础之上,所以它们都拥有相同的 " 外观和感觉 " 。从支援和维护的观点看,这是一个很大的好处。

发展速度
因为 openadaptorTM 提供一套有现货的元件( source ,接收器和导管),因此有可能不用编写任何代码就能建造一个适配器。

灵活性
与为每个需要建造特定的适配器相反,一个框架允许我们动态地配置适配器。简简单单地改变一个文本配置文件,该框架就允许动态地混合和匹配不同的 source 和接收器元件。这在测试中会有帮助,因产可以用一个能够读取测试实例文件,或指定一则产生问题的资讯的文件 source ,来代替一般的 source

随意用户化
在某个工程需要建造特定工程 source 和接收器(如某个老的套接协定的桥接器)时,就可以遵照 source 和接收器框架介面建造。它马上就可以用配置将文本拉入那一适配器 -- 就跟预先建造的元件一模一样。开发者只需要编写最小部分的代码,因为其他的是免费获取的。

用於重新使用的平台
因为框架元件定义得很好,并且可以在运行时结合起来,因此开发工程要建造一些能被更广泛的工程重新使用的元件是很容易的。标准检测工具允许对元件进行单元测试。

普通功能
一个框架免费提供普通功能,这样减少了冗余和重复。另外,该框架所有的用户,只需要最小的努力,就可以马上获得框架更新的好处。

 

openadaptorTM 框架包含的普通功能有:

-
错误记录和通知
-
程式管理和监控
-
例外 / 修理伫列
-
资讯压缩和安全
-
标准检测和回归率测验

 

商标

openadaptorTM Dresdner Kleinwort Wesserstein 公司的商标。

此文件中使用的其他产品商标是它们各自所有者的财产。

 

openadaptorTM 简史

 

看看软体发展的前後关系通常都是很有趣的。

1997
年, Dresdner Kleinwort Wesserstein 公司(那时的 Dresdner Kleinwort Benson 公司)决定大修它的资讯技术系统,以并入当时可用的最好的技术解决办法。

很明显,这样会涉及大量的集成和移动工作。出版 / 订阅被看作是能做这一工作的主要的技术范例。这一工程叫做 Dealbus

有很多产品受到了评估,并且, TIBCO 企业事务快车( ETX )和 TIBCO Rendezvous 被选为那时最好的品种。 TIBCO ETX Rendezvous Dealbus 的基础设施)最初是在伦敦大量生产的。负责这一基础设施的小组曾经在法克福,纽约,东京和香港安装了节点。

它提供了基本的基础设施,但还有一些重大问题不能解决:
1
  我们怎样才能使工程容易地使用这一基础设施?
2
  我们怎样避免卖主禁闭?
3
  我们怎样才能控制人们用它来做什麽,明确地,也就是汇流排上的资讯格式将是什麽?

同时,有一些工程正在建造使用 CORBA 的分散式系统。一致同意, COBRA 服务传达的资料与汇流排上发行的资料要是相同的格式。另外,它还要以 ASCLL 码为基础,并且是自我描述的。这样就产生了 DataObjects DataObject 转换器。它原本是用 Java 语言编写的,作为使用 COBRA 的分散式系统的一部分。

1998
年中, DataObjects DataObject 转换器被引入到了被开发来提炼 TIBCO 产品 API (应用编程介面)的 C++ C++ 程式库。这就是人们了解的通用出版 / 订阅程式库。现已开发了一些通用应用软体,允许来自 Sybase 资料库和平面文件的出版和订阅。开发了 COBRA 服务之後, Java 应用软体也可以出版和订阅。这一工作形成了 Dealbus 软体早期版本的基础。

 

这时, XML 作为一个不断成长的资料交流标准冒了出来。 DataObjects 转换器被增强了,以将 DataObjects 伫列描述为 XML 文件。这就是知名的 DataObjectXML

Dealbus
下一版本的驱动因素就是,使用出版 / 订阅基础设施,开发者们不需要编写软体这一基本观念。它包括连接到 TIBCO ,以及我们所拥有的任何内部系统,也包括与资料转换,资料充实,统一性检查和例外处理相关的典型工作。在我们的观念中,勾入 Dealbus 只是一件几分种和几小时的事情,而不是几天和几周。另外,通过提供一个框架和已经建造好了的元件,我们可以确保可靠性,通过重新使用,我们可以将行为标准化。这就是 Infobus 适配器框架( IBAF )。

该适配器框架,允许开发者们通过编写配置文件,而不是软体来建立系统和出版 / 订阅基础设施之间的连接。这一配置文件指定那些像雏菊花一样串起来的,已经建造好了的元件,与 UNIX 命令行中的导管的工作方式是一样的。如果用户要执行一些已建造好了的元件不提供的功能,就会提供框架来执行这些功能。苛刻一点的就是,开发者需要编写可能的,最少的代码。

Dealbus
框架的第一版于 1999 年初发行。在核心框架没有重大改变的同时,已建造好元件的数目和框架功能却在继续扩充和发展。最近的版本包含完整的 Java 源代码。 Dealbus 开发小组以外的开发者捐献数目继续增加。

最重要的改变就是认识到了,这一框架并不是具体针对 TIBCO 基础设施和出版 / 订阅的。越来越多使用 Dealbus 的工程不再使用 ETX Rendezvous 了。 Dealbus 框架真的是一个以资讯为基础的,系统集成和移动工具包。现在,在 Dresdner Kleinwort Wesserstein 公司中有 50 多个使用 Dealbus 软体的工程。

posted on 2006-06-06 22:35 小牧 阅读(1900) 评论(6)  编辑  收藏 所属分类: OpenAdaptor

评论

# re: OpenAdaptor学习笔记(2) 2006-11-02 11:32 ondying@hotmail.com
正在看openadaptor,能不能告诉我说如何部署配置它?  回复  更多评论
  

# re: OpenAdaptor学习笔记(2) 2007-03-25 18:10 小牧
由于工作关系,很久没有登录Blog了,现在才看到你的问题。抱歉

我主要用的是OpenAdaptor V1.x。以现在最新版本V1.7.2为例:

这个版本只提供了shell脚本,而没有bat。因此无法在Windows下直接运行,但其目录下有build.xml和build.properties,这也就表示其开发部署使用了Apache Ant。安装jdk是不可少的,建议1.4以上,然后安装Ant,添加系统环境变量ANT_HOME=<ant的安装目录>,并设置path=%ANT_HOME%\bin;%path%。cmd命令行下,进入openAdapator目录,运行ant usage,可以查看运行参数,但是其编辑工具却没有显示,运行ant editor,会出现可视化的编辑工具AFE,编辑,运行,都可以在此工具上处理,非常方便。  回复  更多评论
  

# re: OpenAdaptor学习笔记(2) 2007-03-25 18:44 小牧
对应的命令行操作为
进入<openAdaptor_dir>/examples,执行
set_classpath_jdk_1_4.bat
再执行java命令:
1、运行AFEditor
java org.openadaptor.adaptor.editor.AFEditor
2、运行适配器
java org.openadaptor.adaptor.RunAdaptor test.props A
如上命令中,test.props为openAdaptor的适配器文件名,A为适配器名
  回复  更多评论
  

# re: OpenAdaptor学习笔记(2) 2010-06-03 15:52 Vian
你好..你能告诉怎么配置OpenAdaptor从多个source获取数据吗?
如果有时间麻烦发到我邮箱.pantie05@qq.com
谢谢  回复  更多评论
  

# re: OpenAdaptor学习笔记(2) 2010-06-04 22:38 小牧
@Vian

抱歉,OpenAdaptor已经丢了很多年  回复  更多评论
  

# re: OpenAdaptor学习笔记(2) 2011-07-06 18:07 adaptor
<bean id="Router" class="org.openadaptor.core.router.Router"> <property name="processMap">
<map>
<entry key-ref="ReaderA" value-ref="Writer"/>
<entry key-ref="ReaderB" value-ref="Writer"/>
</map>
</property>
</bean>

怎么配置OpenAdaptor从多个source获取数据  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: