论坛首页 综合技术论坛

组件化技术的思考

浏览 19020 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-12-22  
微软推出.Net, 看起来准备让COM+以后自生自灭了。原因主要是COM+组件的注册问题,编程复杂。但就组件技术本身来讲,可重用,维护性好,耦合性低,单独开发,单独编译,单独测试,给我们带来了很多好处。组件化编程继承并发展了OOP, 是OOP实现过程的进一步抽象. 接口是组件之间的协议。现在的Web Services就是一种组件技术的应用,WSDL就是一种IDL. 但Web servies是一种高于COM+, Corba, RMI组件技术之上的基于Web协议的组件技术。以上是我对组件化技术的一些思考,不知大家还有什么更好的见解?
   发表时间:2003-12-22  
我看过一些文档,感觉 Web Service 还不太成熟,只能作为异构系统之间相互集成时的胶水。以前 robbin 写过介绍 Web Service 的文章对 Web Service 的定位也基本上是这样。Web Service 并不适合核心的业务领域,其组件模型相比 CORBA、EJB 来说是非常不成熟的。核心的应用领域还是要靠 CORBA、EJB 来建造。
基于 HTTP 只是一个 Marketing Hype,不要上当。CORBA 如果配置在 80 端口同样可以穿越防火墙。HTTP 本身就是一个低效的传输协议,基于文本的 XML 更加低效,在高强度的核心应用领域,不要跟我说性能是无关紧要的。另外还有安全性等 CORBA 已经解决得很好的问题 Web Service 好象还没有完全解决(是不是老黄历了?)
简单的技术就应该用在简单的场合,一定要在复杂的核心应用领域采用简单的技术是会出问题的。CORBA 确实很复杂,但是要搞清楚究竟是因为要解决的问题本身很复杂所以技术也很复杂还是因为一帮技术狂人闲的无聊故意搞得这么复杂以便大家对他们顶礼膜拜。
我的看法是 Web Service 与 CORBA 的定位不同,所以不存在谁灭掉谁的问题。
一点浅见,欢迎讨论。
0 请登录后投票
   发表时间:2003-12-22  
这里有一些关于 Web Service 与其它技术的比较,算是讲得比较透彻了。
Web Services/SOAP and CORBA:
http://www.xs4all.nl/~irmen/comp/CORBA_vs_SOAP.html
Web Service 全接触:
http://developer.ccidnet.com/pub/disp/Article?columnID=321&articleID=13982
我比较同意这个观点:
赵正北 写道
总之,只要从应用程序结构的角度看,有别的方法比Web Service 更有效、更可行,那就不要用Web Service。
0 请登录后投票
   发表时间:2003-12-22  
我是这么理解的:
组件化技术封装的是功能,因此最重要的是对外宣布自己的服务,其实也就是函数的参数和返回值--要求得到什么,可以返回什么。只是由于服务的种类很多,出现API爆炸的现象,才促使人们发展框架技术,简化API的使用。
CORBA和WS都是为整合异构平台设计的,那么最重要的就是参数和返回值的解释--WS把二进制数据转换成文本数据(XML),借用的就是XML的自描述能力--我记得有种元数据的说法,不知是不是。
CORBA我没了解过,不知其工作实质是什么?

呵呵,感觉WS就像现在时兴的物流,只关心货物如何打包和运送。物流可以降低企业的经营成本--程序可以降低发布成本,但假如你的货物量很大,那付给物流公司的钱也不少,那还不如自己做了--解释的过程会带来额外的开销。

WS只提供了各种集装箱,但货物它是不管的,我感觉它对我如何设计好的组件关系不大。
CORBA我就不太清楚了。

大家的理解呢?
0 请登录后投票
   发表时间:2003-12-23  
组件技术与分布式应用相互作用。

WebServices是技术上的一种evolution, 但它却是B2B的一种revolution. 它把一个个孤立的网站整合成起来。我个人相信Webservice会代来计算机领域的下一次繁荣。当然也不可能象前几年那么夸张。CORBA是一座桥,COM也是一座桥,桥与桥之间的联接就需要象Webservice这样的另外一种层次的桥来实现,即然它是一种高于CORBA, RMI, COM层次的组件技术,所以在一定时间内应不会出现谁灭谁的情况。能把这些基于CORBA, RMI, COM的异构系统整合在一起就是WebService的作用。不可否认,很多技术在定位优点的同时也在不可避免的得到缺点。

CORBA与COM都有IDL, 可以实现跨语言,CORBA与COM都有一个数据类型子集以便于实现跨语言,这一点跟.Net中的CLS一样。而RMI只能用在Java语言。但RMI/IIOP可以与CORBA异构系统进行交互。COM的接口都要实现Iunkown接口,COM并不支持继承。这使得COM没有了面象对象的基本特点.

在这些方面我的思维不是很有条理,很多理解都是支理破碎的。希望大家继续讨论,一起整理出清晰的概念。
0 请登录后投票
   发表时间:2003-12-24  
bruce 写道
我个人相信Webservice会代来计算机领域的下一次繁荣。

不好意思,bruce,我可能又要给你泼冷水了。事实上 Web Service 现在早已经不是什么新技术,两年前我就在关注它,但是它现在仍然没有大规模繁荣的迹象。Web Service 基于 XML 就和 EJB 基于 RMI 一样在很多场合下是一个设计缺陷。即使同意以 XML 为载体做分布式应用,SOAP 比 XML-RPC 低效也是不争的事实。除非 Web Service 放弃 XML,以二进制格式在 IIOP 协议上传输数据,否则我看不出什么它一定能战胜 CORBA 的迹象。
Web Service 并不是什么革命性的技术。要说服我必须采用 Web Service 还需要更多的证据。
0 请登录后投票
   发表时间:2003-12-24  
