谁知道这篇文章的出处啊?谢了。

问题描述

.NETandC#.Netisthedevelopmentplatformbecause.Netproceduresforrunningthecompiler(JIT.JustInTime)andtheSafetyManagementCode,MeanwhiletoC#andothers.netlanguage(vb.net.c++.netetc.)code,C#languageisanobject-orientedprogramminglanguage,Butevenoneofitsowncategorydidnotincludeallthecategoriesareincludedinthe.net.Thisiswhy.netunderalanguageclasscanbecalledalanguageotherreasons--becausetheyarewithabaseclass(Object)thederivedclasses.Inaddition,Microsoft'sgoalistoenable.Netchangesoftwaredevelopment,distributionanduse,Microsoft.netframeworkincludestwocomponents:."netgenericRun"and."netClassLibrary."Fromthiswecanseethat.netandC#relations.C#retainedtherighttothebottomoftheoperatingsystemAPIcallsanddirecttarget.CertainlyseeJavaasthespeedandtheheavyJNI,SowhenC#specificallydesignedtoretainthecharacteristicsoftheseC++,animportantguidetoavoidmistakes.C#alsocanbeusedtomakethedevelopmentofsystemsoftware.Applicationsareordinarycall.Netproceduresset(equivalenttotheJavaclasslibraries.proceduresaresetinsidebytecode,notnativecode),speed-sensitive,orplatform-relatedapplicationsdirectlytoaspecificstatementcallingWindowsAPI.Thatwouldfunctionality,efficiencyandspeedaretakenintoaccount,resolvealltheapplicationlayerandthelayer(C#canbeusedtowritesoftware),andonelanguageisusedtosolvealltheproblemsmostoccasions,MSC#veryconfident.But,infact,usingC#developmentsystemsoftwarearequitepossible,afterall,aftertheC#packaging,Cthanpurebredoralittlebitslower,butcertainlyhigherthanpureC#bytecodemuchfaster.ButwhenyouuseC#softwaredevelopmentandapplicationofthetime,itinevitablyinvolvesthebottomofthecall,canfacilitatethedirectuseofC#toachieve,asJavadidnotsitonthemovementofC++forhelpbytheanticsoftheJNIcall,itisclever.OntheWindowsplatform,.NetCLRrunsfastthanJavaJRE,itisnotstrange.Becausewhenaproduceisrunned,OnlyCLRsufficientspeed,thenC#bytecoderunning,Generalapplicationwillnotfeeloutfasterthanpurelylocalcodeslow.IfeelthisisbasicallyfeelingoutCLRactivationandloadingproceduressetsignificantlydelayed,withouteffectiveAWT,SwingorSWT,JVMstartloadinglibraryandthedelayisveryobvious,Thisisreallybadplace,regardlessofSun,IBM,BEAorOpenSoucecommunities,theJVM'sefficiencywillcontinuerefueling.

解决方案

