﻿<?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-cuiyi's blog（崔毅 crazycy）-随笔分类-SOA、WebService、BPEL </title><link>http://www.blogjava.net/crazycy/category/11219.html</link><description>记录点滴 鉴往事之得失 以资于发展 </description><language>zh-cn</language><lastBuildDate>Fri, 14 Dec 2007 16:18:04 GMT</lastBuildDate><pubDate>Fri, 14 Dec 2007 16:18:04 GMT</pubDate><ttl>60</ttl><item><title>SOA绝对是忽悠人的，你信不信？（世说新语，原创）</title><link>http://www.blogjava.net/crazycy/archive/2007/10/19/154198.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Fri, 19 Oct 2007 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/10/19/154198.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/154198.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/10/19/154198.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/154198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/154198.html</trackback:ping><description><![CDATA[<p><font face="Arial">从拆字的思想看，SOA/SCA本身蕴含了无限的忽悠；</font><br />
不信，你看看SOA的解释，如同两个人对话(SOA加强了相互的了解)：<br />
路人甲：傻！(S)<br />
路人乙：哦？(O)<br />
路人乙：啊！(A)</p>
<p>Note: SOA乃唬人之宝，当厂商说客户傻（忽悠客户）的时候，客户或信或疑的应答，当真正明白过来发现已经投资无限牢牢套住，于是乎大呼：啊！<br />
</p>
<br />
SCA的解释：<br />
路人甲：傻！(S)<br />
路人乙：See？(你怎么知道的？)(C)<br />
路人甲：啊！（当然！）(A)<br />
<br />
<br />
路人甲：傻？(S)　<br />
路人甲：See？(你的明白？)(C)<br />
路人乙：啊！（愤怒！）(A)<br />
<br />
<br />
附：<br />
此言一出，江湖血腥必起；<br />
一时间，风起云涌.
<img src ="http://www.blogjava.net/crazycy/aggbug/154198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-10-19 14:10 <a href="http://www.blogjava.net/crazycy/archive/2007/10/19/154198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>构件 构件 怎么就成sca了呢？soa虚阿虚阿（乱弹）</title><link>http://www.blogjava.net/crazycy/archive/2007/07/11/129722.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Wed, 11 Jul 2007 15:31:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/07/11/129722.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/129722.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/07/11/129722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/129722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/129722.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 构件，本是一个很古老的主题，SUN最初推出javabean即是一种可视组件的萌芽，可惜如同java的动态代理的潜伏期一样，一直没有足够的人发现并重视起来。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 与此同时，另外的阵营，Boland的delphi，Microsoft的V*家族以及现在.Net家族，却不断制造着高产易用的神话。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; Java本来就是重视扩展和让涉足的人享受背后机理的语言，如同做饭而非速餐，这早已成为一个很好的说辞。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 今天，为了互操作而退出的webservice，实际就是接口的更泛化拓展；构件也从了组件的泛化延伸，成为一个极大成者。我们拥有了构件，我们也将走向了高速和易用，我们是否可以反思，当初阐释不进Microsoft阵营的冠冕堂皇理由，是否经得起构件的洗礼？<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 想到了构件，不由延伸到了sca,更不由的触及soa,从一个听不懂的概念炒作历经几年之久走过多个版本的演化，成为今天的方法论和架构方法标准工具。曾经一味的热情投入着，呼吁呐喊着，从为集成而生的理解到当今稍微成熟的soa本质既业务敏捷，也就是变化的需求；依然没有逃出任何技术产生的直接机理：适应需求的变化。换句话说，一切技术思想方法论无不是为更好的适应需求的变化而生。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 那中间的esb等是否真的是过度的羔羊？如果诸如IBM，BEA同样拥有雄厚的ESB产品线的话，今天的soa定当别论；历史不可假设，演化不可逆转，soa的路也得益于此俩巨头的&#8220;盲区&#8221;，否则tibco必然不会让出esb头把交椅。<br><br>&nbsp;&nbsp;&nbsp; 那soa是否真的可以实现业务敏捷？摸着头皮思考，良久良久，受个人阅历（刚有不足3个月工作经验）之限，虽阅读各家之言，然不由闷笑。构件显然不是，因为架子在具体细节依然离开不具体实现技术，一旦涉足技术就无法避免软件工程的延迟等诸多风险因素，业务敏捷谈何而来？如果说加强了业务人员和开发人员的沟通，亦为必然。不认为有了一个可以看得外貌就可以确定一些理解上的盲区，能画出来的大多自然是彼此不存在疑惑的地方，但是很多地方亦是模棱区，产品或者说项目不是儿戏，不存在不可确定的东西，是就是非就非，最后落实的沟通是最有效的方式，也可能是迭代感知，这些都不是soa之大手笔。<br><br>&nbsp;&nbsp;&nbsp; 那soa为何会走过如此多的路，最后走向了一个&#8220;无就是有有就是无，更多的成为道家的境界呢？&#8221;我觉得就是因为解决不了定位的目标，那归结为一个无限大的话题---本来就是要正面的主题，肯定不会错，改进多少年，反正都是在解决这个目标，这就是soa。<br><br>&nbsp;&nbsp; 个人一时乱弹，友善交流，请勿攻击漫骂之。 
<img src ="http://www.blogjava.net/crazycy/aggbug/129722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-07-11 23:31 <a href="http://www.blogjava.net/crazycy/archive/2007/07/11/129722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>soa杂感系列之五：较为冷静的文（URL） </title><link>http://www.blogjava.net/crazycy/archive/2007/05/20/118736.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sun, 20 May 2007 11:55:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/05/20/118736.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/118736.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/05/20/118736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/118736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/118736.html</trackback:ping><description><![CDATA[<p align=left>1 <u><font color=#800080>SOA，现在进行时&nbsp;&nbsp; （袁红岗</font></u><br>2<a href="http://searchwebservices.techtarget.com.cn/comment/302/3333802.shtml">SOA，热话题下冷思考</a>（畅享网）<br>3<u><font color=#800080>我对SOA的反思：SOA架构的本质</font></u> （银狐999）<br>4 <font color=#0000ff>参加&#8220;SOA产业链及企业软件趋势研讨会&#8221;的感想</font> （银狐999）<br>5<br>&nbsp;</p>
<img src ="http://www.blogjava.net/crazycy/aggbug/118736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-05-20 19:55 <a href="http://www.blogjava.net/crazycy/archive/2007/05/20/118736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>soa杂感系列之四：soa的新认识 （原创）</title><link>http://www.blogjava.net/crazycy/archive/2007/05/20/118709.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sun, 20 May 2007 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/05/20/118709.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/118709.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/05/20/118709.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/118709.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/118709.html</trackback:ping><description><![CDATA[&nbsp; &nbsp;作为技术爱好者的我，常常从技术的角度考虑问题，也往往陷入技术的细节，而忽略了大局观。<br />
<br />
&nbsp;&nbsp;当不断阅读业界的文，尤其是soa相关分析，我日益感觉如是考虑问题的弊端，或许这也是开发者（junior, senior software developer）与系统架构师（system designer and architecture）的区别。前关心技术细节和技术的深度；后关心技术的解决问题面和技术的宽度。<br />
<br />
&nbsp; 回头再思考soa，才发现通过技术角度几乎无法理解soa的本质和初衷。web service的铁三角：服务提供者、服务消费者、服务注册中心。 soa的铁三角：数据、业务构件、组合。技术我门关注了web service,一种很好的分布式系统、异构系统间互联互通的解决方案，也是一种很好的面向接口的设计思想；sca sdo则因为web service的不能描述服务间依赖和服务组合而提出（附注1），也很好的体现了所谓的业务数据的组织。仅此而已，再多一点，esb负责消息路由和交互功能也隐含于sca的部署描述符来完成，esb的事件触发机制.....；或许我们能够很好的理解技术，正如架构师和高级开发人员区别所体现，我们对技术的初衷和目地有清晰的了解么？我们能够针对某一个目标选择出合适的技术来么？我惭愧的感觉自己的力不从心。<br />
<br />
&nbsp; 依然以soa为例来说这个问题。soa和web servie的初衷并不完全吻合，如果说web service是soa实现手段也有点牵强附会。web service初衷是什么？web service为解决互联互通的分布式应用的互操作而生；而soa并不是为互联互通的目标，而是为业务敏捷性而生。也道出soa实际本质背后的业务模型和业务数据；它要使得业务具有敏捷性，必然要求技术实现和业务脱离；这样业务才能够快速只管有效的表达和示意；相应，辅助手段也就有了要求，就是构件，业务负责人就可以如同堆积木般组织业务，技术人员拿到业务模型后开发就是，新需求或者业务需要就是变更和重组业务，对业务模型进行重组和重构，就是soa提供的有效手段 。<br />
<br />
&nbsp; 作为开发者的我，往往会因为一种技术的热门而去跟踪或者拼命想用于项目，但是它真的被需要么？真的是必要的么？是预期资源可控的么？没有去想，怕的是被潮流或者趋势淘汰，哪怕并不合理，也不理会性能和效率。你是否也具有此问题呢？<br />
<br />
&nbsp; 所以理智的对待问题，在时间、团队、资源内考虑技术的选择，从技术初衷以及技术的优缺点去选择技术，从宏观上理智的把控，而不是人云亦云。譬如大家批判ejb，因为ejb的初衷应用背景往往被滥用。这也符合spring创始人的&#8220;循环设计&#8221;理念。<br />
<br />
附注1：<br />
组合服务：<br />
1）bpel也是组合服务，但我更觉得他用于流程控制；<br />
2）web servie的不足：定位于接口的暴露，但是不解决服务组合问题；<br />
<br />
&nbsp; 或许你可以说，设计一个类，包含所有需要的业务，然后把类发布成服务。可是需要组合得业务往往来源于不同系统，异构即不同语言，你如何表达于一个类呢？<br />
&nbsp; 或许你又可以说，设计一个类，里面聚合很多服务，然后把类再次发布为服务，这部也是一个聚合服务么？<br />
&nbsp; 对，是很好，但是如果业务再次变化呢？sca或许好一些，通过配置描述符。此处留下一点不确定，希望大家讨论。
<img src ="http://www.blogjava.net/crazycy/aggbug/118709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-05-20 17:20 <a href="http://www.blogjava.net/crazycy/archive/2007/05/20/118709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>soa杂感系列之三：soa究竟为何物？</title><link>http://www.blogjava.net/crazycy/archive/2007/05/12/116921.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Fri, 11 May 2007 19:24:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/05/12/116921.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/116921.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/05/12/116921.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/116921.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/116921.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 传统的MVC对于单个应用来说非常成熟，这是实践中证明的。对于大多数独立的应用和系统来说MVC很胜任。<br>&nbsp;&nbsp;&nbsp; ----传统技术和架构的合理性。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 然而，当企业中的应用规模不断扩大，从几个到几十个甚至上百个的时候，靠若干MVC架构的不断叠加能够构造出一个适合企业级的架构么？所以才出现了Portal这样的新技术来迎接这样的挑战，但是Portal的关注点更靠近与展现端，在底端通讯方面不能给出更好的答案。所谓架构是要一套整体解决方案，这样的架构所要解决的问题简而言之就是两个特点：数目或规模大、异构应用交互。<br>&nbsp;&nbsp;&nbsp; ----这是WebService的由来。<br>&nbsp;
<p align=left>&nbsp;&nbsp;&nbsp; WSDL 在增强应用之间的可连接性以及互操作性方面迈出了一大步。然而，WSDL只关注了服务接口，它并不提供描述一个服务所依赖的其它服务，以及这个服务所需要使用的配置策略和服务之间的依赖关系。 </p>
<p align=left>&nbsp;&nbsp;&nbsp; 单独通过WSDL 很难实现服务之间的组合调用。<br>SCA比WSDL走的更远的方面是定义了一个服务组件模型以及一个服务组装模型。<br>&nbsp;&nbsp;&nbsp; 服务模型提供了比WSDL更多的功能，它允许服务开发者不单定义服务的接口而且还可以定义 这个服务和其他服务的依赖关系，以及这些交互（事务，安全，以及可靠 传输）之间的策略还有服务所可能提供的配置功能。<br></p>
<p>&nbsp;&nbsp;&nbsp; ----这是SCA的由来。<br></p>
<p>&nbsp;&nbsp;&nbsp; 过去我们所采用的技术中，不管是.NET也好，J2EE也好，它们都有基于自身平台下的规范，比如在J2EE环境下，我们就会通过JDBC、Entity Bean这样的方式访问数据库或者其它数据源;而在.NET下同样有类似ADO这样的方式来访问各种不同的数据源。<br>&nbsp;&nbsp;&nbsp; 这里面的问题在于，平台透露了太多的技术细节，程序员需要了解很多相关的内容，比如他需要创建一个JDBC或ODBC的数据源，再利用这些规范所提供出来的编程接口来想办法得到数据源中的数据，为达成这个目标，程序员还需要去做对象-关系映射，以实现对象到关系数据库或者与之相反的数据转换。<br>&nbsp;&nbsp;&nbsp; 目前有一些技术可以用来解决这些问题，比如前段时间在Java社群中一直都非常流行的Hibernate等，诸如此类的方法和工具很多，他们都是用来协助程序员处理上述工作的。<br>&nbsp;&nbsp;&nbsp; 但无论如何，你都无法逃避地要看到很多这些方法中非常底层的技术细节，而且，程序员需要学习所有这些不同的技术，了解它们适应于什么情况，处理各种情况下的不同技术细节。<br>&nbsp;&nbsp;&nbsp; 事实上，程序员需要抽象层次更高的东西，比如业务数据对象(Business Object)以及它内部各种细粒度数据对象之间的关联，这是可以用一致、通用的方式来表示和操作的。有了抽象层次更高的模型，程序员就可以通用的方式来定义和访问业务数据，从而以统一的方式来描述和访问不同的数据源，降低对程序员技能的要求，提高生产率，更容易在不同的应用环境交换。<br>&nbsp;&nbsp;&nbsp; 这样，不管是Java或者C++语言描述下，程序员都不必去了解平台上的技术细节，用一个XML Schema描述这样的通用、简单的的业务数据模型，然后在运行将对象持久化到你的关系数据库、XML或者其它数据源中。</p>
<p>&nbsp;&nbsp;&nbsp; ----这是SDO的由来。<br><br>&nbsp;&nbsp;&nbsp; SOA提供了一种很好的改变现有业务流程模式的途径，成功实施SOA项目的关键在于分析重点、减低风险，给出企业真正需要的功能模块。本质上讲，SOA并不是一种新技术，它仅仅是一种系统设计/规划模式，甚至可以说，只是一种现有业务流程重组转换模式。<br>&nbsp;&nbsp;&nbsp;更直接地说，有一种<strong>需求</strong>变得越来越明显：业务需要集成系统，并允许消费者利用基于标准的方法访问服务。<br>&nbsp;&nbsp;&nbsp; ----SOA本义<br><br></p>
<p>&nbsp;简单的讲，SOA就是将现有的一些功能模块打包成独立的程序包，命名为&#8220;服务&#8221;模块。对于这些服务模块，需要对其接口进行良好定义，使得其他的应用系统可以使用&#8220;拿来主义&#8221;，方便的使用这些服务模块。通过创建服务模块库，将所建立的模块集中到模块库中，这样，利用库中的服务模块，可以方便的构建出所需要的应用系统，<br>&nbsp;&nbsp;&nbsp; 面向服务的体系结构本质上来说是一种具有特殊性质的体系结构，它由具有互操作性和位置透明的组件集成构建并互连而成。<br>&nbsp;&nbsp;&nbsp; 基于SOA的企业系统架构通常都是在现有系统架构投资的基础上发展起来的，我们并不需要彻底重新开发全部的子系统; SOA可以通过利用当前系统已有的资源(开发人员、软件语言、硬件平台、数据库和应用程序)来重复利用系统中现有的系统和资源。<br><font size=2>&nbsp;&nbsp;&nbsp; ----&nbsp;SOA和现实及技术的关系&nbsp;<br><br><br>&nbsp;&nbsp;&nbsp; 软件企业的产品开发和营销必须两眼紧盯着市场需求，产品开发要和市场人员紧密结合，找到关键客户普遍而又重要的共性问题。<font size=3><span style="BACKGROUND-COLOR: #999999">产品源于市场，服务于市场，研究技术是为了更好地解决客户的问题</span></font><font size=2>。<br></font><br>&nbsp;&nbsp;&nbsp; 技术是手段，附以方法论，形成BEST PRATICE，驱使的目标或目的才是关键<br>&nbsp;&nbsp;&nbsp; 目前国内大肆渲染的soa(sca,sdo)等，无非是手段，真正能派上用场的场合确实有，但是是大多鼓吹或爱好者所罕遇的。<br>&nbsp;&nbsp;&nbsp; 研究技术是为了更好的解决客户的问题，这便是技术的目的！<br>&nbsp;&nbsp;&nbsp; -----技术的目的<br></font></p>
<img src ="http://www.blogjava.net/crazycy/aggbug/116921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-05-12 03:24 <a href="http://www.blogjava.net/crazycy/archive/2007/05/12/116921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>soa相关大杂记(reference to a lot articles)</title><link>http://www.blogjava.net/crazycy/archive/2007/05/06/115492.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 05 May 2007 19:22:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/05/06/115492.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/115492.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/05/06/115492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/115492.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/115492.html</trackback:ping><description><![CDATA[<ul>
    <li>UML主要理论成果是：统一面向对象的基本概念，并引进了许多新的概念，认为软件开发的过程实质上是从抽象的模型逐步细化，过渡到具体的实现，其中间的每个阶段都是实现了某一抽象模型，UML为此提供了建立模型的工具。
    <li><strong>粗粒度服务接口</strong>
    <p><span style="BACKGROUND-COLOR: #999999">粗粒度服务提供一项特定的业务功能，而细粒度服务代表了技术组件方法。</span><strong>举个例说明</strong>最为清楚<strong>:</strong>向计费系统中添加一个客户是典型的粗粒度服务，而你可以使用几个细粒度服务实现同一功能，如：将客户名加入到计费系统中，添加详细的客户联系方式、添加计费信息等等。<br><br><span style="BACKGROUND-COLOR: #999999">采用粗粒度服务接口的<strong>优点</strong>在于使用者和服务层之间不必再进行多次的往复，一次往复就足够</span>。Internet环境中有保障的TCP/IP会话已不再占据主导、建立连接的成本也过高，因此在该环境中进行应用开发时粗粒度服务接口的优点更为明显。<br><br>除去基本的往复效率，事务稳定性问题也很重要。在一个单独事务中包含的多段细粒度请求可能使事务处理时间过长、导致后台服务超时，从而中止。与此相反，从事务的角度来看，向后台服务请求大块数据可能是获取反馈的唯一途径。</p>
    <li>
    <p><font color=#000080>Code First vs WSDL Frist</font> 如果要构建一个Web Services，CXF提供了两种构建方式一个是Code First，另一个WSDL First。接触过WSDL的朋友应该都有这样的感觉，WSDL虽然是用XML来进行描述的，但是如果让你在不借助任何工具的情况下写一个正确的WSDL，或者是改正一个错误的WSDL是很难的。Code First可以说是为我们提供了一个不错的选择。<br><br>但是Web Services的Best Practies并不推荐Code First这一Web Services的构建方式。原因是什么呢？<br><br>这是因为我们在使用Code First构建方式时很少考虑到Web Services之间的交互是以文档方式进行（这样可以大大提高Web Services的互交互性），如果是使用Code First来构建WSDL信息，在描述描述交互信息的XML Schema都是以我们的Code中定义的类型信息来生成的，这样就可能会暴露一些比较细粒度的信息。同时大家知道不同的语言（C＋＋，Java， C＃，PHP）对XML Schema映射是各不相同的，如果我们Code中定义的类型很特殊，就可能产生出一个不能互操作的现象。<br><br>所以Best Practies建议你在创建Web Services从交互的消息Schema入手，构建一个中间层来提供一个比较粗粒度的描述，这样可以比较好的解决Web Services的互交互问题。</p>
    <li>
    <p><strong>分级</strong></p>
    <p>一个关于粗粒度服务的争论是此类服务比细粒度服务的重用性差，因为粗粒度服务倾向于解决专门的业务问题，因此通用性差、重用性设计困难。解决该争论的方法之一就是允许采用不同的粗粒度等级来创建服务。这种服务分级包含了粒度较细、重用性较高的服务，也包含粒度较粗、重用性较差的服务。<br><br>在服务分级方面，须注意服务层的公开服务通常由后台系统（BES's）或SOA平台中现有的本地服务组成。因此允许在服务层创建私有服务是非常重要的。正确的文档、配置管理和私有服务的重用对于IT部门在SOA服务层快速开发新的公开服务的能力具有重要影响。</p>
    <li>
    <p><strong>松散耦合</strong></p>
    <p>SOA具有&#8220;松散耦合&#8221;组件服务，这一点区别于大多数其他的组件架构。该方法旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。<br><br>服务提供者和服务使用者间松散耦合背后的关键点是服务接口作为与服务实现分离的实体而存在。这是服务实现能够在完全不影响服务使用者的情况下进行修改。<br><br>大多数松散耦合方法都依靠基于服务接口的消息。基于消息的接口能够兼容多种传输方式（如HTTP、JMS、TCP/IP、MOM等）。基于消息的接口可以采用同步和异步协议实现，Web服务对于SOA服务接口来讲是一个重要的标准。<br><br>当使用者调用一个Web服务时，被调用的对象可以是CICS事务、DCOM或CORBA对象、J2EE EJB或TUXEDO服务等，但这<strong>与服务使用者无关</strong>。底层实现并不重要。<br><br><span style="BACKGROUND-COLOR: #999999">消息类Web服务通常是松散耦合和文档驱动的，这要优于与服务特定接口的连接</span>。当客户调用消息类Web服务时，客户通常会发送的是一个完整的文档（如采购订单），而非一组离散的参数。Web服务接收整个文档、进行处理、而后可能或者不会返回结果信息。由于客户和Web服务间不存在紧密耦合请求响应，消息类Web服务在客户和服务器间提供了更为松散的耦合。</p>
    <li>
    <p><font face=Arial><strong>明确的边界<br></strong>通过跨越定义明确的边界进行显式消息传递，服务得以彼此交互。有时候，跨越服务边界可能要耗费很大的成本，这要视地理、信任或执行因素而定。<span style="BACKGROUND-COLOR: #c0c0c0">边界是指服务的公共接口与其内部专用实现之间的界线。</span>服务的边界通过 WSDL 发布，可能包括说明特定服务之期望的声明。</font></p>
    <li>
    <p><strong>精确定义的服务接口</strong></p>
    <p>服务是由提供者和使用者间的契约定义的。<strong>契约规定了服务使用方法及使用者期望的最终结果</strong>。此外，还可以在其中规定服务质量。此处需要注意的关键点是，<span style="BACKGROUND-COLOR: #999999">服务契约必须进行精确定义</span>。<br><br>META将SOA定义为：&#8220;一种以通用为目的、可扩展、具有联合协作性的架构，所有流程都被定义为服务，服务通过基于类封装的服务接口委托给服务提供者，服务接口根据可扩展标识符、格式和协议单独描述。&#8221;该定义的最后部分表明在<strong>服务接口和其实现之间有明确的分界</strong>。</p>
    <li>
    <p><font face=Arial>&nbsp;<strong>面向文档</strong><font face=Arial><br>消息被构造为&#8220;纯文本的&#8221;XML文档（换句话说，数据的格式只对XML有意义）。 消息通常用于传输业务文档，比如购买订单、发票和提单。这种交互类型与同步消息排队系统的兼容性很好，比如MQ Series、MSMQ、JMS、TIBCO、IMS等等。</font></font><font face=Arial><font face=Arial>&nbsp;</p>
    <li>
    <p><strong style="COLOR: #ff0000">什么是SCA ，它试图解决什么样的问题？</strong><br><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">WSDL 在增强应用之间的可连接性以及互操作性方面迈出了一大步。<br><br>然而，WSDL只关注了服务接口，它并不提供描述一个服务所依赖的其它服务，以及这个服务所需要使用的配置策略和服务之间的依赖关系。</span></p>
    <p style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">单独通过WSDL 很难实现服务之间的组合调用。</p>
    <p><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">SCA比WSDL走的更远的方面是定义了一个服务组件模型以及一个服务组装模型。<br><br>服务模型提供了比WSDL更多的功能，它允许服务开发者不单定义服务的接口而且还可以定义 这个服务和其他服务的依赖关系，以及这些交互（事务，安全，以及可靠 传输）之间的策略 还有服务所可能提供的配置功能</span></p>
    <li>
    <p><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99"></span>&nbsp;<span lang=EN-US><font face="Times New Roman">SDO</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">规范则负责解决如何在异种服务间交换数据。它定义了一套中立的数据结构，目前有</span><span lang=EN-US><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的具体语言规范</span><font face="Times New Roman"> </font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">规范解决了</span><span lang=EN-US><font face="Times New Roman">Java Bean</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US><font face="Times New Roman">SDO</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的映射，</span><span lang=EN-US><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">规范解决了</span><span lang=EN-US><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类、结构体和</span><span lang=EN-US><font face="Times New Roman">SDO</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的映射。</span><span lang=EN-US><o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; </font></font><span style="BACKGROUND-COLOR: #ffcc99">SCA主要是针对在面向服务的计算环境里，组件的实现方法。同时，它强调了这些组件与现有的平台，组件之间的关联，并描述怎样通过已有的技术、平台甚至于现有的组件来实现面向服务组件。另外，在将这些服务组件实现以后，它们的接口以及这些接口的语义是怎样描述的。<o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; 其实，新的组件描述应该是技术独立、平台独立、语言独立的，也就是说它是一个开放的规范，这样就可以让很多IT厂商在不同的平台上用不同技术和语言来参考和实现这些技术。除此之外，面向服务的组件需要相互之间的交互，<span style="BACKGROUND-COLOR: #cc99ff">这种交互应该是松耦合的，也就是说需要打破过去那种紧耦合的现象。因为不管是.NET、J2EE还是更早的CORBA等技术，它们在支持分布式计算时，其组件往往和平台、语言以及实现技术紧密相关</span>。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　<o:p></o:p></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;<span style="BACKGROUND-COLOR: #ffcc00"> 过去，如果一个组件要调用另外一个组件的功能，它需要知道后者的接口在什么位置，使用什么协议和消息格式，这往往与其实现技术有直接的关系，所以技术、平台、语言和位置等各种各样的因素的透明性对于组件之间的交互就是非常重要的一件事情了，而SCA恰恰就规定了这一部分的内容。</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; 过去我们所采用的技术中，不管是.NET也好，J2EE也好，它们都有基于自身平台下的规范，比如在J2EE环境下，我们就会通过JDBC、Entity Bean这样的方式访问数据库或者其它数据源;而在.NET下同样有类似ADO这样的方式来访问各种不同的数据源。这里面的问题在于，平台透露了太多的技术细节，程序员需要了解很多相关的内容，比如他需要创建一个JDBC或ODBC的数据源，再利用这些规范所提供出来的编程接口来想办法得到数据源中的数据，为达成这个目标，程序员还需要去做对象-关系映射，以实现对象到关系数据库或者与之相反的数据转换。目前有一些技术可以用来解决这些问题，比如前段时间在Java社群中一直都非常流行的Hibernate等，诸如此类的方法和工具很多，他们都是用来协助程序员处理上述工作的。<span style="COLOR: red">但无论如何，你都<strong>无法逃避</strong>地要看到很多这些方法中<strong>非常底层的技术细节</strong>，而且，程序员需要学习所有这些不同的技术，了解它们适应于什么情况，处理各种情况下的不同技术细节。<strong style="BACKGROUND-COLOR: #00ffff">事实上，程序员需要抽象层次更高的东西，比如业务数据对象(Business Object)以及它内部各种细粒度数据对象之间的关联</strong>，<span style="BACKGROUND-COLOR: #ffcc99">这是可以用一致、通用的方式来表示和操作的</span>。</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ff99cc">有了抽象层次更高的模型，程序员就可以通用的方式来定义和访问业务数据，<strong>从而以统一的方式来描述和访问不同的数据源，降低对程序员技能的要求，提高生产率</strong>，更容易在不同的应用环境交换。<o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　这样，不管是</span><span lang=EN-US><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者</span><span lang=EN-US><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语言描述下，程序员都不必去了解平台上的技术细节，用一个</span><span lang=EN-US><font face="Times New Roman">XML Schema</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">描述这样的通用、简单的的业务数据模型，然后在运行将对象持久化到你的关系数据库、</span><span lang=EN-US><font face="Times New Roman">XML</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者其它数据源中。</span><span lang=EN-US><o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的目标有很多，从某种程度上讲</span><font face="Times New Roman"> <span lang=EN-US>SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看起来好像是</span><font face="Times New Roman"> <span lang=EN-US>J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一把多功能&#8220;瑞士军刀&#8221;，因为它包含的特性可实现多种不同种类的功能，基本来讲，</span><span lang=EN-US><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及其相关的技术设计有以下五大主要专题</span><span lang=EN-US><font face="Times New Roman">:<o:p></o:p></font></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　1）简化数据访问</span><span lang=EN-US><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一个目标是提供对多种企业信息系统</span><font face="Times New Roman"> <span lang=EN-US>(EIS) </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的统一的数据访问，包括数据库、遗留应用程序</span><span lang=EN-US><font face="Times New Roman">(</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span><font face="Times New Roman"> <span lang=EN-US>JCA)</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US><font face="Times New Roman">XML </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者是</span><font face="Times New Roman"> <span lang=EN-US>Web </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务数据源。通过使用</span><font face="Times New Roman"> <span lang=EN-US>SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一种独特而简单的模型，应用程序摆脱了使用多种</span><font face="Times New Roman"> <span lang=EN-US>API </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和框架进行数据访问的复杂工作。</span><span lang=EN-US><o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　2）数据提取</span><span lang=EN-US><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span><font face="Times New Roman"> <span lang=EN-US>SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后，数据的表示是独立于其数据源的，它采用了一种叫做</span><font face="Times New Roman"> <span lang=EN-US>Domain Store </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><font face="Times New Roman"> <span lang=EN-US>J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式，这种级别的数据提取有很多优点，例如使数据操作变得更容易，实现了不同层之间的松耦合。</span><span lang=EN-US><o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　3）数据操作</span><span lang=EN-US><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一旦检索到信息后，</span><span lang=EN-US><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会提供一种统一的编程语言进行数据操作，简单的说，就是通过使用</span><font face="Times New Roman"> <span lang=EN-US>API </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及其接口，</span><span lang=EN-US><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">客户机可以读取数据和修改数据。</span><span lang=EN-US><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为此提供了连接和断开连接的两种模型。</span><span lang=EN-US><o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　4）数据传输</span><span lang=EN-US><font face="Times New Roman">:SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有一部分概念是关于传输对象</span><font face="Times New Roman"> <span lang=EN-US>(Transfer Object) </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和传输对象组装程序</span><font face="Times New Roman"> <span lang=EN-US>(Transfer Object Assembler) </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式的。数据封装到</span><font face="Times New Roman"> <span lang=EN-US>SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象中后，它就可以在</span><font face="Times New Roman"> <span lang=EN-US>J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">层间高效地传输。</span><span lang=EN-US><o:p></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　5）设计模式的采用</span><span lang=EN-US><font face="Times New Roman">:SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一个关键目标是鼓励大家采用公用的</span><font face="Times New Roman"> <span lang=EN-US>J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式，这也是</span><font face="Times New Roman"> <span lang=EN-US>SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">体系结构以一些广为人知的模式为基础的原因，例如传输对象</span><font face="Times New Roman"> <span lang=EN-US>(Transfer Object)</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、数据访问对象</span><font face="Times New Roman"> <span lang=EN-US>(Data Access Object)</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、传输对象组装程序和</span><font face="Times New Roman"> <span lang=EN-US>Domain Store</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等。如果使用了</span><font face="Times New Roman"> <span lang=EN-US>SDO</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，应用程序就可以从这些经过了验证的设计策略中受益，从而可以推动分层技术和松耦合的发展。</span></p>
    </li>
