﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-lqxue-随笔分类-soa</title><link>http://www.blogjava.net/lqxue/category/31989.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 05 Jul 2008 15:20:36 GMT</lastBuildDate><pubDate>Sat, 05 Jul 2008 15:20:36 GMT</pubDate><ttl>60</ttl><item><title>wsdl 祥解</title><link>http://www.blogjava.net/lqxue/archive/2008/07/04/212510.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Fri, 04 Jul 2008 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/07/04/212510.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/212510.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/07/04/212510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/212510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/212510.html</trackback:ping><description><![CDATA[http://www.tutorialspoint.com/wsdl/index.htm<br />
<img src ="http://www.blogjava.net/lqxue/aggbug/212510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-07-04 10:48 <a href="http://www.blogjava.net/lqxue/archive/2008/07/04/212510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>very cool tutorialspoint</title><link>http://www.blogjava.net/lqxue/archive/2008/07/04/212509.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Fri, 04 Jul 2008 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/07/04/212509.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/212509.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/07/04/212509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/212509.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/212509.html</trackback:ping><description><![CDATA[http://www.tutorialspoint.com/<br />
<img src ="http://www.blogjava.net/lqxue/aggbug/212509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-07-04 10:47 <a href="http://www.blogjava.net/lqxue/archive/2008/07/04/212509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]SOA，现在进行时</title><link>http://www.blogjava.net/lqxue/archive/2008/06/05/206189.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Thu, 05 Jun 2008 14:40:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/06/05/206189.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/206189.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/06/05/206189.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/206189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/206189.html</trackback:ping><description><![CDATA[<div style="text-indent: 21pt" align="left">SOA现在正热得"烫手"。</div>
<div style="text-indent: 21pt" align="left">对于SOA，目前我听到有两种说法：一种讲它是"颠覆性的革命架构"，一种是"谨慎观望"。但无疑，SOA最近几年发展得非常快，各主要软件厂商纷纷高调跟进，关于SOA的报道可以说是不绝于耳。对"SOA热"，程序员们有的兴奋和期待，有的则感到困惑，最近我在金蝶中间件于广州、上海等城市举行的"Java俱乐部"上和程序员们交流时，他们或是以一种朝圣者的表情说："以前面向对象的技术过时了，SOA时代来了"，或者一再恳切地追问我："SOA到底是什么？作用是什么？" <br />
那么，SOA是什么?到底能解决什么问题、解决得怎样?我们和客户都准备好了吗?我给出的答案是"Just Processing，SOA-现在进行中"。</div>
<div style="text-indent: 21pt" align="left">SOA到底是什么？</div>
<div style="text-indent: 21pt" align="left">SOA（Service-Oriented Architecture）的定义是面向服务的架构，就是说将软件按照功能设计成一个个服务，这些服务用标准的方式定义接口、并通过标准的协议进行调用。SOA所定义的接口和调用方式是独立于编程语言和运行平台的，广义上讲SOA可以基于不同的底层技术实现，比如CORBA和Web Services。但CORBA由于过于复杂和臃肿已很少使用，所以目前所说的SOA绝大多数是基于Web Services技术实现。在Web Services的实现方式下，SOA服务的接口用XML进行定义。</div>
<div style="text-indent: 21pt" align="left">在SOA架构下，软件开发从业务流程分析开始，使用组件化业务建模的方法识别和分析各种业务模型，将各种实践融入其中，在这个基础上建立用例，用例直接产生BPEL，这些BPEL则可以被融入一个服务整合框架中，其描述了各种服务的信息，从而把ESB上的各个模块统一起来，形成一个巨大的服务仓。</div>
<div style="text-indent: 21pt" align="left">这样，SOA甚至是所有软件人员的一个梦:将中间层再进行抽离，在中间层作一个跨技术架构的元数据和业务逻辑，使之成为跨技术架构的、可长期继承、并不断积累的企业业务库和最宝贵的信息资产，也就是面向服务的组件库，而且这个服务组件库也可以被其它企业复用，且不依赖于任何一种技术架构。夸张一点说，如果所有软件企业都使用SOA架构，那么世界软件业将会发生彻底的改变。显然，这样一个框架不是一种产品，也不仅仅是一种技术，而是一种解决问题的方法论。</div>
<div style="text-indent: 21pt" align="left">SOA可能应用的两个场景及现有问题</div>
<div style="text-indent: 21pt" align="left">那么，SOA要解决的问题是什么？我认为，从技术本质上讲，SOA可能应用于两个场景：第一种是业务互通互联；第二种是封闭交易系统，即将元数据和业务逻辑抽离，形成可复用。举个例子，在第一种场景中，当不同企业之间的业务需要相互调用，这时就可能采用SOA技术；在第二种场景中，在企业内部需要将系统进行迁移时，利用SOA技术定义的原有数据和业务流程，可以很快完成。</div>
<div style="text-indent: 21pt" align="left">无疑，SOA是一个伟大的思想，它试图定义一个大家（各种软件厂商）都"认"的、都"遵循"的法则，大家都使用这样的方法来进行互联互通，从而实现无界限的联通，以及服务组件库的继承和复用，解放无效和重复劳动。打一个不那么恰当的比喻，就像人类的语言一样。SOA或许就像《圣经》中那个著名的"通天塔"的故事：人们用同一种语言交流产生的威力是如此之大，以至于他们在巴比伦几乎要修成一个"通天塔"，直达上帝所在的天庭。</div>
<div style="text-indent: 21pt" align="left">但是，在SOA应用的两个场景中，现存的问题同样也是明显的：</div>
<div style="text-indent: 21pt" align="left">第一种场景：业务互联互通，就是应用系统互联。业务互联，与其说是技术问题，不如讲是业务问题，例如ERP、CRM的异步整合，数据层面整合都不能很好将两个系统整合，SOA仅仅是一种实现工具之一，整合效果并不会好不到那里去。我们可以说，在没有其他选项之前，SOA是一种最"不坏"的方式，但它并不能解决所有的问题，实际上EAI的牵涉面很广，而我们知道，有些问题并不是单纯靠技术就能解决的。</div>
<div style="text-indent: 21pt" align="left">第二种场景：封闭交易系统，缺点是性能慢，而且基于Web Services的交易没有形成明确的规范。使用XML作信息交互比较慢是大家都承认的，性能问题将对SOA的发展造在一定的阻力。同时SOA规范本身没有完善，比如Transaction规范还在不断完善，而且Web Service多年来收效甚微。总的来说，SOA现在还处在一个发展阶段，很多标准还在制定，不同厂商间还存在不兼容的现象，因此SOA还不能说已经是一个成熟的技术，还需要时间的检验，还在"进行中"。当然，金蝶中间件作为JCP组织成员，也会推动SOA规范在J2EE平台上的实现。</div>
<div style="text-indent: 21pt" align="left">中国用户的现实选择之惑</div>
<div style="text-indent: 21pt" align="left">在憧憬SOA技术可能带来的前景之余，我们不得不回过头来冷静地说：SOA和我们大家的共同客户――中国企业还有距离。</div>
<div style="text-indent: 21pt" align="left">中国信息化进程与欧美不同，大量的基础业务系统还没建立起来，整合需求并不如想象的那么大。从我们对客户的了解，发现很少有客户有SOA的需求。简单地总结就是，互通无基础，以新建系统为主，需求并不强烈。而欧美市场大量业务系统已建立起来需要整合，从这个角度讲，SOA是适用于他们的。同时，在成功案例极少的前提下，SOA还处于培育期，新建封闭交易系统使用SOA技术还是有一定风险的。</div>
<div style="text-indent: 21pt" align="left">一项新技术需要市场的消化，大型企业出于保护企业投资，不会轻易地转移到新的技术平台；而即使像J2EE这样成熟的技术经过了这么多年的发展，也不敢说占有统治地位的市场份额。SOA还需要整个IT界的用户和供应商共同促进。</div>
<div style="text-indent: 21pt" align="left">中国信息化需要什么样的技术架构、能够接受什么样的成本价位？这不仅仅是我们的客户需要考虑，我们软件厂商要比客户考虑得更清楚、更进一步。在这个充满变数的激烈竞争市场，只有冷静务实才能生存、发展。<br />
<br />
<br />
<br />
From:http://blog.csdn.net/Apusicyuan/archive/2007/03/16/1531424.aspx</div>
<img src ="http://www.blogjava.net/lqxue/aggbug/206189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-06-05 22:40 <a href="http://www.blogjava.net/lqxue/archive/2008/06/05/206189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]解析SOA十大设计原则 公共接口要明确界限</title><link>http://www.blogjava.net/lqxue/archive/2008/06/05/206168.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Thu, 05 Jun 2008 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/06/05/206168.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/206168.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/06/05/206168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/206168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/206168.html</trackback:ping><description><![CDATA[<h1>解析SOA十大设计原则 公共接口要明确界限</h1>
<div class="dots">作者: 佚名, 　出处:CSDN,　责任编辑: 包春林,　
<div class="posted">2008-04-23 05:00</div>
</div>
<h5 style="padding-right: 8px; padding-left: 8px; font-weight: normal; padding-bottom: 8px; line-height: 20px; padding-top: 8px">　　日前国外网站报道介绍了面向服务架构(SOA)的基本原则，提出了公共接口与内部实现要有明确界限等原则。虽然这些原则并不是绝对的真理，但可作为一个应用开发参考。 </h5>
<div id="content">
<div class="guanggao"><span id="contentAdv"><br />
<script language="Javascript">
</script></span></div>
<p>　　<strong>一、明确的边界</strong></p>
<p>　　通过跨越定义明确的边界进行显式消息传递，服务得以彼此交互。有时候，跨越服务边界可能要耗费很大的成本，这要视地理、信任或执行因素而定。边界是指服务的公共接口与其内部专用实现之间的界线。服务的边界通过 WSDL 发布，可能包括说明特定服务之期望的声明。</p>
<p>　　<strong>二、服务共享和约和架构，不是类</strong></p>
<p>　　服务交互应当只以服务的策略、架构和基于合约的行为为基础。服务的合约通常使用 WSDL 定义，而服务聚合的合约则可以使用 BPEL 定义(进而，对聚合的每个服务使用 WSDL)。服务使用者将依靠服务的合约来调用服务及与服务交互。鉴于这种依赖性，服务合约必须长期保持稳定。在利用 XML 架构 (xsd:any) 和 SOAP 处理模型(可选标头)的可扩展性的同时，合约的设计应尽可能明确。</p>
<p>　　<strong>三、策略驱动</strong></p>
<p>　　尽管它往往被认为是最不为人所了解的原则，但对于实现灵活的 Web 服务，它或许是最有力的。单纯依靠 WSDL 无法交流某些业务交互要求。可以使用策略表达式将结构兼容性(交流的内容)与语义兼容性(如何交流消息或者将消息交流给谁)分隔开来。</p>
<p>　　<strong>四、自治</strong></p>
<p>　　服务是独立进行部署、版本控制和管理的实体。开发人员应避免对服务边界之间的空间进行假设，因为此空间比边界本身更容易改变。</p>
<p>　　<strong>五、采用可传输的协议格式，而不是API</strong></p>
<p>　　通常,服务提供商基于某种传输协议(例如HTTP)提供服务,而服务消费者只能通过另一种不同的协议(比如MQ)通信。因此，也许需要在服务提供商与消费者之间建立一座异步起动同步运行的连接桥梁,超越HTTP和Java Messaging Service消息服务(JMS)等协议.从技术角度讲，Java Messaging Service消息服务(JMS)并不是一种传输协议,而是一组供应商中立(vendor-neutral)的通信APIs。</p>
<p>　　<strong>六、面向文档</strong></p>
<p>　　消息被构造为&#8220;纯文本的&#8221;XML文档(换句话说，数据的格式只对XML有意义)。 消息通常用于传输业务文档，比如购买订单、发票和提单。这种交互类型与同步消息排队系统的兼容性很好，比如MQ Series、MSMQ、JMS、TIBCO、IMS等等。</p>
<p>　　<strong>七、松耦合</strong></p>
<p>　　服务之间要求最小的依赖性，只要求它们之间能够相互知晓。</p>
<p>　　<strong>八、符合标准</strong></p>
<p>　　当通过Web的服务实现时，最原始的(基本的)面向服务的架构(SOA)的模型仅仅提供了很低程度上的关于可靠性、安全性以及事务管理的标准化机制。第二代的技术条件和框架，如WS-ReliableMessaging规范、 WS-Security规范和WS-Coordination规范 (与WS-AtomicTransaction规范和WS-BusinessActivity规范相联系)，它们试图以工业标准的方式定位存在的缺陷。</p>
<p>　　<strong>九、独立软件供应商</strong></p>
<p>　　向SOA的转变正在深刻改变了经济现实。客户们会期待更合理的费用以及不必重新进行投资就能改进业务的能力。因此，独立软件供应商没有选择，只能使自己的业务更加灵活，以期让自己的客户也变得同样灵活。于是，面向服务不仅是简单的在现有的、紧耦合的、复杂的、不灵活的以及非组件化的业务功能上添加基于标准的接口。更重要的是，为了兑现SOA的承诺，独立软件供应商必须改变他们构建、打包、销售、交付、管理和支持自身产品的方式。</p>
<p>　　<strong>十、元数据驱动</strong></p>
<p>　　开发元数据本身并不是元数据驱动应用程序的本意。使用元数据来驱动服务在系统边界的传播是一个更为正确的方法。</p>
<div class="clear"></div>
<div class="guanggao"></div>
</div>
<img src ="http://www.blogjava.net/lqxue/aggbug/206168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-06-05 21:47 <a href="http://www.blogjava.net/lqxue/archive/2008/06/05/206168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>