前年 LinuxForum 的 compass 对 Web Service 和 CORBA 的论述,他还写过一篇非常详尽的文章,可惜这篇文章我已经找不到了。
compass 写道
看了Dan Gisolfi 写的关于“Web 服务是 CORBA 的翻版吗? ”这篇文章,觉得很有意思。
首先,SOAP和Web服务是当前的热门话题,也是很重要的技术领域。
其次,我很“欣赏”Dan Gisolfi 的写作水平,不愧是IBM的解决方案设计师。我现从中选择一些内容,做一下点评。
文章一开始就定了调,"为什么 Web 服务能在 CORBA 失败的领域获得成功? ”这种说话方式,暗示性很强,话中的意思是Web服务已经获得了成功。果真如此吗?其实Web服务离真正的成功还有一段距离,如果你在网上搜索一下注册的 Web服务,你就会发现,现在的Web服务是相当简单的,以至于没有实用价值;这说明Web服务还不成熟,还有一段路要走。而且CORBA的目标本来也不是Web领域。
接着,又回顾了一下通信协议模型的简单历史,介绍了什么是CORBA,什么是DCOM,什么是SOAP,什么是Web服务,以及Web服务的优点。这些说得有理有据,基本上都是对的,显得相当中肯。
最后给我们指出了“通向成功之路 ”。“我把它看作是一个全新的开放的解决方案,它解决了 CORBA 所解决的相同的分布式计算问题,同时又有更进一步的目标,那就是改进 CORBA 的一些缺陷。”这句话就很有问题了,Web服务和CORBA从本质上讲是不同的,这种不同有很多,单从对象模式上讲,就有很大的不同,CORBA是面向对象的模型,因而可以在运行时,搜索对象继承树;而Web服务无论如何也做面向对象模型,它实际是面向文档的。其他的不同还有很多,能说“它解决了 CORBA 所解决的相同的分布式计算问题”吗?!
我觉得这篇文章中最大的错误是比较的方式,把Web服务和CORBA等传统中间件技术当成竞争对手(不知是作者故意地还是对这些技术并不了解),文章中用了很多暗示性的语言,让人们不知不觉中感到Web服务是一种最新的技术,更高级的技术。其实这些技术是互补的关系而不是竞争的关系。单凭WEB服务是做不出什么有价值的实际系统来的,更别说,解决复杂的企业计算问题。
好了,就说这么多,关于以上问题的详细论述,我写了一篇更详细的文章,请访问:http://go2.163.com/sciman/middleware/corba-webservices.htm

bruce 写道
即然它是一种高于CORBA, RMI, COM层次的组件技术,所以在一定时间内应不会出现谁灭谁的情况。

bruce 的这句话让我产生了误解,以为他把 Web Service 和 CORBA 对立起来了。实际上 Web Service 和 CORBA 等技术是互补的关系,不存在谁高过谁的问题。
0 请登录后投票
   发表时间:2003-12-24  
WS最弱的一点就是缺乏对象操作能力--不能叫搬箱子的来操纵箱子里的货物啊,这一点决定它只能作用在系统外围

WS的弱点正是COBRA的强项,但相对的,将COBRA部署在外围就太过重量级了--叫高级操作工去搬箱子也太浪费了

我只是想将结果交给.net客户端处理--我要找合适的搬运工,所以还用不着找CORBA,而且是试验性质的。但复杂企业应用,特别是遗留系统,少不了CORBA
0 请登录后投票
   发表时间:2003-12-24  
无明 写道
WS最弱的一点就是缺乏对象操作能力--不能叫搬箱子的来操纵箱子里的货物啊,这一点决定它只能作用在系统外围

WS的弱点正是COBRA的强项,但相对的,将COBRA部署在外围就太过重量级了--叫高级操作工去搬箱子也太浪费了

无明的理解基本上是对的。很难说 Web Service 目前的组件模型是面向对象的。Web Service 的组件模型是一个轻量级的组件模型,这就决定了 Web Service 只适合做一些外围的简单应用。而 CORBA、EJB 的组件模型天生就是面向对象的,更适合担负核心的复杂应用。另外还有我说的安全性问题,目前还缺少证据让我相信 Web Service 已经完全解决了这方面的问题,大规模的电子商务应用安全性是非常重要的问题。
0 请登录后投票
   发表时间:2003-12-25  
to dlee,
泼点冷水挺好的,要不怎么整理大家的思维?进入正题吧。

从Robbin比喻的粘合剂, 无明比喻的搬运工, 高级操作工, 我比喻的桥. 都是一样的对WS的一种描述。我说WS是高于CORBA, RMI层次的概念, 这样的说法确容易产生误解。dlee说的更明确:Web Service 与 CORBA 的定位不同, Web Service 和 CORBA 等技术是互补的关系。这样更清晰。

WS在技术上不是个新东西,虽然它很简单,还不能满足应用的各种其它需求,但WS提供的运作模式在电子商务中是一种革命。

这个帖子的题目是组件化技术, 说说我的理解, 不一定正确:
WS和COM属于组件化技术, 但它们没有OO的基本特点如继承。
CORBA和EJB也属于组件化技术,但它们具有OO的基本特点,其实我觉得这跟CORBA应用的具体语言有关(应该是C++等OO语言才行), CORBA研究的不多, 至于EJB, 虽然JAVA本身是OO语言, 但EJB由于性能的考虑, 不得不做成粗粒度组件, 写到这里, 我突然对EJB的OO模式持怀疑态度了。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics