??xml version="1.0" encoding="utf-8" standalone="yes"?>久久综合免费视频,欧美女优在线观看,精品欧美不卡一区二区在线观看http://www.aygfsteel.com/flyhorse/category/2580.htmlEclipse,J2EE框架QSOAQXMLzh-cnThu, 01 Mar 2007 15:36:11 GMTThu, 01 Mar 2007 15:36:11 GMT60技术访谈:(x)面向服务的架构和 SOA 蓝图http://www.aygfsteel.com/flyhorse/articles/9405.html飞马飞马Fri, 05 Aug 2005 08:45:00 GMThttp://www.aygfsteel.com/flyhorse/articles/9405.htmlhttp://www.aygfsteel.com/flyhorse/comments/9405.htmlhttp://www.aygfsteel.com/flyhorse/articles/9405.html#Feedback0http://www.aygfsteel.com/flyhorse/comments/commentRss/9405.htmlhttp://www.aygfsteel.com/flyhorse/services/trackbacks/9405.htmlƢ迎Q?Jim Q?(zhn)能向社Zl一下自己吗Q?/STRONG>

我叫 Jim Rivera 。我?BEA Systems 的一名技术ȝ。到现在为止Q我?BEA 公司工作了大U?6 q时_(d)试q各U职位,最qQ WebLogic Server 最C个版本的产品l理。在我现在的职位上,我的主要工作是推动对我们q_的技术采用,从而帮助架构师和开发h员理解如何应用我们的技术,特别圎ͼ我还把一部分_֊攑֜面向服务的架构上?SOA 蓝图计划是上述工作的一部分?

(zhn)能解释一下什么是 SOA 蓝图吗?

我们围绕 SOA 已经q行了许多营销工作Q在什么是 SOA 斚w不断获得H破性的消息Q但是关于如何实?SOA 的信息很,而且思\很模p。因此,作ؓ(f)一名专业h士,我认为在如何采用 SOA 作ؓ(f)开发应用程序的一U方式的问题上,开发h员需要更多的规范和惯例。这是 SOA 蓝图计划的全部内宏V它是一个行业范围内的计划,用于切地定义如何实?SOA Q以?qing)当采用q种Ҏ(gu)开发应用程序时Q?zhn)惌使用的一些设计模式。该计划有三块主要的内容。首先是围绕 SOA 定义一l概念和术语Q以?qing)定义。如果?zhn)惌够就如何实?SOA q行更多有趣的谈话,q是一个先x件。?zhn)有一个通用的核心概念,可以从它开始实?SOA 。其ơ是为参考实现和参考应用程序定义一个规范。这样做是ؓ(f)了有一个基?SOA 应用E序的非常具体的例子Qƈ能够从这个应用程序引导出一些对?SOA 来说很重要的模式。最后一件事情是能够提供规范的实玎ͼ而且q些实现会(x)在各个不同的q_上完成,因ؓ(f)昄需要在十分异构的环境中实现 SOA Q例如,无论是在 Java q是 .NET 环境中,(zhn)都可以通过不同的方式来做到q一炏V该规范目前q处于公众评论阶D,所以?zhn)可以立即?www.middlewareresearch.com 下蝲它,q提供对它的反馈。目前,有多家厂商向我们做出了提供实现的承诺?

计划中都涉及(qing)到哪些厂商?

BEA ?Middleware Company 都是q个计划的主要发起hQ所以我们过M直致力于制订他们的初始规范,而其后有很多其他的厂商也加入了这个计划。这其中包括其他的^台厂商,比如 IBM ?Microsoft ?Oracle ?Sun Q以?qing)许多其他?SI ?ISV 、行业分析家、咨询家和客戗专家评审委员会(x)由大U?20 家公司组成,而且它是一个属于行业范围内的计划,所以Q何h都可以参与进来,(zhn)可以下载规范,提供输入l委员会(x)Q还可以自愿范的开源实现提供帮助。Q何厂商都可以加入q个计划Q只要它们愿意在它们自己的^C提供规范的实现?

Z么?zhn)认?f) SOA 蓝图如此重要 ?