</ul>
<img src ="http://www.blogjava.net/crazycy/aggbug/115492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-05-06 03:22 <a href="http://www.blogjava.net/crazycy/archive/2007/05/06/115492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>soa杂感系列之二：SCA&amp;SDO存在的必要性是什么呢？疑惑中获得较好的文章 （引用）</title><link>http://www.blogjava.net/crazycy/archive/2007/05/06/115491.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 05 May 2007 18:40:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/05/06/115491.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/115491.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/05/06/115491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/115491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/115491.html</trackback:ping><description><![CDATA[<p>转自:http://jnn.blogbus.com/&nbsp;</p>
<p><br>最近我在做有关ESB的开发工作，发现我们的产品（开源的Celtix&nbsp; <a href="http://celtix.objectweb.org/">http://celtix.objectweb.org</a>） 要支持JBI和SCA两个标准。这让我困惑了好久，JBI和SCA有什么区别呢？</p>
<p>前几天好好在网上收罗了一番，现在把收获到的东西和大家分享一下：</p>
<p>JBI definition <a href="http://www.theserverside.com/news/thread.tss?thread_id=35053">http://www.theserverside.com/news/thread.tss?thread_id=35053</a></p>
<p>SCA 与JBI的区别 <a href="http://azur.typepad.com/bpel/2005/12/sca_jbi_and_mor.html">http://azur.typepad.com/bpel/2005/12/sca_jbi_and_mor.html</a></p>
<p>上面的链接有详细的讨论，我简单整理了一下。</p>
<p>JBI 的由来</p>
<p>Java One 2005 had a very heavy emphasis on JSR-208, Java Business <br>Integration. However, he says, "there seemed to be some folks with <br>confused looks on their faces in some JBI talks." As a response, he's <br>written a blog entry on what JBI actually is <br>&lt;<a href="http://radio.weblogs.com/0112098/2005/07/07.html#a530">http://radio.weblogs.com/0112098/2005/07/07.html#a530</a>&gt;.</p>
<p>JBI是提供了一些简单的API定义， 这些定义包括 Normalized<br>Message Service , 在一个Router组件，以及一个管理模型用来管理服务<br>的部署集成，例如&nbsp; routing engines, BPEL engines, rule systems, transformation engines </p>
<p>JBI提供了一个逻辑的XML消息网络， 这一网络能够很容易的映射到<br>HTTP, email 和 JMS/MOM ，并很方便地适应遗留系统，二进制地传输，<br>和RPC系统（EJB和CORBA)。 JBI可以看做是对JMS的更高层次的逻辑<br>抽象，并提供了不同的消息交换方式（ 单步， 请求应答等）</p>
<p>&nbsp;</p>
<p><strong style="COLOR: #ff0000">什么是SCA ，它试图解决什么样的问题？</strong><br><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">WSDL 在增强应用之间的可连接性以及互操作性方面迈出了一大步。<br><br>然而，WSDL只关注了服务接口，它并不提供描述一个服务所依赖的其它服务，以及这个服务所需要使用的配置策略和服务之间的依赖关系。</span></p>
<p style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">单独通过WSDL 很难实现服务之间的组合调用。</p>
<p><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">SCA比WSDL走的更远的方面是定义了一个服务组件模型以及一个服务组装模型。<br><br>服务模型提供了比WSDL更多的功能，它允许服务开发者不单定义服务的接口而且还可以定义 这个服务和其他服务的依赖关系，以及这些交互（事务，安全，以及可靠 传输）之间的策略 还有服务所可能提供的配置功能。</span></p>
<p>一个SCA模型对等于一个SOA项目，模型允许开发者组装一组服务组件，解决引用依赖和使用策略。这是一个很大的进步，因为当前的SOA平台需要开发者自己获取那些私有的服务部署引用，甚至有时要在他们的服务实现中写hard code.</p>
<p>&nbsp;</p>
<p>SCA与JBI的区别</p>
<p>SCA的美丽之处在用它关注的重点只是SOA开发者所看到和接触到的。 <br>SCA并没有关注用来执行SCA模块的runtime是如何构架的。 <br>这个runtime可以实现为一个将所有的SCA服务组件编译成为Java classes的丑陋的单一服务，或者是一组模块化的引擎（每个组件一个的那种），这些引擎可以通过一个企业服务总线来进行通讯。</p>
<p>JBI从另一个方面来说就是一组关注创建一个开发的，可扩这的以及标准组件的企业服务总线。 这样它的内核是和SCA有一些重合的地方。同时两者之间也存在互补的机制。</p>
<p>说它们互补，为什么不把他们绑定在一起呢。这里有两方面的原因。<br>第一个原因 是JBI关注的是如果将一组引擎组装并运行 于一个JVM中。 相反SCA在另一方面并不将一个模块约束单个JVM中。 一个SCA模块可以执行在一个JVM中，同时它也可以很方便的将这些引擎部署在不同的进程甚至是不同的节点上。<br>第二个原因 是SCA不但支持Java而且还支持C，在今后也许还会支持C#,php。 而JBI只是SCA的一个实现方式，而不是唯一的选择。<br></p>
<p><br>====================================================<br>多少年来，Three Tier的架构似乎已经成为了教科书式的软件体系范本。它不断地提高软件灵活性和高聚合性的，时至今日，当软件复杂度更上一个数量级的时候，这种体系也开始孕育又一次重生。这就是最近的Buzz Words: SOA，也即SCA + SDO </p>
<p>　　受CHRIS在BLOG上所托，稍微关注了一下这方面的。</p>
<p>　　其实SDO已经有比较长的历史了，IBM去年就在从事该规范相关的开发。</p>
<p>　　而SCA相对来说更新鲜一些，主要是针对在面向服务的计算环境里，组件的实现方法。同时，它强调了这些组件与现有的平台，组件之间的关联，并描述怎样通过已有的技术、平台甚至于现有的组件来实现面向服务组件。另外，在将这些服务组件实现以后，它们的接口以及这些接口的语义是怎样描述的。其实，新的组件描述应该是技术独立、平台独立、语言独立的，也就是说它是一个开放的规范，这样就可以让很多IT厂商在不同的平台上用不同技术和语言来参考和实现这些技术。</p>
<p>　　除此之外，面向服务的组件需要相互之间的交互，这种交互应该是松耦合的，也就是说需要打破过去那种紧耦合的现象。因为不管是.NET、J2EE还是更早的CORBA等技术，它们在支持分布式计算时，其组件往往和平台、语言以及实现技术紧密相关。</p>
<p>　　过去，如果一个组件要调用另外一个组件的功能，它需要知道后者的接口在什么位置，使用什么协议和消息格式，这往往与其实现技术有直接的关系，所以技术、平台、语言和位置等各种各样的因素的透明性对于组件之间的交互就是非常重要的一件事情了，而SCA恰恰就规定了这一部分的内容。</p>
<p>　　另以方面，SDO其实与SCA是一对具有对应关系的规范。我早先就说过:软件=服务+数据。SCA更加关注业务逻辑，而SDO则更侧重于业务数据。</p>
<p>　　<span style="COLOR: #0000ff">过去我们所采用的技术中，不管是.NET也好，J2EE也好，它们都有基于自身平台下的规范，比如在J2EE环境下，我们就会通过JDBC、Entity Bean这样的方式访问数据库或者其它数据源;而在.NET下同样有类似ADO这样的方式来访问各种不同的数据源。这里面的问题在于，平台透露了太多的技术细节，程序员需要了解很多相关的内容，比如他需要创建一个JDBC或ODBC的数据源，再利用这些规范所提供出来的编程接口来想办法得到数据源中的数据，为达成这个目标，程序员还需要去做对象-关系映射，以实现对象到关系数据库或者与之相反的数据转换。目前有一些技术可以用来解决这些问题，比如前段时间在Java社群中一直都非常流行的Hibernate等，诸如此类的方法和工具很多，他们都是用来协助程序员处理上述工作的。但无论如何，你都无法逃避地要看到很多这些方法中非常底层的技术细节，而且，程序员需要学习所有这些不同的技术，了解它们适应于什么情况，处理各种情况下的不同技术细节。</span><span style="BACKGROUND-COLOR: #ffcc99">事实上，程序员需要抽象层次更高的东西，比如业务数据对象(Business Object)以及它内部各种细粒度数据对象之间的关联，这是可以用一致、通用的方式来表示和操作的。有了抽象层次更高的模型，程序员就可以通用的方式来定义和访问业务数据，从而以统一的方式来描述和访问不同的数据源，降低对程序员技能的要求，提高生产率，更容易在不同的应用环境交换。</span></p>
<p>　　这样，不管是Java或者C++语言描述下，程序员都不必去了解平台上的技术细节，用一个XML Schema描述这样的通用、简单的的业务数据模型，然后在运行将对象持久化到你的关系数据库、XML或者其它数据源中。</p>
<p>　　从技术上看，SDO规范做了如下几件事情:它定义了一个连接器，可以使用JDBC、ADO等各种不同的方式去和多种数据源交互，数据源也是多种多样，不单单局限于关系数据库，也可以是不同类型的XML文件，甚至是内存中的一块区域。同时它还提供诸如连接池、缓存(Cache)、断开连接时数据访问(Disconnected Access)等高级特性，提供了跨越B/S,C/S的边界。</p>
<p>&nbsp;&nbsp;&nbsp; 另外，SDO还定义了一个中介转换器(Mediator)，它与连接器交互，来完成数据持久化的工作，这个协调器能够理解我们定义好的Schema，让程序员能直接看到一个直观的对象图表(Object Graph)。它根据业务的语义定义一个完整的Schema，不仅能清晰地定义各种数据对象，而且还能有效地描述各种对象之间的联系，充分利用了XML强大的自描述能力。通过它，人们可以很方便的操纵数据对象。</p>
<p>　　综合起来说，SCA/SDO都是基于已有的技术，它们所要做的就是怎样在现有技术的基础上，为异构、分布的松耦合计算环境提供一个统一、开放的组件及其服务的描述。</p>
<p>　　IBM在其SCA的实现中，也就是WPS 6.0所提供的SCA运行时环境，有多达八种不同的组件实现形式可供选择。我想更理想的实现应该是提供一个可以扩展的接口。即使在语法上、数据结构上有很大的不同，甚至是某公司自己语义上的东西，也可以方便地纳入SOA的架构里。</p>
<p>　　这样一个规范目前受到了IT技术主流的技术厂商的支持，它的建立为基于SOA的下一代计算环境下的编程模型打下了一个坚实的基础。</p>
<p>　　与古老的CORBA技术(请允许我用这样的词来描述它，呵呵～)想比，两种技术的背后都有很一致的哲学。但是受限于当时的技术发展条件，我们回顾历史的时候，CORBA在很多细节上的处理并不是太好，而且，CORBA是基于面向对象思想的，与之不同的是SCA基于面向服务的思想，其实抽象程度要相比过去的提高很多。</p>
<p>　　这里我引用一下Gartner的报告:</p>
<ul>
    <li>　　随着商业和技术的推动，SOA将成为将来的发展趋势已经没有人怀疑了;
    <li>　　2007年，超过50%以上的公司将SOA作为IT战略来考虑;
    <li>　　2008年还没有将SOA引入到公司的IT实现中去，那么该公司将成为一只恐龙，也就是说这个公司很落后了。 </li>
</ul>
<p>　　目睹这些年软件的迭代更新，我有时也在想，是不是这就是软件自己的&#8220;摩尔定律&#8221;，所不同的是，用来度量软件的不是单晶片上可以集成的晶体管数，而是单个软件工程师所能Handle的软件复杂度，姑且叫它"logic per brain"吧。&nbsp;</p>
<img src ="http://www.blogjava.net/crazycy/aggbug/115491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-05-06 02:40 <a href="http://www.blogjava.net/crazycy/archive/2007/05/06/115491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>soa杂感系列一：色解SCA（reference to qqgroup &amp; articles on network）</title><link>http://www.blogjava.net/crazycy/archive/2007/05/06/115483.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 05 May 2007 16:35:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/05/06/115483.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/115483.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/05/06/115483.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/115483.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/115483.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">米布</span><span lang=EN-US>(8101690) 23:08:08</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">大家有没有想把</span><span lang=EN-US> axis </span><span style="FONT-FAMILY: SimSun">嵌到自己产品中去的？</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:08:13</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">如果</span><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">构件分布式的部署在多个应用服务器上，那么在装配中</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:08:24</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">的服务结构</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:08:35</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">接口</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:08:43</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">使用</span><span lang=EN-US>WS</span><span style="FONT-FAMILY: SimSun">定义</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:08:57</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">那么装配出来的应用效率是不是很低</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="9" hour="23"><span lang=EN-US>23:09:12</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">可以认为</span><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">的容器是一个</span><span lang=EN-US>bean</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:09:47</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">没懂</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="10" hour="23"><span lang=EN-US>23:10:52</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>sca</span><span style="FONT-FAMILY: SimSun">容器宿主在</span><span lang=EN-US>Tomcat</span><span style="FONT-FAMILY: SimSun">上</span><span lang=EN-US>,</span><span style="FONT-FAMILY: SimSun">通过</span><span lang=EN-US>sca</span><span style="FONT-FAMILY: SimSun">可以引用其它分布的应用</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<span style="FONT-FAMILY: SimSun">
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="11" hour="23"><span lang=EN-US>23:11:40</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">宿主</span><span lang=EN-US>:</span><span style="FONT-FAMILY: SimSun">启动</span><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">装配过程的系统<br><br><br></span>米布</p>
</span><span lang=EN-US>(8101690) 23:11:24</span>
<p>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我能否用</span><span lang=EN-US> bpel </span><span style="FONT-FAMILY: SimSun">流程来引用</span><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">呢？</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="11" hour="23"><span lang=EN-US>23:11:42</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">可以</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="12" hour="23"><span lang=EN-US>23:12:02</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">这个问题在那个群里已经讨论过了</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:12:23</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">通过宿主进行的引用？</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="12" hour="23"><span lang=EN-US>23:12:28</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">对</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="12" hour="23"><span lang=EN-US>23:12:30</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>http://blog.csdn.net/teamlet/archive/2007/03/22/1537510.aspx</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:12:37</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">谢谢</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="12" hour="23"><span lang=EN-US>23:12:56</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">从这个图中可以看出</span><span lang=EN-US> SCA</span><span style="FONT-FAMILY: SimSun">中的</span><span lang=EN-US>component</span><span style="FONT-FAMILY: SimSun">和</span><span lang=EN-US>bpel</span><span style="FONT-FAMILY: SimSun">的关系</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="13" hour="23"><span lang=EN-US>23:13:52</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>sca</span><span style="FONT-FAMILY: SimSun">的</span><span lang=EN-US>component/(composite: cuiyi add)</span><span style="FONT-FAMILY: SimSun">对外提供粗粒度的接口</span><span lang=EN-US>,bpel</span><span style="FONT-FAMILY: SimSun">通过</span><span lang=EN-US>implementation</span><span style="FONT-FAMILY: SimSun">提供细粒度的实现</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="14" hour="23"><span lang=EN-US>23:14:09</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>sca</span><span style="FONT-FAMILY: SimSun">是</span><span lang=EN-US>bpel</span><span style="FONT-FAMILY: SimSun">更高层次的抽象(bpel is implement technology, sca is a component, compent is interfaces, one for expose, another for reference,就是下面的棍/坑说啦，cuiyi add)。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:14:38</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>bpel</span><span style="FONT-FAMILY: SimSun">是</span><span lang=EN-US>SCA</span><span style="FONT-FAMILY: SimSun">的服务实现</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:14:45</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">是一种</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:14:50</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">这么理解对吗？<br></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p><br></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="15" hour="23"><span lang=EN-US>23:15:10</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">是的，是其中的一种<br><br></span>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="14" hour="23"><span lang=EN-US>23:14:57</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>component</span><span style="FONT-FAMILY: SimSun">只不过是</span><span lang=EN-US>sca</span><span style="FONT-FAMILY: SimSun">装配模型中最基本的组件单元，上面还有</span><span lang=EN-US>composite</span><span style="FONT-FAMILY: SimSun">，</span><span lang=EN-US>domain</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="15" hour="23"><span lang=EN-US>23:15:36</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">想用</span><span lang=EN-US>bpel</span><span style="FONT-FAMILY: SimSun">调用</span><span lang=EN-US>sca</span><span style="FONT-FAMILY: SimSun">是可以的，但是大才小用了</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="16" hour="23"><span lang=EN-US>23:16:45</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">实现包括</span><span lang=EN-US> , C++, PHP, Java Script, BPEL, SQL, XQuery, Composite</span><span style="FONT-FAMILY: SimSun">，</span><span lang=EN-US>ruby</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>david(172171) </span><st1:time minute="17" hour="23"><span lang=EN-US>23:17:12</span></st1:time></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">当然还有</span><span lang=EN-US>java</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:49:42</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>SCA Component </span><span style="FONT-FAMILY: SimSun">它有一个<strong>壳</strong>，<strong>壳上</strong></span><span lang=EN-US>Service</span><span style="FONT-FAMILY: SimSun">，</span><span lang=EN-US>Reference,property</span><span style="FONT-FAMILY: SimSun">，<strong>壳里边</strong>包含的东西连接着</span><span lang=EN-US>Service</span><span style="FONT-FAMILY: SimSun">，</span><span lang=EN-US>Reference,property</span><span style="FONT-FAMILY: SimSun">，壳里边的东西就是这个</span><span lang=EN-US>Component</span><span style="FONT-FAMILY: SimSun">的</span><span lang=EN-US>implementation(not exactly, cuiyi add)</span><span style="FONT-FAMILY: SimSun">，</span><span lang=EN-US>implementation</span><span style="FONT-FAMILY: SimSun">可以是很多东西，</span><span lang=EN-US>java</span><span style="FONT-FAMILY: SimSun">，</span><span lang=EN-US>c++</span><span style="FONT-FAMILY: SimSun">等等什么都行，这么理解对不对。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">两块田</span><span lang=EN-US>(7739638) 23:52:39</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">很对</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:56:40</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-FAMILY: SimSun">壳上的</span><span lang=EN-US>Service</span></strong><span style="FONT-FAMILY: SimSun">就是指出来的棍(<strong>凹进去的坑,引用找服务，就像棍插坑</strong>，cuiyi add)，</span><span lang=EN-US><strong>Reference</strong></span><span style="FONT-FAMILY: SimSun">就是凹进去的坑（<strong>凸出来的棍</strong>），<strong>棍插坑，坑插棍</strong>，几个连一起，<strong>还有坑还有棍这时候是合成组件</strong></span><span lang=EN-US><strong>(Composite)</strong></span><span style="FONT-FAMILY: SimSun">，对不</span><span lang=EN-US>?</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">两块田</span><span lang=EN-US>(7739638) 23:57:14</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">说得有点色了</span><span lang=EN-US>~:)</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:57:23</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">哈哈</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 23:58:33</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-FAMILY: SimSun">再整几个只有棍的，还有只有坑的，把</span><span lang=EN-US>Composite</span><span style="FONT-FAMILY: SimSun">的棍和坑插满，就是系统域</span><span lang=EN-US>(Domain)</span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">两块田</span><span lang=EN-US>(7739638) 00:11:24</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">兄弟研究棍和坑研究得挺深啊</span><span lang=EN-US>.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 00:11:38</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span>&nbsp;</span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">两块田</span><span lang=EN-US>(7739638) 00:12:02</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">重要的是可以插进去</span><span lang=EN-US>,</span><span style="FONT-FAMILY: SimSun">插出来又可以用到别的坑里</span><span lang=EN-US>~:)</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">我有一个理想</span><span lang=EN-US>(24332715) 00:13:48</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun">嗯<br></span></p>
<p><br><span style="BACKGROUND-COLOR: #666699">the following add by cuiyi, 系引用<br><br><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/teamlet/286132/o_SCA_Component_arch.PNG" align=middle></span></p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/teamlet/286132/o_SCA_Composite_Diagram.PNG"><span style="BACKGROUND-COLOR: #666699"></span></p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/teamlet/286132/o_SCA_Domain_Diagram.PNG"><br><span style="BACKGROUND-COLOR: #ffffff"></span></p>
<p style="BACKGROUND-COLOR: #ffffff">开-闭&#8221;原则（Open-Closed Principle）是面向对象的可复用设计（Object Oriented Design或OOD）的基石。其他设计原则（里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则）是实现&#8220;开-闭&#8221;原则的手段和工具。&nbsp;</p>
<p style="BACKGROUND-COLOR: #ffffff"><strong>&#8220;开-闭&#8221;原则的定义</strong></p>
<p style="BACKGROUND-COLOR: #ffffff">定义：一个软件实体应当对扩展开放，对修改关闭。<br>( Software entities should be open for extension,but closed for modification)。</p>
<p style="BACKGROUND-COLOR: #ffffff">在设计一个软件系统模块的时候，应该使这个模块可以在不被修改的前提下被扩展，或者说，可以在不必修改原来代码的情况下改变这个模块的行为。</p>
<p style="BACKGROUND-COLOR: #ffffff"><strong>满足&#8220;开-闭&#8221;原则的系统的优点</strong></p>
<p style="BACKGROUND-COLOR: #ffffff">1)通过扩展已有的软件系统，可以提供新的行为，以满足对软件的新需求，使变化中的软件系统有一定的适应性和灵活性。<br>2)已有的软件模块，特别是最重要的抽象层模块不能再修改，这就使变化中的软件系统有一定的稳定性和延续性。<br>具有这样两个优点的系统是一个在高层次上实现了复用的系统，也是一个易于维护的系统。</p>
<p style="BACKGROUND-COLOR: #ffffff"><strong>&#8220;开-闭&#8221;原则的实现——抽象化</strong></p>
<p style="BACKGROUND-COLOR: #ffffff">面向对象编程语言可以使用抽象的方法，为系统定义一个不再更改的抽象设计来作为系统的抽象层。这个抽象层覆盖了所有未来可能扩展，因此在任何情况都不会改变。这样使系统的抽象层保持不变，从而满足了开闭原则的第二点：对修改关闭。</p>
<p style="BACKGROUND-COLOR: #ffffff">由于从抽象层导出的一个或多个具体类可以改变系统的行为，因为系统的设计对扩展是开放的，从而满足了开闭原则的第一点：对扩展开放。</p>
<p style="BACKGROUND-COLOR: #ffffff">在SCA框架中，无论在commonj还是SPI；无论是composite还是component，都可以看到开闭原则的应用。<br><br>remark by cuiyi<br><br>I feel Component in SCA just a restriction according to DP, so exposed as interface or web service description language (XML), just made DP a restriction to developers, meanwile, the systems developed on it can be more extensice and integratable; 即：<br>SCA 提供一个以与技术无关的方式定义接口、实现和引用的模型，从而使技术人员能够将这些元素绑定到所选择的某一技术的特定实现。<br></p>
<p>例如，我们可以用 Java 定义我们的接口，将我们的实现作为 BPEL 流程加以应用，或者将接口作为一个 WSDL 文档，而且我们的实现可以是一个 Java&#8482; 类。下图 演示了如何在 IBM WebSphere Process Server 中使用 SCA。 <br><a name=fig1><strong>图. WebSphere Process Server 中的 SCA</strong></a></p>
<br>
<p align=center><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/teamlet/286132/o_figure01.gif"></p>
<br>
<p align=center><br></p>
SCA的目的是使用户在构建企业应用时有一个不再直接面对具体的技术细节的层次，而是通过服务组件的方式来构建应用。这种方式也使得客户的企业应用具有良好的分层架构，能够很好的分离应用的业务逻辑和IT逻辑，不但易于应用的构建，也易于应用的更改和部署。&nbsp;
<p>○分离业务逻辑和技术实现逻辑<br>○业务过程由松散耦合、可重用的组件或服务组成<br>○组件或服务与平台和实现无关</p>
<br><br>实际上呢，其就是对现有技术的再一次包装，达到真正的屏蔽语言，我们来看看SOA规范理念，是如何达到屏蔽和包装的：<br><img alt="The image &#8220;http://gocom.primeton.com/uploads/FCKUserFiles/Image/1.JPG&#8221; cannot be displayed, because it contains errors." src="http://gocom.primeton.com/uploads/FCKUserFiles/Image/1.JPG"><br><span style="TEXT-DECORATION: underline"><span style="FONT-STYLE: italic"><span style="FONT-WEIGHT: bold"></span></span></span>SCA规范包括了Assemble Model和Client Model两部分。<br>前者约定了如何将异种组件（Java类，BPEL，WebService）组装并发布成SOA服务，这也是SCA<span style="TEXT-DECORATION: underline"><span style="FONT-STYLE: italic"><span style="FONT-WEIGHT: bold"></span></span></span><a href="http://gocom.primeton.com/modules/gSpace/about_onetag.php?tagid=134&amp;tagname=SCA" target=_blank><strong><em><u></u></em></strong></a>最大的特点和最核心的概念；<br>后者则约定了如何在异种语言环境中调用SOA服务。<br>那么，通过这两部分的规范，就可以完全解决了服务从服务端到客户端的跨语言、跨实现技术的问题。<br><br>其即将推出的DAS规范，也无非是我们现有技术的再次包装，理念图如下：<br><img style="WIDTH: 534px; HEIGHT: 369px" alt="The image &#8220;http://gocom.primeton.com/uploads/FCKUserFiles/Image/9.JPG&#8221; cannot be displayed, because it contains errors." src="http://gocom.primeton.com/uploads/FCKUserFiles/Image/9.JPG"><br>这样，客户端看到的只是DataGraph中的DataObject就是我们说的SDO,而不再需要去关注或者操作所谓的JDBC等连接数据库的、以及JCA等连接手段获得的数据入口了。<br><br>于是我们看到了，SOA通过SCA、SDO对现有技术进行了再次包装或者屏蔽，从而达到了一个 大一统 的局面，但是尚未知对于大多的开发者来说这是否是一个好的消息。<br><br>不过通过如下，我们发现并不是如此的悲观：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_023146 onclick="this.style.display='none'; Code_Closed_Text_023146.style.display='none'; Code_Open_Image_023146.style.display='inline'; Code_Open_Text_023146.style.display='inline';" height=16 src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_023146 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_023146.style.display='none'; Code_Closed_Image_023146.style.display='inline'; Code_Closed_Text_023146.style.display='inline';" height=16 src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_023146 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">goCom SCA规范综述</span><span id=Code_Open_Text_023146 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">实施SOA不意味着要推翻既有的架构，比如MVC，而是要在现有架构上做更大的架构。<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>传统的MVC对于单个应用来说非常成熟，这是实践中证明的。对于大多数独立的应用和系统来说MVC很胜任。然而，当企业中的应用规模不断扩大，从几个到几十个甚至上百个的时候，靠若干MVC架构的不断叠加能够构造出一个适合企业级的架构么？所以才出现了Portal这样的新技术来迎接这样的挑战，但是Portal的关注点更靠近与展现端，在底端通讯方面不能给出更好的答案。所谓架构是要一套整体解决方案，这样的架构所要解决的问题简而言之就是两个特点：数目或规模大、异构应用交互。</span></span></div>
<br><br>
<img src ="http://www.blogjava.net/crazycy/aggbug/115483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-05-06 00:35 <a href="http://www.blogjava.net/crazycy/archive/2007/05/06/115483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SOA关键问题精彩解答集锦（很好的帖子，转自csdn）</title><link>http://www.blogjava.net/crazycy/archive/2007/04/28/114221.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Fri, 27 Apr 2007 18:02:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/04/28/114221.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/114221.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/04/28/114221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/114221.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/114221.html</trackback:ping><description><![CDATA[<p>来源：CSDN <a href="http://news.csdn.net/n/20070123/100877.html">http://news.csdn.net/n/20070123/100877.html</a><br><br>&nbsp; 面向服务导向架构(Service Oriented Architecture，SOA)，企业用户存在各种各样模糊的认识，这些模糊认识很可能将企业的SOA项目引入误区，在这样的状况下部署SOA，可能 会把企业的业务带入歧途，了解SOA的关键问题，或许可帮助CIO避开SOA部署中的陷阱。
<p>　　<strong>1. 为什么不同的人对SOA有不同的解释?</strong></p>
<p>　　SOA 的定义取决于你在组织业务中的角色。</p>
<p>　　对于业务执行人员，SOA创建了企业希望向其客户和合作伙伴或组织的其他部分公开的一组服务。对于IT架构师，SOA是一种体系结构样式，此样式至少需要有服务提供者、请求者和服务描述。对于程序员，SOA是一个由标准、工具和Web服务等技术加以补充的编程模型。</p>
<p>　　当然，企业信息技术系统及流程管理人员之所以存在似是而非的SOA概念，还可能因为软件厂商没有向企业用户解释清楚SOA的含义。比如，SOA 中的服务(Service)并非我们理解的传统企业服务，而是软件开发的专业用语，指技术层面的、细颗粒度的功能模块，还远未达到与企业业务流程直接对应 的程度。软件厂商在强调SOA给企业带来巨大商业价值的同时，并没有具体阐释这一点。</p>
<p>　　<strong>2. 业务流程管理(BPM)和SOA是何关系?</strong></p>
<p>　　BPM与SOA既可以单独部署，也可以组合使用。</p>
<p>　　如果企业的IT系统比较简单，企业规模比较小，用同样的一组IT人员就可以控制所有IT系统，那么，部署一个不使用SOA的BPM套件，就可以 获得快速创建、执行和监控/管理业务流程的能力，而不必部署SOA。但是，如果BPM套件由一个IT小组部署，而同时使用来自另一个IT小组的系统服务， 那么SOA就可以帮上忙了。</p>
<p>　　如果企业的IT系统足够复杂，可以考虑将BPM和SOA组合使用，通常在SOA上实施BPM解决方案可以获得更大的业务灵活性。如果BPM项目达到一定的范围和规模时效果才能显现，最好先开发出BPM，而将SOA组件留待以后考虑。</p>
<p>　　最好一开始就让业务流程团队和IT架构团队保持持续良好沟通，针对未来进行可行性规划。例如，BPM套件本身应该能够提供丰富的连通性，以便无需全面应用完善的SOA来使得BPM运行，不要让BPM与SOA成为互不连通的两套系统。</p>
<p>　　<strong>3. &#8220;瀑布式&#8221;开发与迭代式开发哪个适合SOA?</strong></p>
<p>　　企业部署SOA最好是通过迭代模型来实现。</p>
<p>　　迭代模型将标识一组对业务非常关键且价值高的功能来进行服务支持工作。此模型可随后供后续服务支持项目和活动使用。如果采用传统应用程序开发时使用的&#8220;瀑布式&#8221;开发方法部署SOA，可能导致创建仅能部署一次的服务，而无法在以后对其进行重用。</p>
<p>　　使用迭代式开发部署SOA，可通过允许组织逐步纳入到系统中，从而减少出现业务故障的风险。同时，任何组织接受和容纳更改的能力都是有限的，迭代式开发可确保引入新的流程和系统带来的更改非常适应企业的容量，且不会在企业中引起大的混乱。</p>
<p>　　同时，在SOA中，新功能并不一定总是仅受单个业务部门(Line Of Business，LOB)的约束，需要考虑很多跨组织的依赖关系，迭代式开发也有助于解决跨组织的协调。</p>
<p><strong>4. Web服务与SOA是一样的吗?</strong> </p>
<p>　　Web服务仅仅是目前最流行的SOA实现技术，但并非可以用于开发SOA的唯一技术。</p>
<p>　　SOA与Web服务(Web Service)的数量无关。对于SOA来说，真正有价值的是对于Web服务的再利用而不是Web服务本身。即使将所有信息技术系统都用Web服务实现， 也不见得就等于部署了SOA。有些企业使用了太多的Web服务来做同样的IT服务，结果部署SOA的效果非常差。将Web服务等同于SOA，很容易发生在 一些希望快速实现SOA但是并未真正理解SOA的企业身上。</p>
<p>　　很多SOA项目都涉及到集成遗留数据，此类数据包含在使用MQSeries和CORBA(Common Object Request Broker Architecture)等&#8220;旧&#8221;技术的系统中。其中的许多技术都已针对SOA进行了调整，不管有没有Web服务都可使用。事实上，企业可以只使用 MQSeries、CORBA甚至远程过程调用(Remote Procedure Call，RPC)技术就能实现SOA。</p>
<p>　　<strong>5. 所有应用程序或环境都适合部署SOA吗?</strong></p>
<p>　　不是所有的应用环境都适合部署SOA，很多情况下，部署SOA的效果可能会适得其反。</p>
<p>　　SOA可以根据需求通过网络对各种应用组件进行分布式部署、组合和使用，从而满足用户统一服务界面、快速部署新业务等需求。但是，如果企业的 IT系统并不复杂，系统基本上都建立在同一架构上，整合系统并不困难，那么实施SOA并不能给企业带来太多好处，反而可能会带来负面影响。</p>
<p>　　专家认为，针对某些应用程序或IT环境，SOA可能并不值得推荐。比如，不需要组件或者应用集成的、独立的、非分布式的应用程序;应用范围非常 狭小或者生命周期短的应用程序;建立在同一架构上的应用程序环境等等。对于一些企业来说，采用了单一厂商的技术和产品，拥有同一架构的IT环境，就不需要 那么急迫地实施SOA，或者实施的效果并不是很明显。</p>
<p>　　有些企业很多年前就已经成形了业务支撑系统，虽然经过了很多次修修补补，但都一直在正常运作。专业人士认为，这种结构老、补丁多、又肩负重任的系统，与其用SOA动大手术，还不如等这种系统寿终正寝，重新开发符合SOA架构的新系统，进行自然淘汰比较好。</p>
<p>　　<strong>6. 企业应该如何着手部署SOA?</strong></p>
<p>　　部署SOA应该制定明确的路线图，循序渐进。</p>
<p>　　企业部署SOA时最好先制订一个清晰的路线图，然后从单个应用程序开始构建SOA架构，可以先从比较简单的应用开始。这样，企业可以在做出全面部署SOA之前先衡量投资回报率，并在出现大的问题之前积累足够的经验。</p>
<p>　　当企业计划部署SOA项目时，CIO要注意各种细节，比如，供应商提供的软件是否支持Web服务和SOA;开发某些应用程序时，该应用是否要支 持其他业务需求;哪些应用需要嵌入对Web服务的支持等。如果企业大规模部署SOA，还需要建立企业服务总线(ESB)，通过ESB提供服务请求。当然 ESB的建立也需要一个过程，CIO必须注意部署节奏。</p>
<p>　　尽管目前已经可以找到很多关于SOA的知识，但部署SOA仍然非常困难。其中最直接的原因在于SOA需要企业部门之间的高度沟通，而且要求整个 企业都为变革做好准备。变化带来的问题解决之后，可能又会出现技术问题。因此，企业部署SOA需要提前做好各种各样的准备，并且有长期的详细计划安排。</p>
<img src ="http://www.blogjava.net/crazycy/aggbug/114221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-04-28 02:02 <a href="http://www.blogjava.net/crazycy/archive/2007/04/28/114221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SCA与和谐社会的异曲同工</title><link>http://www.blogjava.net/crazycy/archive/2007/03/25/106258.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sun, 25 Mar 2007 10:39:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/03/25/106258.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/106258.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/03/25/106258.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/106258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/106258.html</trackback:ping><description><![CDATA[
		<p>
				<font style="BACKGROUND-COLOR: #808080">
						<font style="BACKGROUND-COLOR: #ff1493">
								<strong>
										<font style="BACKGROUND-COLOR: #deb887">
												<br />
										</font>
								</strong>
								<br />第一部分：文化</font>
						<br />
						<br />文化的多样性<br /></font>人类文明的历史长河造就了文化的多元化和多样性。<br /><br /><font style="BACKGROUND-COLOR: #808080">经济全球化与霸权主义<br /></font>经济全球化，使得人类的地域文化不再相互隔离，也使得各种文化皆被吸纳到全球文化这个大系统之中。各种文化在遵循其所固有轨迹与规律的同时，必然会受到全球文化的影响和冲击，有些时候甚至会在某些方面被外来文化所主导。<br /><br />经济全球化和全球文化是一个互动的过程，也由于政治、经济、文化发展的不平衡，形成了文化霸权主义，并企图以自己的意识形态一统天下，以自己的民族文化消灭另外的民族文化。<br /><br /><font style="BACKGROUND-COLOR: #808080">求同存异与和谐社会</font><br />世界是丰富多彩的。各国文明的多样性，是人类社会的基本特征，也是人类文明进步的动力。应尊重各国的历史文化、社会制度和发展模式，承认世界多样性的现实。世界各种文明和社会制度，应长期共存，在竞争比较中取长补短，在求同存异中共同发展。（在庆祝党成立80周年大会上的讲话）<br /><br />在经济文化全球化背景下，各种文化也将从其它文化中吸收精华并用以自我优化，进而将导致不同文化相互融合局面的出现，全球文化也将伴随着冲突与融合逐渐与经济全球化同步。最终形成一个和谐社会（和谐学说）。<br /><br /><font style="BACKGROUND-COLOR: #ff1493">第二部分：IT<br /><br /></font><font style="BACKGROUND-COLOR: #808080">技术多样性<br /><font style="BACKGROUND-COLOR: #ffffff">语言也多种多样，如C/C++、Java<br />技术也多种多样，RMI、CORBA、COM/COM+、EJB、WebService.....<br /></font><br />SOA大一统<br /><font style="BACKGROUND-COLOR: #ffffff">SOA是由不同厂商、不同技术、不同产品、不同语言造成的异构系统难以集成而衍生出。可以说其起因是应用系统间严重需要集成和资源共享，因此它也是业界发达到了一定程度的必然产物，即使它不称为SOA，也必然是另外名字的等价物。<br /><br />SOA不是产品，而是方法论，是一个战略思想的指导，也是业界发达到一定程度的必然产物。<br />SOA方法论必然要求技术支撑，战略思想有了，战术如何？因为集成和松耦合的强烈呼吁产生出SOA，其中一个思想就是把系统功能（可以是几个已存在系统构成的新系统）分成若干的功能服务元，然后把它们组合起来。SCA即是来做这个功能服务元的技术，它相当于一个增强型的部署描述符，把原已有的技术如JEE、Spring之流通过一个描述符组合在一起工作，从而达到了SOA的目标，这也是它胜于Web Service的关键带。<br /><br />伴随着新技术和解决方案如雨后春笋般的冒出，常有人说这个xxx技术已经不行了，淘汰了；或者说xxx技术不行了，比不了xxx技术了;xxx技术取代了xxx技术。<br /><br /></font>SCA包容的心<br /></font><font style="BACKGROUND-COLOR: #ffffff">世界万物有存在就有道理，找平衡是最融洽的方式手段也是最终目的。<br /><br />想一个事物影响覆盖另一个事物，当前可能有必要，但是最终目的它是个徒劳！<br /><br />所以均衡的让强大和弱小都存在才是王道，这个也是“和谐”的最根本的目的和出发点<br /><br />软件也是一样：并不能说哪个语言好，哪个就不能存在，道理是一样的<br /><br />求同存异，发扬自己民族文化，容纳不同民族文化，达到百家齐鸣。</font><font style="BACKGROUND-COLOR: #ffffff">SCA也正是通过增强的部署描述符来包容大多技术和语言。<br /></font><font style="BACKGROUND-COLOR: #ffffff"><br />SCA，妙就妙在不否定现有的，而是通过它的配置包容了现有的；这个地方也就是我刚刚为什么提到了和谐社会；<br /><br />我觉得SCA好，起码是思想的落实点，它也符合了当前的集成需求<br /><br /><font style="BACKGROUND-COLOR: #ff1493">结论</font><br />嗯，这也如同“美国的霸权外交”和“中国的和谐外交”，SCA正是在求同存异的基础上，在保留原有技术实现的基础上，又增加一个抽象的层，使用户在构建企业应用时不再直接面对具体的技术细节，通过服务组件的方式来构建就OK了。<br /><br />换句话说，SCA关注是的SOA开发者最初看到的和接触到的（多为图形化），它并不关注SCA各个模块到底是如何实现的。</font><font style="BACKGROUND-COLOR: #ffffff"><br /><br /></font></p>
