一段时间以来我们对dotNET、CLR、COM、COM+存在一些模糊不清的概念,dotNET是Microsoft定义的下一代的开发平台。CLR(Common Language Runtime)是dotNET的核心和心脏,也是Microsoft对ECMA规范的一个Windows平台的实现。COM(Component Object Model)是一个组件对象模型,提供了组件之间交互和作用的基本机制和原则,它是一项组件开发技术和编程模型。COM+是一个组件运行环境,是提供了一系列有关分布式系统功能的Services集合的组件运行环境和工具包。CLR替代了COM,但是无法也没有替代COM+,COM+现在叫.NET Enterprise Services,当然如果不带.NET的前缀,Enterprise Services最能体现COM+的作用和定义。CLR离应用层近一些,而COM+离操作系统更近一些,对于最近的Windows.NET的操作系统对COM+进行的一系列增强:Application Partitioning、Application Pooling and Recycling、Resource Manager、Configurable Transaction Isolation Level、Web Services等等(详见Juval Lowy的文章)来说,有些低级的程序API,CLR还根本无法有相应的功能提供,还需要wrapping 这些新的COM+ APIs。当然不能肯定未来的未来,这些COM+的API是用C#或其它的CLR-managed API直接实现。目前可以说,如果以前你用COM技术在COM+环境下工作的很好(或者很痛苦),那么现在用CLR在COM+下工作起来一样也很好,并且要方便,快捷;dotNET使得开发人员使用COM+更加方便和有效率,这就如同许多年以前从字符键盘界面(COM)引入图形鼠标界面(dotNET)是对计算机的使用(COM+)的一场革命一样。来自:http://www.host01.com/article/Net/00020003/2006080521511588.htm
不管是哪种技术,都有他适用的地方,如果没有,那么这个技术肯定已经淘汰。
知道什么时候在什么地方,用什么技术,这个才是架构师的价值。
但要做到这个,最好是对计算机底层非常了解,基础知识非常扎实才比较好。
否则不可能在短时间内对这些东西有个比较深入的了解。关于dotnet,我的感觉,他确实提高了很多开发效率,而且代码看上去优雅很多。
com已经是10几年前的技术了,是基于c++的虚函数机制的,但在vc里写com是比较痛苦的事。com对c++程序员来说,就是个畸形。
现在再深入学com恐怕没什么必要了,也很难。至于com+之类的,那就更不需要学了,除非你要用。
学这些就是浪费时间,就好像我一直反对现在还去学MFC一样,那些过时的垃圾就别在上面浪费时间了。
外面还有很多更值得学的东西。如果有可能,看看dotnet的源码是比较好的。可以了解很多底层知识,编译器方面,
语言方面,架构设计方面的东西,是很有价值的。
这两天看的一些帖子好像感觉VB是完全基于COM的?那岂不是VB6也被全盘否定了?
COM并不是指控件,控件是按照COM的规范实现的
任何新生事物都不可能凭空冒出来的,扯去外衣,总是“站在巨人的肩膀上”。
如果忽视了下面的巨人,就是被微软的行销手段欺骗了。微软总是吹一个大大的牛,一边吹嘘怎么怎么牛气一边拼命往里塞东西。要达到80%的完美度,也许要 .Net 2012 了。
有人问我:你会掂球不??
我说还不会
那人又问:那你还踢前峰??
我无语三年后我又遇到了那个人,
我问他:市比赛中没有见到你嘛!
他说:因为进球不行
我说:那你不是会掂球吗?
他无语术语学得再好,你只是个理论家
代码写得再好,你只是个程序员当你用某种计算机语言写满十万行有效代码时,再回过头来问问自己
什么是COM,什么是COM+,什么是CLR, .NET究竟是个什东西?
--!!
我基本 99% 的相信, 马子是在说我 ...
最起码我算其中一个 ...
只关心编程技术实现而对于产品或将编程技术转换为直接利益上显示出漠不关心的样子 ...其实就一个编程爱好者而言, 我自认为我确实缺少对于将知识转换为面包的能力
但这也和我自身的原因有关, 喜欢编程并不是要他为我做出什么, 编程对于我来讲就是对于知识的渴求.
对于技术的疯狂, 让我迷恋编程, 这种痴迷已经超越了温饱的价值观念
可能对我而言, 获取更多的知识, 更多的了解计算机原理, 比起卖一些代码更能满足我的需求.实在不敢和专业coder做比较, 毕竟我只是 “编程爱好者” 而非 “编程从业者”
A:了解一下是必要的。钻研的话看具体开发的需要。Q: 为何“了解一下是必要的”?
A:两个原因:一则技术是渐近演化的,了解它有助于理解新的技术;二则现时很多应用仍用到COM。Q: 为何“钻研的话看具体开发的需要”?
A:大势所趋,它将被.NET框架取代。但现在如果你需要用,那你就得弄明白它。
相反,相对于COM,我觉得.NET可能会比较短命。
打个不恰当的比方。比如说netscape的插件现在几乎都没人用了吧?