SOA 代表了用于构建应用程序的一U相对较新的方式?SOA 的概念已l存在了很长旉Q但是,因ؓ(f)q去(zhn)习(fn)惯的传统做法是,使用专门技术和消息ȝ来实?SOA Q它实际上没有在很大的范围内得到采纳。所以对于大多数开发h员来_(d)它是一U新的方式,它是一U用于构建应用程序的新方法。当(zhn)开始ؓ(f)独立q行部v的应用程序构Z赖性时Q?zhn)开始了׃n像这L(fng)服务Q而且(zhn)需要能够以一U非常松散耦合的方式定义交互模型中的这些接口,q样(zhn)才能独立地理q些应用E序q控制它们的版本Q同时不?x)降低整个系l的性能。这需要一套新的设计模式和技术,所以该蓝图如何学?fn)这些设计模式?f)(zhn)提供了一U非常具体的方式Q而且当?zhn)考虑规范的实现时Q?zhn)能够明白如何在各种q_上完成它?

(zhn)如何在作ؓ(f)规范一部分?实际例子中获得经??

到现在ؓ(f)止, BEA 注重研究 SOA 已经有一D|间了。它是我们未来前景和产品战略的核心。自从发布了 WebLogic platform 8.1 以来Q我们实际上已经拥有了实实在在专注于提供 SOA 功能的品。这U状况已l持l了大约一q半的时间。所以,我们已经拥有相当一部分采用q种构徏应用E序的方式的客户。通过我们的顾问,我们的专业服务和我们的合作伙_(d)有关那些已经完成的实玎ͼ我们已经了解C相当多的情况Q而且从内部来_(d)我们自己?IT 部门都是使用 SOA 来构建面向内部和外部的应用程序。所以,我们已经能够应用q些知识来帮助定义规范中需要有的内容,以及(qing)我们如何在我们自己的实C实现该规范?

蓝图中实际上规定了哪些内容?

该蓝图是用于一家叫?Generico 的虚构公司的规范Q它定义?3 个主要的用例。第一个用例是一个企业范围内的安全服务,所以它引入了一些有的内容Q比如必针对单点登录传递一个安全o(h)牌,{等。第二个用例是一个企业范围内的数据服务,它实际上是一w常常见的需求,而且几乎成ؓ(f)了面向服务架构的一先xӞ因ؓ(f)当?zhn)考虑使用传统方式来构建应用程序时Q在很大E度上就是孤立的方式Q应用程序不?x)共享数据。这时?zhn)会(x)开始{而用共享服务式的基架构。?zhn)需要找C个对于需要上q数据的不同应用E序都适用的数据模型。这通常需要聚合来自各U不同数据源的数据,q对它们q行加工Q其从表面看v来是一个数据服务。最后一个用例是开发一个自助式的门Pq样它就可以使用(zhn)构建的现有服务Qƈ开发和构徏另外的服务,也就是在自助式门户中实现业务程更高U的服务?/P>

 蓝图实现中都l出了哪些模式?

最基本的模式是同步服务和异步服务。通常Q当Z考虑 web services Ӟ׃(x)惌v同步服务。定?SOAP 规范的方式正是一U请求-响应式的交互模型。当客户端需要即时获得响应时Q假定是Z查询的服务便z上了用场。然而,它也是一U相对紧密耦合的交互方式,因ؓ(f)客户端发送其h时会(x)dQ直到它收到响应为止Q而且在某些情况下Q如果?zhn)的服务踢掉一个长期运行的q程Q或者如果?zhn)需要说明吞吐量或停机时间方面的差别Q?zhn)实际上是惛_入一个异步模型,因ؓ(f)q样做的耦合E度要松散得多,(zhn)的客户端可以发送请求,而且它是一个发后不理( fire-and-forget Q类型的模型Q在q种模型中,应用E序可以接着处理其他的工作。执行服务之后,响应?x)在E后某个时候通过像回叫这L(fng)机制传送回来。这正是|络中出现停机时间或者调入调Z个应用程序的原因Q这样应用程序之间的耦合E度便松散得多。还存在一些其他的模式Q比如发布与订阅Q包含横切关注点Q?crosscutting concern Q的~排模式Q以?qing)用于补偿动作的模式?/P>

 (zhn)能l我们谈谈一个用发布与订阅Q?pub sub Q模型的例子??

当?zhn)有多个订阅系l对一个特定的事g感兴时Q发布与订阅模型十分有用。借助q个模型Q?zhn)可以把一条消息插入队列,或者把它发送给一个主题,而Q何已l订阅该主题的子pȝ都将收到该消息的一条通知。D一个例子,当企业雇佣了一个新员工Ӟ(zhn)的 HR 应用E序?x)把有关该员工的一些信息添加给它自q子系l。当该员工被dl系l时Q可能会(x)有很多其他的子系l需要获取信息,或者需要收取通知。这些子pȝ包括Q需要ؓ(f)新员工配备一台计机?IT 部门Q需要添加新员工的信息给其子pȝ的工资发N门,或者需要摆攑֥桌椅的设备协调部门。所以,q允怸个事件很Ҏ(gu)地触发发送到其他pȝ的许多不同通知?

(zhn)能丑և一个编排( orchestration Q模式的例子吗?

 ~排与复合服务有兟뀂复合服务就是用了其他服务的服务,是更加细_度的服务,以便处理h。编排定义了调用q些服务的流E或ơ序。?zhn)可以串行或ƈ行地调用q些服务Q编排中Ҏ(gu)都有相应的定义。通常Q它们编排服务或者实C个业务流E。例如,(zhn)有一个接受开销报表的服务,而且一旦?zhn)接受了开销报表Q它们必进行许多步骤。这些步骤包括,更新开销报表应用E序的状态,把开销报表保存到数据库中,为批准管理程序徏立一个工作Q务,然后把这个工作Q务指z理E序Qƈl该理E序发送一电(sh)子邮件。在一个经q编排的服务中,q些是(zhn)可以进行自动化的流E的所有部分。此外,关于~排的一件有的事情是,我们有一些工具可供?zhn)使用Q特别是在编排要实现一个业务流E时Q?zhn)q可以用另外的工具以一U非常直观的方式来定义该~排。例如, WebLogic Integration 中有一?BPM 工具Q它允许(zhn)可视化C用流E构Ӟ以一U非常直观而快速的方式定义(zhn)的程Q这个流E是一个可执行的业务流E,(zhn)可以把它公开为另一个服务?/P>

 (zhn)刚刚提C补偿动作Q那么对其进行跟t和试很困隑֐Q?/STRONG>

 当?zhn)要实C个流E时Q补偿动作相当重要,如果该流E自始至l没有完全执行,(zhn)的pȝ可能处于一U不一致的状态中Q因为流E中的一些步骤得C执行Q而?zhn)处于一个非常松散耦合的系l中Q?zhn)没有一个可以自动回滚这些步骤的通用事务理E序。所以,补偿动作允许(zhn)做的就是,定义撤销已完成步骤所必需的步骤,以及(qing)׃整个程无法完成而现在需要撤销的步骤。只要?zhn)的流E框架赋予?zhn)对于q行在服务器上实例的可见性,对它们进行跟t也不一定是很困隄事情。例如,?WebLogic Integration 中,(zhn)可以?WebLogic 理控制収ͼ?Integration 理控制収ͼ它可以ؓ(f)(zhn)提供对于所有运行实例的可见性,在一个给定的时刻(zhn)可以拥有数百个q行实例Q而且(zhn)可以可视化地判断某个特定实例位于流E中的哪个地方,在?zhn)的业务流E中它采用哪条\径,以及(qing)Z回滚的原因是否要调用M补偿动作?

开发h员如何在 SOA 中用横?Q?cross cutting Q模式?

横切模式是一U有的方式Q它能够在给pȝ增加功能的同时不改变现有的组件。客L(fng)或服务不必变化,(zhn)就可以增加另外的功能。在 SOA 中,(zhn)做到这一点的Ҏ(gu)是用拦截( interception Q模型。所以,(zhn)要使用一个拦截器Q它?yu)在到达后端服务或实现服务之前接受请求,而?zhn)可以对该hq行L的处理。?zhn)可以q行理工作Q或者应用安全约束,或者进行日志记录和审计。?zhn)可以通过各种方式来实现这一炏V一U常用的方式是用企业服务ȝ?web 服务理工具作ؓ(f)逻辑中心位置Q所有消息都由此l过或传入,(zhn)也可以在这个位|拦截消息,q应用这些横切关注点。在 Java 中,(zhn)还可以使用 JAXRPC q样的标准来定义拦截器或处理E序Q以便在上述位置拦截消息和应用横切关注点?

对于 SOA 所持的态度如何Q?(zhn)ؓ(f)开发h员提供了哪些解决Ҏ(gu)Q?