<img src ="http://www.blogjava.net/crazycy/aggbug/106258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-03-25 18:39 <a href="http://www.blogjava.net/crazycy/archive/2007/03/25/106258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SOA与构件的关联（一）</title><link>http://www.blogjava.net/crazycy/archive/2007/03/25/106162.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 24 Mar 2007 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/03/25/106162.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/106162.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/03/25/106162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/106162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/106162.html</trackback:ping><description><![CDATA[
		<p>
				<span style="FONT-FAMILY: 宋体">普元gocom社区“也谈SOA从面向构件开始”一文提到：<br />url：<a href="http://gocom.primeton.com/blog1180_35.htm?referer=techtargetwsprimeton">http://gocom.primeton.com/blog1180_35.htm?referer=techtargetwsprimeton</a><br />############################################################################</span>
		</p>
		<p>
				<span style="FONT-FAMILY: 宋体">
						<font style="BACKGROUND-COLOR: #808080">面向构件的概念</font>着眼于软件的构造，其语义内涵包括：<br /></span>
				<span style="FONT-FAMILY: 宋体">1、层次化。软件呈现层次化构造，整体可以由一系列有内在结构的器官，即构件，构成。而构件可以由更小的构件构成。<br /></span>
				<span style="FONT-FAMILY: 宋体">2、可复用。这些构件可以在不同的软件中以相同的形式出现，完成大致相同的功能。<br /></span>
		</p>
		<p>
				<span style="FONT-FAMILY: 宋体">
						<font style="BACKGROUND-COLOR: #808080">SOA概念</font>着眼于软件的功能，其语义内涵包括：<br /></span>
				<span style="FONT-FAMILY: 宋体">1、层次化。软件的功能呈现层次化复合，综合功能由单项功能复合而成，复杂功能由简单功能复合而成。<br /></span>
				<span style="FONT-FAMILY: 宋体">2、可外化。一个软件需要的功能可以由另一个软件提供。<br /><br /></span>
				<span style="FONT-FAMILY: 宋体">由于“功能外化”可以看作是互联网时代功能复用的一种形式，面向构件与SOA完全同构。<br /></span>
				<span style="FONT-FAMILY: 宋体">因此，我们说SOA从面向构件开始，就是SOA通过面向构件去实现，因为面向构件是SOA的自然实现方式。<br />############################################################################<br /><br />读后，个人分析如下：</span>
		</p>
		<p>SOA架构体系层次结构（参见<a id="viewpost1_TitleUrl" href="/crazycy/archive/2006/06/22/54532.html"><font color="#000080">对SOA和目前业成熟应用的JavaEE应用方案的一点看法</font></a><font color="#000000">）中，构件应该是“service component”层的主要技术，其之上的层次是“enterprise service”层。（当然这个可以是系统内，也可以是系统间）</font></p>
		<p>再次看一下JEE（这里聚焦在系统内），对应的就是 服务实现 和 服务接口 这个层，并一定程度上借助Facade Pattern。</p>
		<p>因此赞成“SOA从面向服务开始而又基于构件的”的说法。</p>
