一段时间以来我们对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

解决方案 »

  1.   

    另外这个子版叫做:COM/DCOM/COM+以我粗浅的可怜的认识,感觉其实它们很不同。至少COM/DCOM和COM+完全不搭界吧?前两者是控件,后者是组件是服务?
      

  2.   

    COM只是一种规范,一种标准,你可以不学COM,但你必须学习OOP,毕竟就目前而言,OOP还是比比皆是的。我想说的是还是那句老话,重要的不是语言,不是具体实现,而是编程的思想和实现的思路。打好基础,学好算法,一切就会好的
      

  3.   

    to super葛润鬓:我转的只是一家之言,没准儿是道奈特的软广告。你就不想反驳一下下么?
      

  4.   

    呵呵,何必去反驳呢?每个语言,每个工具的存在都有其理由,微软的梦想就是让所有的事情越来越简单,越来越傻瓜化,而.net就是它在向这个方向迈出的一大步,我们不可否认.net平台大大的提高了生产效率,但同时,它也让越来越多的程序员变成了名副其实的代码工人。封装的越多,我们离底层就越远,这样下去,终有一天大部分的代码工人的会被智能电脑所代替,而剩下的那部分程序员将会是金字塔上最顶部的那些所谓了解内幕的人们。因此,我认为一个开发人员应当打好基础,拓宽知识面,不要让语言牵着你的鼻子走,而要跳出工具的包围,站在更高的地方鸟瞰和展望这复杂的IT生态环境
      

  5.   

    你说的话和早上看到的一段有点像,摘在这里:“说语言重要因为,语言还不会,当语言会了之后,感觉算法重要,于是去看看数据结构,以为自己会了算法了,最后一看人家都给你做了,而且很好用,所以数据结构也不是特别重要了(可以暂时不理了),于是乎感觉比较难懂的是操作系统,这个黑盒子怎么运行的呢,不知道,我们的程序怎样和它配合呢.于是我们找了好多的高级编程的书来读,什么多线程,多进程,线程同步,独占...,好了以为自己是高手了,然后某一天,你要用到别人的东西的时候,发现这个东西运行在其他的平台,那个平台怎么回事?我们焦头烂额了,没办法还要学.研究 编译器 比如 VC 和 gcc 和 标准的C++ 编译器的差别,还有标准 ISO89 ISO99 ...大家看到了java 看到了.net 大家乐了。我们不用学那么多东西了,因为虚拟机都给大家做好了。库也有了,我们需要做的就只有业务了。我们成为高手了么?我们遇到问题怎么办呢?我们的调试水平还停留在 输出异常的水平上吧。大家都变得一样了。于是大家在这里讨论 .net 和java ........................................”来自:http://topic.csdn.net/u/20090512/01/bbd4508b-796f-4619-b9cc-4db2fcae763d.html 73楼
      

  6.   

    技术学再多,缩写知道再多,不写出好产品也没用。
    不管是哪种技术,都有他适用的地方,如果没有,那么这个技术肯定已经淘汰。
    知道什么时候在什么地方,用什么技术,这个才是架构师的价值。
    但要做到这个,最好是对计算机底层非常了解,基础知识非常扎实才比较好。
    否则不可能在短时间内对这些东西有个比较深入的了解。关于dotnet,我的感觉,他确实提高了很多开发效率,而且代码看上去优雅很多。
    com已经是10几年前的技术了,是基于c++的虚函数机制的,但在vc里写com是比较痛苦的事。com对c++程序员来说,就是个畸形。
    现在再深入学com恐怕没什么必要了,也很难。至于com+之类的,那就更不需要学了,除非你要用。
    学这些就是浪费时间,就好像我一直反对现在还去学MFC一样,那些过时的垃圾就别在上面浪费时间了。
    外面还有很多更值得学的东西。如果有可能,看看dotnet的源码是比较好的。可以了解很多底层知识,编译器方面,
    语言方面,架构设计方面的东西,是很有价值的。
      

  7.   

    COM只是Win32下的一种组件设计、实现技术。跟着微软混,就往.NET走跟着IBM混,就往Java走想独立,就跟开源混,走C/C++无论往哪走,COM这种组件设计技术都不受称赞
      

  8.   


    这两天看的一些帖子好像感觉VB是完全基于COM的?那岂不是VB6也被全盘否定了?
      

  9.   

    COM和COM+,从字面上看,只不过是多了个+号,可想而知,他们还是有关联的。
    COM并不是指控件,控件是按照COM的规范实现的
      

  10.   

    再怎么镶金嵌银,筷子终究是筷子,是用来吃饭的。
    任何新生事物都不可能凭空冒出来的,扯去外衣,总是“站在巨人的肩膀上”。
    如果忽视了下面的巨人,就是被微软的行销手段欺骗了。微软总是吹一个大大的牛,一边吹嘘怎么怎么牛气一边拼命往里塞东西。要达到80%的完美度,也许要 .Net 2012 了。
      

  11.   

    看到一篇文章写得不错,分享在这里:作为一个不是科班出身、没有正规学习过计算机知识的架构师,想在这里把我这几年学习的经历体验和大家分享一下,谈谈自己对架构师成长之路的一些感想。奠定扎实的理论基础千里之行,始于足下!技术不是一蹴而就的事情,而是长时间积累的成果。扎实的基本功是做好所有事情的开始。到现在我还记得对我影响非常大的几本书:■《C++编程思想》■《深入浅出MFC》■《Windows 核心编程》■《数据结构》《编译原理》我学习计算机正是按照这几本书的顺序,之前学习C的经历就不必说了,而转折点正是《C++ 编程思想》——它让我感觉到程序和语言竟然这么有意思,至今仍对虚表的概念记忆犹新,尤其指针的用法,对我以后学习Java语言有很大的帮助,对多态和语言的特性也有了很高的认识。《深入浅出MFC》这本书,记忆最深刻的还是其中强大无比的宏定义和对象层次设计。然而学习MFC的过程中,我遇到的最大问题就是:很多东西都是黑盒的,这引发了我刨根问底的欲望。所以后来我学习了《Windows核心编程》,这本书给我的最大收获,就是了解了很多操作系统底层的知识,操作系统是如何运行的。不过遗憾的是,如果当时从Linux 或者Unix 开始学习,应该会了解得更系统一些。之后我深入学习了《数据结构》和《编译原理》。这是我经过了很多实践以后,又回过头来重新学习。拿《编译原理》来说,以前对这门学科的了解非常有限,后来为了实现一个东西,要用到脚本语言,找来找去找到了Velocity(后来想想使用Groovy 应该更好一点),用了以后觉得很好。以前修改程序逻辑,是需要重新编译或者修改配置重新发布才能OK,而现在只需要编辑然后保存一下,就能得到自己想要的结果。这令我着迷,于是想知道它是如何实现的,翻看源代码才晓得原来还有 JavaCC这个东西。就这样,我从解释语言入手,逐渐开始了疯狂学习编译原理的过程,越发觉得编程语言非常有意思。回头想想以前和现在学习的语言,感觉程序语言就是在不断抽象:从汇编、C、C++, 再到Java、C#,再到更动态一点的语言如Perl、Python、Ruby 等等。不管它再怎么变、再怎么抽象,还是编译原理应用的产物。讲了这么多,就是想强调理论基础知识的重要性!虽然我们现在使用的框架如此之多,但是如果你有了扎实的基础理论知识,这些东西就跟玩具一样。基础就是一个无招胜有招的杀手工具。
      

  12.   

    作者简介:胡喜,就职于阿里巴巴集团旗下支付宝(中国)网络技术有限公司。担任技术架构师,负责支付宝技术架构规划,解决方案等相关工作。平常喜欢研究 OSGi、SOA、动态语言等技术。
      

  13.   

    培养完善的抽象思维抽象的能力也是作为一名好的程序员必须具备的能力。我们在考虑问题的时候可能会遇到错综复杂的场景,从这些迷雾中找到一条明路是我们做好程序员的关键。这些年来学习了很多框架,回过头来想想自己都有点后怕,这也令很多初学者望而生畏。但认真想想,真的有那么可怕吗?让我们从语言层面逐渐剖析这个问题,应该很容易做出解释。程序语言就是我们在某种场景下交流的工具,汇编是机器语言;C和C++ 是编译型语言,它们是一种针对汇编的高级抽象;而Java 和 C# 就是更高级的抽象了,甚至于抽象了一层虚拟机出来(这个产生的影响就是,之后的很多高级语言评判标准,都是“是否支持虚拟机”),再到后面的许多动态语言,那就是更抽象了。说到这里你会问到,讲这么多语言类的东西和学习框架有什么联系?让我慢慢道来。我们使用一种语言就是用它的语法进行编程,而学习一个框架实际也是为了用这个框架所提供的语言来写程序:Struts——我们使用很多配置还有 Action 和Form ;Spring——我们使用Bean 模型,这是它的最基本模型(现在 Spring 已经庞大得让很多人无法学习了);iBatis——我是用它的XML-SQL 模型;JBPM——使用它所谓的GOP模型(面向图元的编程);Web flow——是在使用它的页面流模型。这样的例子我可以举出很多(这也是DSL现在如此流行的原因)。很多人会说:学习这么多我已经晕掉了!不妨想想,为什么会有这么多东西存在? Struts 是为了解决Web编程的困扰;iBatis、Hibernate 是为了解决在数据库编程时的麻烦;原有的Web页面编程都是独立的具体单元,Web flow能够让这些页面形成流的形式,让开发更顺其自然;从JBPM的GOP可以看出,JBoss 的开发人员对抽象的理解度很深。我举这么多例子,实际是让大家不要害怕现有的这些框架,有了扎实的基础,抽象的概念是很容易理解的!缺乏抽象的能力,你就不能更快更好地解决问题。实际抽象能力衍生出来的一点就是,需要我们对已学过的知识定期进行梳理。这样能让你巩固已有的知识,为以后的学习做好准备。知识就好比一棵生物进化树,最终目标都是一样的,关键是看如何选择进化的路线,让自己的知识结构能够有机的结合在一起。做到学以致用。过一段时间就梳理一下,你会有更多的发现。
      

  14.   

    扩充现有的知识层面在巩固原有知识结构的前提下,我们更需要扩充现有的知识面。井底之蛙,看到的永远是井口大的那片天,只有跳出来,才能看见无限美好的蓝天白云。我曾经也常常局限在自己已熟悉的那块领域沾沾自喜,但是走出来以后才发现,自己原本是多么肤浅!学习的知识越多,对新事物的洞察力将会越准确!这样有助于你巩固已有的知识,系统地学习新的知识。那我们是否需要无限平行式的学习知识呢?我的答案是“No”。人的知识面是有限的,我们需要一个T型的知识结构。你的知识面要广,但是对于某些技术点要专,这才是做好一个架构师的关键。有时 “专”可以让你对很多“广”的知识产生触类旁通的感觉。实践也是非常重要的一环,不要有畏难心理,觉得这个东西太难,我无法完成!有时候事情的结果可能是糟糕的,但是过程是非常宝贵的,其中可以学习到很多东西,同时也可以让自己避免轻浮的心理。还要着重培养自己良好的沟通与解说能力。架构师面对客户群具有多样性,有技术工程师、业务人员、公司管理层,甚至直接面对客户等。要把一个高度抽象又复杂的系统说清楚,这对于架构师来说也是一种挑战。所以架构师必须掌握技巧,应用多种表达方式来阐述架构与产品设计、与具体业务、与公司战略之间的关系等。培养良好的沟通能力,多和周围的人进行沟通,你能够学到更多的知识!“平衡”是架构设计的艺术,我们设计一个东西,就是在平衡各方面的利益。平衡有可能是时间上的,比如需要支持多少年的系统可用性;平衡有可能是纵向的,比如要支持系统的向下兼容性,要保证程序员编程模型上的简单性等等。这种平衡就是因人因时因地而异了。平衡的把握很可能就是评判一个架构师架构水平的标准!架构师在设计的时候应该权衡维度、整体性和扩展性,考虑问题时不要局限于自己的一亩三分地。多种点田,会长出很多庄稼的!拥有一个扎实的基础,不断扩充自己的知识面、完善知识体系,在对现有知识抽象的基础上,不断去沟通实践,你将获得更强的架构平衡能力。最后我还要说,业务知识非常重要,这个是你实践的关键! 以上转帖来自:http://blog.csdn.net/programmer_editor/archive/2009/05/08/4159289.aspx
      

  15.   

    com 技术值得我们好好学习
      

  16.   

    com 技术值得我们好好学习
      

  17.   

    没接触过com,也不晓得怎么说
      

  18.   

    老马,有点商业头脑了 :)记得在学校的时候,
    有人问我:你会掂球不?? 
    我说还不会
    那人又问:那你还踢前峰??
    我无语三年后我又遇到了那个人,
    我问他:市比赛中没有见到你嘛!
    他说:因为进球不行
    我说:那你不是会掂球吗?
    他无语术语学得再好,你只是个理论家
    代码写得再好,你只是个程序员当你用某种计算机语言写满十万行有效代码时,再回过头来问问自己
    什么是COM,什么是COM+,什么是CLR, .NET究竟是个什东西?
      

  19.   


    --!!
    我基本 99% 的相信, 马子是在说我 ... 
    最起码我算其中一个 ...
    只关心编程技术实现而对于产品或将编程技术转换为直接利益上显示出漠不关心的样子 ...其实就一个编程爱好者而言, 我自认为我确实缺少对于将知识转换为面包的能力
    但这也和我自身的原因有关, 喜欢编程并不是要他为我做出什么, 编程对于我来讲就是对于知识的渴求.
    对于技术的疯狂, 让我迷恋编程, 这种痴迷已经超越了温饱的价值观念
    可能对我而言, 获取更多的知识, 更多的了解计算机原理, 比起卖一些代码更能满足我的需求.实在不敢和专业coder做比较, 毕竟我只是 “编程爱好者” 而非 “编程从业者”
      

  20.   

    com 就像是在写纯Windows程序,com+ 就像在 unix 下安装.net 写程序 
      

  21.   

    最近CSDN怎么老推荐一些价值不高的帖子
      

  22.   

    没有写过各种各样的应用,没有犯过各种低级到高级的错误,就不要去谈这些东西了,因为没意义就好像是神雕侠侣最后一段,杨过等人在华山遇到的那一批江湖浪人,不知从哪听来了华山轮剑的典故,也在那边凑热闹.积累的东西到了这个程度,自然也就能想明白这个层次的问题. 否则也只能是凑凑热闹,YY一下而已.再说了,大家都只是在MS框架下作东西,跑得了和尚还是跑不了庙, 基于过程的开发依然健壮, OOP也并非永远
      

  23.   

    小结:Q: COM还值得我们认真钻研么?
    A:了解一下是必要的。钻研的话看具体开发的需要。Q: 为何“了解一下是必要的”?
    A:两个原因:一则技术是渐近演化的,了解它有助于理解新的技术;二则现时很多应用仍用到COM。Q: 为何“钻研的话看具体开发的需要”?
    A:大势所趋,它将被.NET框架取代。但现在如果你需要用,那你就得弄明白它。
      

  24.   

    .NET不会完全取代COM的,COM的思想会继续下去,即使微软放弃了,还会有其它公司拾起来。
    相反,相对于COM,我觉得.NET可能会比较短命。
      

  25.   


    打个不恰当的比方。比如说netscape的插件现在几乎都没人用了吧?
      

  26.   

    http://topic.csdn.net/u/20090615/19/d065b387-38d8-4f52-ac82-df3917fa8e21.html?seed=66005205&r=57731484#r_57731484