我们事实上关注的W一件事情是开攑ּ标准。这不仅包括应用?web services 和各U?API 标准q样的开攑ּ标准Q还涉及(qing)到帮助推动对于这些标准的标准体的改进Q以便确实有助于d企业U消息收发给 web services 。这实际上就是我们认?web services 应该发挥作用的地斏V事实上Q我们还x易用性,以及(qing)以下q种能力Q那是使开发h员能够更加高效,q从作ؓ(f) SOA 固有部分的集成的复杂性中抽离出来Q把主要_֊攑֜业务逻辑和构建应用程序本w上。第三,我们q关注以端到端的方式集成我们的^台。这意味着Q?zhn)可以?WebLogic 服务器上q行定制开发,(zhn)还拥有 WebLogic Integration 上的集成功能Q然后?zhn)可以在一个门户中公开所有这些内宏V我们已l确认,整个q_的集成性良好,q样整个q_可以共同工作,而且特别圎ͼ(zhn)拥有一个跨整个q_的、非怸致的开发模型。这对于 SOA 来说很重要,因ؓ(f)开发和集成开始融Z体。?zhn)无法做到?SOA 中进行开发的同时Q不q行某种E度的集成,而且在这些^CQ拥有一U非帔R用且一致的交互和开发方式确实相当重要?

Apache Beehive 如何适应q些内容Q?

对于 SOA 来说Q?Beehive 实际上是核心部分?Apache Beehive Z的技术最初是作ؓ(f) WebLogic workshop 的一部分而分发的。它?WebLogic Workshop 的一个运行时层。它?J2EE ~程提供高度的抽象。事实上Q?Apache Beehive 的目标是 SOA 和在 J2EE 体系中支?SOA 功能。它Z非常轻量U的单编E模?plain Java object (POJO) Q用元数据来声明性地配置q些不同的组Ӟ使其一起工作,q定义了?web services 和服务质量这L(fng)标准。在 Apache Beehive 中,各种lg都是 Java 控g——这问企业资源提供了一U非怸致的方式。控件的客户端模型十分简单;它抽象出了很多细节,例如调用 EJB Q发送消息给 JMS 队列。它允许(zhn)公开一个十分简单的接口Q这对于 SOA 很重要,对于q种耦合能够抽象Zq技术细节很重要?Java web services ?Apache Beehive 的另一个组Ӟq个lg对于在异构环境中向支?SOAP 或支?web services 的^台公开服务是很重要的。最后一个组件是 NetUI 面,q个lg允许(zhn)在(zhn)的环境和企业中利用现有的服务,让?zhn)能够Z struts L构徏 web 应用E序。它?Struts 之上的一个易用层?Apache Beehive 适合于^台的余下部分Qƈ与其很好地集成在一赗所以显Ӟ(zhn)可以?Workshop 开?Beehive 应用E序。集成?WebLogic Integration Z Beehive Q而且它的很多部分都是Z Beehive 构徏的。所以, Integration 产品中包含的~排工具允许(zhn)编排控件和控g允许(zhn)访问的一切内容,然后(zhn)就可以采用q些程Q然后在我们?WebLogic 门户中公开它们。所以,我们实际上已l关注如何诏I整个^台来提供 SOA 功能?/P>

 (zhn)的Ҏ(gu)与竞争对手相比较如何Q?

我猜惻Iq实际上应该取决于?zhn)把我们与谁进行比较。我们现在关注的有很多事情。首先是开放标准,像我开始说q的那样Q也是 web services 协议以及(qing)保我们能够获得跨^台的互操作性。这相当重要。但是还?API 标准Q以?qing)帮助确保投资保护,q对于已l{而?J2EE q希望从 J2EE 获得预期效果的h们来说甚为重要。D一个例子,我们U极投n?JCP 中,以确保我们的革新不会(x)退?Java 或者合q到 J2EE 中,而且 Apache Beehive 目正是我们采用的另一U方法的一个例子,通过采用q种Ҏ(gu)Q我们能够提供投资保护,q意味着当h们构?Beehive 应用E序Ӟ他们可以选择的部|^台现在不?x)被锁定在一U^台。我们在另一斚w也与我们的竞争对手有一点不同之处,x们实际上集中_֊放把整个q_集成到集成品、应用服务器或门户品中Q客户不必经历集成各个部分ƈ使其协同工作的过E。这些品可以直接一起工作,q过一?CD q行安装Q这减轻了客L(fng)很多l济负担。至于拥有一个跨整个q_的、非怸致的开发模型,q对?SOA 实很重要?/P>

 (zhn)一开始就提到Q围l?SOA 存在q很多营销手段Q但是ؓ(f)什么?zhn)认?f)开发h员应该关?SOA 呢?

 开发h员应该关?SOA Q是因ؓ(f)不管所有的q些营销手段Q?SOA 都具有实际意义上的优炏V?SOA 承诺使开发变得更加廉价和L。当(zhn)采?SOA Ӟ开发周期将?x)羃短,而且使用它构建的信息pȝ更加灉|Q对于不断变化的业务需求适应性更强。许多行业分析家预测Q在 4 q时间内Q绝大部分企业应用程序都?x)?SOA 原则q行构徏。所以开发h员不仅应该关心它Q而且应该自学相关知识?