<img src ="http://www.blogjava.net/crazycy/aggbug/106162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-03-25 00:49 <a href="http://www.blogjava.net/crazycy/archive/2007/03/25/106162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>拨开SOA的迷雾--摘于2006长风联盟（SOA电子政务）媒体专访</title><link>http://www.blogjava.net/crazycy/archive/2007/03/02/101327.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Thu, 01 Mar 2007 17:29:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/03/02/101327.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/101327.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/03/02/101327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/101327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/101327.html</trackback:ping><description><![CDATA[
		<font face="宋体" size="2">记者：感觉中国做创新比较难，你刚才讲的东西在国际上也是比较领先的。你的方向能是符合它的吗？有没有足以支撑，让他信赖下去的因素，或者说你们的信心到底在哪儿？<br />    <br />杨：<font style="BACKGROUND-COLOR: #808080">SOA有自己的观点，其实我们<font style="BACKGROUND-COLOR: #ffa500">最大的优势</font>在于我们最了解国内的客户</font>，这不是IBM他们所具备的能力。我们是集成商，我们最了解业务，我们知道用户需要什么。这就是我们最大的最核心的优势。我们只要把对优势的理解和我们的SOA新结合起来，采用对用户的服务，这就是我们最大的优势。<br /></font>
		<br />
		<br />
		<font face="宋体" size="2">记者：这个概念提出来之后，之前电子政务来讲，它们的建设过程中到底存在什么问题？用SOA的理念、服务导向、基础架构来讲，<font style="BACKGROUND-COLOR: #ffa500">电子政务建设是不是有一些以前的方法或者以前的路子</font>，有某些方面的不足？如果现在来说，到底是一个没有经过信息化架构做得很深的政府，SOA反倒做得好一点。还是做的很深入的政府，用新的架构来说，对它的破坏性更大一点？你们有没有这方面的评估？你们对他们有什么建议？比如做的话有什么建议，不做的话有什么建议？<br />    <br />李安渝：我抛砖引玉一下。首先SOA也是软件技术发展的一个阶段，这是基于开放标准，基于一系列标准化的工作。所以<font style="BACKGROUND-COLOR: #d3d3d3">它本身并不是一个发明性的东西，而是水到渠成的</font>，好象技术发展到这一步就出现了。<font style="BACKGROUND-COLOR: #a9a9a9">电子政务也是有一个从办公自动化，逐步发展到流程信息化，逐步发展到信息资源共享，逐步发展到跨部门的应用，它也是一个过程。</font>今天我们很多地方都讲到，SOA本身并不是一个发明，不是一个更好的软件工具，而它是一个解决跨区域，解决异构的、实时的、动态的信息和应用共享的工具。这个工具为什么会今天出现？因为这件事情变得很重要，过去不是这么重要。过去没有这么强的网络社会，大家也不会想到要做那么大区域的共享。所以今天就发展到这一步，我们有这个工具正好解决这个问题。<font style="BACKGROUND-COLOR: #808080">过去电子政务发展的东西做得都是一些每个环节上的事情，现在完全可以用。</font><font style="BACKGROUND-COLOR: #ffa500">为什么今天SOA可以还是推动和成功？</font><font style="BACKGROUND-COLOR: #808080">是因为过去所做得工作。</font>如果过去没有电脑那么SOA也不可能做。过去如果没有信息化的基础，也不能做信息化的整合。如果办公室没有中间件的基础支持和集成，SOA也做不了。SOA之所以现在能做，是因为政府的大规模集成，老工具可以做，但是新工具更有效。<font style="BACKGROUND-COLOR: #008000">如果从政府的一个崭新部门快说要做电子政务，我们还是要先从OA、OFFIC来做，做到后面和别人共享信息的时候，我们再考虑用SOA来设计。</font></font>
		<br />
		<br />
		<font size="2">
				<br />1电子政务也是有一个从办公自动化，逐步发展到流程信息化，逐步发展到信息资源共享，逐步发展到跨部门的应用，它也是一个过程。  <br />2过去电子政务发展的东西做得都是一些每个环节上的事情，现在完全可以用。为什么今天SOA可以还是推动和成功？是因为过去所做得工作。     <br />3SOA之所以现在能做，是因为政府的大规模集成，老工具可以做，但是新工具更有效。如果从政府的一个崭新部门快说要做电子政务，我们还是要先从OA、OFFIC来做，做到后面和别人共享信息的时候，我们再考虑用SOA来设计。   </font>