解决方案二:
外文资料翻译译文.NET与C#.net既是运行库又是开发平台,因为.net负责C#程序的运行时编译(JIT,JustInTime)和代码安全性管理,同时它又为C#和其他.net语言(vb.net,c++.net等)提供代码支持,C#语言是一种面向对象的程序设计语言,可是它本身连一个类都不包括,所有的类都包含在.net中,这也是为什么.net下一种语言编写的类可以被另一种语言调用的原因--因为它们都是同一个基类(Object类)的派生类。另外,微软的目标是让.net彻底改变软件的开发、发行和使用方式,微软的.net架构中包含了两方面的组件:“.net通用运行库”和“.net类库”,从这里就可以看出.net与C#的关系。C#保留了对底层操作系统API的直接调用和指针。肯定是因为看到了Java的速度问题以及JNI的笨重,所以在设计C#时特意保留了这些C++的特性,避免了重导覆辙,也使得C#可以用来开发系统软件。普通应用都是调用.Net的程序集(相当于Java的类库,程序集里面都是bytecode,不是nativecode),对于速度敏感,或者平台相关型应用,直接通过特定声明来调用WindowsAPI。这样就可以功能,效率和速度都兼顾,解决各种各样的应用层问题和系统层问题(可以用C#来写系统软件了),用一种语言来解决所有场合的大部分问题,所以MS对C#很有信心。不过实际上完全用C#开发系统软件还是不太可能的,毕竟经过C#的包装以后,比纯粹的C还是要稍微慢一些,但是肯定比纯粹的C#字节码快多了。但是当你用C#开发应用软件的时候,却不可避免的涉及到底层调用的时候,可以方便的直接用C#来实现,不用像Java那样束手无策的去向C++求救,通过笨拙的JNI调用,显得高明。在Windows平台上.NetCLR比Java的JRE速度快,联想到当年MS做的JVM,所以也不是很奇怪。只不过CLR速度足够快的话,C#字节码运行起来,普通应用就不会感觉出来速度比纯本地代码慢。我的感觉就是这样,基本上感觉不出来CLR启动和加载程序集的明显延迟,而不管用AWT,Swing还是SWT,JVM启动和加载类库的延迟是非常明显的,这就是真正不妙的地方了,不管Sun,IBM,BEA还是OpenSouce社区,在JVM的效率上还要继续加油。开发工具IDE,老生常谈了,不过确实也很重要,对比一下Visual.NetStudio和做的最好的JavaIDE,JBuilder或者Eclipse吧,不在一个级别上。写普通的软件,甚至Web应用,IDE作用不明显,特别是对于有Unix背景的人来说,更愿意使用纯文本工具。但是涉及到GUI开发和企业应用的开发,一个强大的工具是必须的。对GUI开发来说,Visual.NetStudio开发GUI就如同使用VB开发GUI,方便和快捷的难以想像,再加上C#的程序集比VB的控件集,比VC的MFC的设计优秀的不在同一个级别上。所以在开发GUI方面,C#比VB还更加优秀,基本上和Borland的C++Builder的水平相当,其操作的便捷还在其之上。反观Java,Eclipse空有一个SWT,也不去做一个好点的GUI开发环境出来。JBuilder是公认的最好的JavaGUI开发IDE,但是仍然难用的很,为什么?关键处还在于AWT,Swing和SWT图形库的布局设计上。这3个图形库统统都是使用布局管理器来布局,布局好了以后才能放控件。不能够直接拖放控件实现绝对像素定位,也很难实现对控件大小,位置的操纵。这也是有一定的原因,Java为了实现跨平台的GUI,因此不能够使用像素定位,否则在不同平台会有不同的外观表现。而C#就不管那么多了,既然只在Windows平台上实现,直接就采用像素定位(当然布局定位也可以用),外观的控制自然可以“所见即所得”了。由于这个先天的原因,Java的GUI开发是不可能比C#更方便的,JBuilder能做到这样,也差不多到极致了,大家也只能忍受了。企业开发方面,C#需要SQLServer(Oracle也可以,但是不如SQLServer方便),IIS和MTS的配合,Java需要DB,AppServer的配合。由于C#只管SQLServer和IIS,甚至只管IE浏览器,所以Visual.NetStudio可以做的很方便,整个开发过程一体化,不用考虑其它的实现。而JBuilder需要考虑各种不同的软件实现,特别是AppServer,简直就是五花八门,JBuilder能够做到这样,在图形设计器里面设计EJB,从DB里面导入EntityBean,方便的在所有的主流的AppServer上自动编译EJB,部署EJB,测试EJB,也算做到极致了。由于AppServer五花八门和EJB部署本身的高度复杂度的原因,Java的企业开发也是远远不如C#来的快捷和方便。这些原因导致了有时候一个J2EE项目会比.Net开发周期长两三倍的现象。说完了C#和.Net的优势,再说说不足:1.Net平台支持多语言从技术上和开发角度来说是符合现实的。从ISV角度来看,完全没有支持多语言的必要,难道做一个项目,不同的模块用不同的语言来实现有价值吗?反过来说,这是一个灾难。对于将来的维护的升级来说是一个巨大的灾难,用VB.Net写的模块,C#程序员改不了,用C#写的模块,J#程序不能维护,人为的造成了混乱。再说C#又不是什么很难的东西,学习曲线也不高,何必不用C#,非要和自己过不去呢?支持多语言的唯一目的在于吸引其它语言的开发人员转到.Net平台上来,不过当你被吸引转过来以后,还是发现用C#比较好,用你原来的移植语言不爽,还是不得不重新学习C#,这才发现上了大当了。所以完全是一个商业阴谋。2.Net在将来也不可能支持其它操作系统平台。在前面已经提到了.Net和IIS,MTS,SQLServer等MS平台软件捆绑的很死,将来还要捆绑更多的MS软件,像IE,MSN等等。况且.Net依赖Windows也非常紧密。虽然有一个OpenSource的Mono项目在移植CLR到Linux上来,不过据我来看,也只能做到仅此而已,光把CLR移植过来是没有多大价值的,需要把IIS,MTS,IE,MSN,SQLServer等等软件统统移植过来才能构成一个Linux平台上的.Net,但是这可能吗?所以MS开放C#语言和CLI的规范又是一个商业阴谋,表面上装出一副拥抱开放的姿态,骨子里面却垄断的很。而且从MS的商业行为也可以看出这一点,我们知道MS把全部身家都压在.Net上和J2EE阵营竞争,如果.Net是一个开放平台,可以自由移植到Linux上,那么MS有什么理由不支持Linux操作系统呢?如果Linux上的.Net支持的很好并且普及开来的话,J2EE恐怕只有在AIX和Solaris上苟延残喘的份了。正是因为MS要把.Net锁定Windows,所以才害怕Linux,如果Linux在服务器市场击败了Windows,那么.Net也只剩下苟延残喘的份了。所以现在MS视Linux为眼中钉,肉中刺。所以MS开放C#和CLI,除了做作姿态之外,也可以在更多的OS上普及C#编程的教学,等你们熟悉了C#编程,再乖乖的在我的Windows上替我开发吧。3众所周知,C#和.Net的学习曲线比Java和J2EE平坦的太多了。C#学习比Java轻松很多,而.Net框架学习比J2EE轻松太多了。那么Java程序员投入多了几倍的时间和精力就完全没有价值了吗?况且从开发角度来说,同样的项目C#也要比Java周期短,程序员开发轻松很多,难道这个世道对Java程序员这么不公平吗?没有理由下的功夫少,却得到同样的收获。经过我对C#和.Net的粗浅研究,我发现其实这是一个傻瓜相机和专业相机的问题。MS做出来的.Net的好学,易用,就如同傻瓜相机一样,一按就OK,不过照片质量一般。专业相机麻烦是麻烦,不过经过专业人士的手,拍出来的都是高质量的照片,当然你让普通非专业人员去操纵专业相机确实太勉强了一些。.Net确实太方便了,方便到了对组件的管理都对程序员透明化了。数据库缓冲池是由OLEDBDriver自动管理的,组件的管理是由MTS自动管理的,程序员不需要去管这些中间层的问题,开发好组件,用GAC注册一下就好了,使用的过程中由.Net平台的MTS等等实际上完成AppServer功能的服务自动处理。.NetFramkworkConfiguration配置工具也是如此的简单,都是MS在帮你代劳。在运行.Net程序的平台上注意一下dllhost.dll这个进程,就是专门管理组件的。不过从反面的角度来看,开发人员丧失了对组件部署的控制能力。在J2EE的世界,EJB或者说J2EE部署者是一个很重要的脚色,绝对不是可有可无,企业应用软件的运行性能很大程度上依赖对对于中间层组件的部署和性能调节和排错。所以EJB组件本身就是一个可以通过内部的XML配置文件参数进行性能自调节的组件,AppServer更是提供了数量庞大,功能繁多的调节和部署选择。对于一个要求比较严格的企业软件来说,你要提供高效,稳定和安全的运行,手工进行复杂的tunning是必须的。对于只有一个全自动按钮的.Net傻瓜相机来说,实在是无能为力。所以有所得就必有所失,.Net在赢得了大部分普通程序员的同时,仍然无法进入企业高端领域,或者至少在目前是如此。不过不排除将来有这个可能性。再看J2EE,EJB确实笨拙,开发起来速度也慢,但是一个构造良好,设计合理的J2EE应用经过高手的tunning,绝对是稳如磐石,令人放心。其系统的质量也不是目前的.Net所能比的。说到这里觉得很有趣,MS从开始到现在,几乎所有的软件产品都在充当傻瓜相机的角色,就是到了.Net,MS也没能改变宿命。所以我敢断定,将来J2EE和.Net的处境也会类似今天服务器市场的WindowsServer与Unix,数据库市场的SQLServer和Oracle。普通应用会更多的采用.Net,而高端应用更多采用J2EE。另外.Net还有一个不利的因素是J2EE虽然好像阳春白雪,其实下里巴人。J2EE既可以采用昂贵的商业AppServer和DB的强强组合,也可以采用完全不要钱的免费方案,用成本来冲击低端市场,所谓各有各的活法。这也是MS比较头疼的。4分布式领域的不成熟,这体现在几个方面:(1)分布式应用的Session管理.Net的方案是几台AppServer把全局Session放在一个共享的SQLServer中,实在是...笨拙,不用再评价了!好好学习一下Weblogic集群的内存复制技术吧!.Net还差的远呢(2).Net的分布式组件,MS的DCOM已经过时了,让我们看看在.Net里面如何实现分布式组件。首先在.Net中,普通组件和分布式组件是不同的,在编写代码的时候采用的方法就不同。一般组件类似于J2EE中的普通类,分布式组件要采用TCPChannel或者HTTPChannel来实现,完全两种不同的编程模型,MS建议采用HTTPChannel,因为可以穿越防火墙。而对于J2EE应用来说,一般商业组件都采用EJB编写,分布还是不分布,区别只是部署的时候放不放在一台机器而已。我没有仔细研究过TCPChaneel或者HTTPChannel,不便于和EJB做对比,不过感觉上,这种Channel的可编程性和可管理性比EJB还差得远。(3)XMLWebServices,.Net上的WebServices加了一个耐人寻味的XML,什么原因大家体会一下。.Net的WebServices实现要靠IIS的ASP.Net,把组件以asmx的后缀放到IIS的Web目录下,当通过浏览器第一次访问的时候,WebServices自动编译和发布,同时生成WSDL。编程起来倒是好方便,但是我隐隐约约的感觉到MS的WebServices方案另有用意。什么用意呢?联想到第(2)点,我觉得MS的XMLWebServices是DCOM的替代品。也就是说MS没有想到一个更好的解决分布式组件的方法,既可以容易的使用C#编程,同时又很容易部署,很容易进行分布式组件调用。万般无奈之下,在上面的Channel方案之外,又搞出这个XMLWebServices,其实就是MS的分布式组件而已。但是HTTPSOAP调用的效率和安全性目前还比较差,还不能和EJB调用相比。况且XMLWebServices仍然没有解决可管理性的问题,WebServices的性能调节看来只能靠IIS了。看看吧,EJB确实够笨拙,但是可编程能力,可管理能力,至今仍然是MS望尘莫及的。所以就目前的.Net框架来说,MS还是暴露了在企业领域资历不够的弱点,Anders是程序语言设计的天才,设计了TurbolPascal(也是我最早最喜欢的编程语言,在高一开始学习),Delphi和C#,不过他还不是企业领域的天才。
解决方案三:
不知道出处。不过看到了。有用!

时间: 2024-09-17 14:46:20

谁知道这篇文章的出处啊?谢了。的相关文章

听说这篇文章搜罗了编程界最牛的12位大神

简评:是的,你没有看错,本文中出现的每个人都是不折不扣的大神,每一个都战力爆表.他们是程序界的先驱,他们所做出的贡献或多或少地影响着我们的生活,被世人瞻仰.当然,这篇文章也不是纯粹的供人敬仰膜拜,小编则是希望这些大神能成为我们普通人学习的榜样,奋斗的目标.也许在20年后,不懈努力刻苦学习的你也能出现在这份榜单中,成为大神俱乐部中一员呢?谁知道呢? 在这篇文章里面,我们将会看到 12 位空前最伟大的程序员(排名不分先后),下面就开始吧! 1. Dennis Ritchie  Dennis MacA

为什么SEO博客会不受待见这篇文章

摘要: 最近发现有不少人通过百度搜索SEO博客为什么不更新了来到了我的博客,访问的页面是为什么SEO博客会不受待见这篇文章,有人搜索这个问题的确很容易理解,一方面越来越多的人加入 最近发现有不少人通过百度搜索"SEO博客为什么不更新了"来到了我的博客,访问的页面是"为什么SEO博客会不受待见"这篇文章,有人搜索这个问题的确很容易理解,一方面越来越多的人加入到SEO队伍,另外确实绝大部分SEO博客都极少更新或者是早已停止更新了,我的SEO博客也是如此,更新的极为缓慢,

不知道大家对DES有没有兴趣,今天在整理的时候,看到我在一年半前翻译的一篇文章。

如何实现 DES 算法(全). 这是摘自清华BBS的一篇文章,洋文的,小弟把它翻成中文请各位高手指点.分号(:)后的话是小弟的翻译,井号(#)后的是小弟的一点感想.                           How to implement the                      Data Encryption Standard (DES)                         A step by step tutorial                     

微软的这篇文章能彻底解决visual interdev的调试问题(那位仁兄E文好,把她翻译一下)

interdev|visual|解决|微软|问题 微软的这篇文章能彻底解决visual interdev的调试问题需要安装visual interdev server,在visual studio 6.0的第二张盘上 HOWTO: Configure Your Web Server for Visual InterDev 6.0 ASP Debugging ----------------------------------------------------------------------

推荐一篇文章

防止使用者按上一頁按鈕 討論區上常有網友問到這個問題, 如何防止使用者按回上一頁按鈕, 為何會問這一個問題? 應該通常是在防止使用者重複執行一個應用程式, 例如資料庫的新增, 如果使用者按了回上一頁, 有可能會造成重複新增資料, 今天這篇文章就要介紹如何 "盡可能" 的防止使用者按回上一頁 伺服端防止快取 首先來看看伺服端的方法, ASP 的 Response 物件提供了幾個網頁快取 (cache) 相關的屬性, 說明如下 屬性 說明 CacheControl 判斷代理伺服器 (Pro

安防人 这篇文章你能看懂多少?

安防人 这篇文章你能看懂多少? 在互联网技术高速发展的今天,因网络的开放性.隐蔽性.跨地域性等特性,许多安全问题亟待解决,比如在过去的2015年,全球便发生了多起网络安全事件,如美国人事管理局OPM数据泄露,规模达2570万,直接导致主管引咎辞职:英宽带运营商TalkTalk被反复攻击,400余万用户隐私数据终泄露:摩根士丹利35万客户信息涉嫌被员工盗取:日本养老金系统遭网络攻击,上百万份个人信息泄露等. 虽然这些数据我们时常耳闻,但安防行业人士仍然会认为网络安全问题距离我们仍很遥远甚至无关,但

近期我在CSDN的《畅言》栏目上发表的几篇文章

        CSDN的<畅言>栏目给大家自由表达个人意见的平台,实在是非常的不错.本人近期在上面发表的3篇文章如下:         1. <程序员既要写好代码,又要写好文档>:http://www.csdn.net/article/2014-08-12/2821148         写作原因:在实际的软件开发项目中,很多同事把绝大部分的精力放在了写代码上,根本不注重文档的编写.这就导致一个软件的代码只有少数几个人(也许就只有一个人)能够看懂,到后面有人来接手的时候,就会双眼

如何用 Caffe 生成对抗样本?这篇文章告诉你一个更高效的算法

Fast Gradient Sign方法 先回顾一下<杂谈CNN:如何通过优化求解输入图像>中通过加噪音生成对抗样本的方法,出自Christian Szegedy的论文<Intriguing properties of neural networks>: 其中n是要求的噪音,是相应的系数,L是x+n属于某个类别的loss,c是某个错误类别的标签.论文中用来得到图像噪声的办法是L-BFGS,这个方法虽然稳定有效,但是很考验算力的,Christian在Google反正机器多又强,用这个

如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(下)

上一篇文章发出来之后,为了掐死我,大家真是很下工夫啊,有拿给姐姐看的,有拿给妹妹看的,还有拿给女朋友看的,就是为了听到一句"完全看不懂啊".幸亏我留了个心眼,不然就真的像标题配图那样了.我的文章题目是,如果看了这篇文章你"还"不懂就过来掐死我,潜台词就是在你学了,但是没学明白的情况下看了还是不懂,才过来掐死我. 另外,想跟很多人抱歉,因为评论太多了,时间有限,不能给每个人回复,还望大家谅解.但是很感谢一直在评论区帮忙解答读者问题的各位,就不一一@了. 这里郑重感谢大