对于刚开始从?SOA 的团队来_(d)一般都存在哪些陷阱Q?/STRONG>

 我认为开发h员非常善于应用新技术。所以这实际上根本不是问题。我认ؓ(f)转向 SOA 时存在的最大问题,是{而用这U方法所需要的l织变化。开发应用程序的传统方式允许开发h员只专注于他们的目。开发h员以一U非常孤立的方式工作。他们不必与开发另一个项目的开发h员交,因ؓ(f)他们没有׃n数据Q他们没有共享服务。?SOA Ӟ(zhn)实际上必须E微修改理模型Q而且(zhn)必L讨论组或者一些hQ这些h能够对企业内的所有项目进行M规划Qƈ军_哪些服务可以跨企业用,准备跨企业共享什么数据模型,{等。从很多企业C的工作方式来看,q是一个巨大的变化。我认ؓ(f)q通常?x)是Z面(f)的最大挑战?/P>

 在一些社Z 宠物商店Q?pet store Q?遭到了嘲W,q很可能是因为它试图把所有的设计模式?塞进 一个应用程序中Q而这通常是不现实的做法。这对于 SOA 蓝图来说是不?一处隐?呢?

我认的确是值得担心的地斏V开发Q何参考应用程序时Q?zhn)L?x)担心在其中攑օq多内容Q就像过Mh们对 pet store 的批评那栗我认ؓ(f)Q?pet store ?SOA 蓝图之间存在一处重要差别,?pet store 是一个相对较单的应用E序Q一个电(sh)子商?web 应用E序而已Q而他们在q个相当单的型应用E序中塞入了所有这些非常复杂而且有用的设计模式?SOA 蓝图采用了稍微不同的Ҏ(gu)。由?SOA 的本质,实际上,它更多考虑的是q家虚构公司的整?IT pȝ。因Z(zhn)打交道的是整个pȝQ?zhn)׃会(x)受限于一个应用程序中Q所以引入新的场景也容易得多。所以我认ؓ(f)Q对?SOA 蓝图来说Q这个问题的影响不大?/P>

 (zhn)如何看?web services ?SOA 之间的关联?

我认为有一点很重要Q即注意 web services ?SOA q同义语。?zhn)有时候会(x)发现和营销有关的这样一个问题,Z感到困惑Q到底是因ؓ(f)采用 SOA 而不得不使用 web services 呢,q是实际上在实现 SOA 时而碰巧用了 web services 。二者ƈ非一Ҏ(gu)术,而且也不相同?Web services ?SOA 的一w帔R要的支持技术,因ؓ(f)它基于开放标准,所以它承诺降低采用 SOA 的成本。但是它只是一U可能的实现Q而?zhn)可以使用各种不同的消息收发协议来实?SOA ?

对于未来构徏 SOA 应用E序的工作, (zhn)还有什么要ȝ的吗Q?/STRONG>

我认为开发h员应该自?SOA 的各U设计原则和设计模式Q这一点很重要。因为它是一U新的方法,需要用一些新技术,所以用这U新Ҏ(gu)带来了新的挑战。我认ؓ(f) SOA 蓝图是一个着手迎接挑战的良好L(fng)Q而且因ؓ(f)许多领域Q尤其是 web services 领域Q无时无刻都在高速发展,所以我认ؓ(f)开发h员应该及(qing)时地掌握最新技术,其要掌握那些对于构?SOA 十分重要的可用协议和工具?

 

本文地址Q?A >http://dev2dev.bea.com.cn/bbs/BEA_dev2dev_Live/man/jimrivera.jsp



飞马 2005-08-05 16:45 发表评论
]]>
վ֩ģ壺 | | | | | ȫ| ˾| ʡ| | ͼƬ| ˮ| | Ƽ| | Դ| | | Ϫ| | żҽ| | Ϫ| | | Ϫ| | | з| | ӯ| | | | ϻ| | | ʵ| ƽ| Ͼ| ƽ| Ͷ|