<img src ="http://www.blogjava.net/crazycy/aggbug/101327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-03-02 01:29 <a href="http://www.blogjava.net/crazycy/archive/2007/03/02/101327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebService学习笔记--求职笔记（1）</title><link>http://www.blogjava.net/crazycy/archive/2007/02/05/97901.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sun, 04 Feb 2007 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2007/02/05/97901.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/97901.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2007/02/05/97901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/97901.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/97901.html</trackback:ping><description><![CDATA[webservice：<br />[定义]建立可互操作的、分布式应用程序的平台<br />[主体]xml/xsd wsdl soap uddi<br /><br /><br />[xml/xsd]<br />每一个平台都有自己的数据表示方法和类型系统<br />xml/xsd屏蔽了平台、编程语言、组件模型的不同的类型系统<br />xml侧重于数据表示<br />xsd侧重于数据类型定义和扩展数据类型<br />webservie以xsd作为数据类型系统<br /><br />[wsdl]<br />[存在缘由]部署一个服务，必须告诉客户足够信息来调用这个服务，wsdl就用来描述服务功能，以及操作及每个操作的参数、返回值<br />[定义]wsdl把服务定义成为一个能交换消息的通信端点集<br /><br /><br />[soap]<br />[存在缘由]客户如何调用。soap提供了标准的rpc方法进行远程调用<br />[定义]用于在应用程序间以对象方式交换数据<br />[原理]把对象间请求/响应/异常打包成xml文档，在对象间传递<br />[规范]soap规范定义了消息格式及如何通过协议使用soap<br /><br /><br />[uddi]<br />[名称]统一描述、发现和集成协议<br />[定义]基于web的、分布式的、为ws提供信息注册中心的实现标准；主要提供ws注册、ws访问的功能<br />[规范]个人感觉这个规范在不断成熟和发展，也感觉其前途最悲观，将被替代；缘由就是概念过于领先于业界工业水平；最终极可能类似grid一样，合理而且正确但是暂时处于冷淡期<img src ="http://www.blogjava.net/crazycy/aggbug/97901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2007-02-05 00:21 <a href="http://www.blogjava.net/crazycy/archive/2007/02/05/97901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SOA涉及的 思想 &amp; 产品 &amp; 技术</title><link>http://www.blogjava.net/crazycy/archive/2006/12/22/89388.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Thu, 21 Dec 2006 17:39:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2006/12/22/89388.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/89388.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2006/12/22/89388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/89388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/89388.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
								<font size="+0">
										<font color="#0000ff">
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
														<span style="FONT-SIZE: 12pt; COLOR: blue; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">本系列文章目录结构</span>
														<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">
														</span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">①</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/05/24/47787.html">
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">我对</span>
																		</span>
																		<span lang="EN-US" style="COLOR: navy; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 宋体">
																				<span lang="EN-US">
																				</span>
																		</span>
																		<span style="COLOR: navy">SOA</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">的认识（一）（结合平时累积的笔记，不排除有引用）</span>
																		</span>
																		<span style="COLOR: navy">(</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">修改版</span>
																		</span>
																		<span style="COLOR: navy">)</span>
																		<span style="COLOR: blue">
																		</span>
																</a>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">②</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/05/24/47799.html">
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">我对</span>
																		</span>
																		<span lang="EN-US" style="COLOR: navy; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 宋体">
																				<span lang="EN-US">
																				</span>
																		</span>
																		<span style="COLOR: navy">SOA</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">的认识（二）（结合平时累积的笔记，不排除有引用）</span>
																		</span>
																		<span lang="EN-US" style="COLOR: blue">
																				<span lang="EN-US">
																				</span>
																		</span>
																</a>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">③</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/05/26/48244.html">
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">我对</span>
																		</span>
																		<span lang="EN-US" style="COLOR: navy; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 宋体">
																				<span lang="EN-US">
																				</span>
																		</span>
																		<span style="COLOR: navy">SOA</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">的认识（三）：</span>
																		</span>
																		<span style="COLOR: navy">SOA </span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">与</span>
																		</span>
																		<span style="COLOR: navy"> WebService </span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">战略与战术</span>
																		</span>
																		<span lang="EN-US" style="COLOR: blue">
																				<span lang="EN-US">
																				</span>
																		</span>
																</a>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">④</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/06/22/54532.html">
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">对</span>
																		</span>
																		<span lang="EN-US" style="COLOR: navy; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 宋体">
																				<span lang="EN-US">
																				</span>
																		</span>
																		<span style="COLOR: navy">SOA</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">和目前业成熟应用的</span>
																		</span>
																		<span style="COLOR: navy">JavaEE</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">应用方案的一点看法</span>
																		</span>
																		<span lang="EN-US" style="COLOR: blue">
																				<span lang="EN-US">
																				</span>
																		</span>
																</a>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">⑤</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/07/03/56387.html">
																		<span style="COLOR: navy">JavaEE</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">中的三层结构和</span>
																		</span>
																		<span style="COLOR: navy">MVC</span>
																		<span style="COLOR: blue">
																		</span>
																</a>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">⑥</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/06/22/54583.html">
																		<span style="COLOR: navy">SOA</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">服务模型分析设计的一些概念</span>
																		</span>
																		<span lang="EN-US" style="COLOR: blue">
																				<span lang="EN-US">
																				</span>
																		</span>
																</a>
																<o:p>
																</o:p>
														</span>
												</p>
												<p class="MsoNormal" style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt 21pt; WORD-BREAK: break-all; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: list 21.0pt" align="left">
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">⑦</span>
														<span lang="EN-US" style="FONT-SIZE: 7pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-fareast-font-family: 宋体">       </span>
														<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<a href="/crazycy/archive/2006/06/22/54547.html">
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">对</span>
																		</span>
																		<span lang="EN-US" style="COLOR: navy; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 宋体">
																				<span lang="EN-US">
																				</span>
																		</span>
																		<span style="COLOR: navy">SOA</span>
																		<span lang="EN-US" style="COLOR: navy; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
																				<span lang="EN-US">涉及的组件和服务概念的整理（摘自水木）</span>
																		</span>
																		<span lang="EN-US" style="COLOR: blue">
																				<span lang="EN-US">
																				</span>
																		</span>
																</a>
																<span style="mso-spacerun: yes"> </span>
																<o:p>
																</o