提供.NET文章,资料,电子书,开发工具,专注于.NET技术推广  设为首页   加入收藏 
 登录   注册 
当前位置:首页 >> C#

C#高级编程读书笔记开篇(1)——.NET体系结构

出处: cnblogs | 2012-01-13 10:51:00 | 阅读:43 次
1.1 C#与.NET的关系 既然讲C#与.NET的关系,那么就说说什么是.NET,什么是C#,连他们分别是什么都搞不清楚,他们之间的关系更是无从谈起。 .NET:首先,.NET是一种技术,MS用来实现XML、WebService、SOA和敏捷的技术。技术产生的一般规律是有需求且现有技术不能很好的满足,继而出现新的技术,.NET技术就是应分布式应用程序的需求而生。.NET应用依赖于.NET Framework。(它是一个功能非常丰富的平台,可以开发、部署和执行分布式应用程序) 好了,不管你现在是

1.1 C#与.NET的关系

    既然讲C#与.NET的关系,那么就说说什么是.NET,什么是C#,连他们分别是什么都搞不清楚,他们之间的关系更是无从谈起。

    .NET:首先,.NET是一种技术,MS用来实现XML、WebService、SOA和敏捷的技术。技术产生的一般规律是有需求且现有技术不能很好的满足,继而出现新的技术,.NET技术就是应分布式应用程序的需求而生。.NET应用依赖于.NET Framework。(它是一个功能非常丰富的平台,可以开发、部署和执行分布式应用程序)

   好了,不管你现在是否理解什么是XML,什么是WebService,什么是SOA,什么是敏捷,什么是分布式应用程序,你现在需要了解的是.NET Framework是一个类库,.NET应用需要依托这个类库来运行。

    C#:它是一种基于现代面向对象设计方法的语言,而且它本身仅仅是一种语言,尽管用于生成面向.NET环境的代码,但是它并不是.NET的一部分。最明显的证据就是,.NET的某些特性C#并不支持。同样,C#的某些特性,.NET也不支持,比如——运算符重载。

    说白了C#和.NET仅有的关系就是俩人一起合作高效地开发应用程序。C#引用.NET类库中的类按照开发者的逻辑进行组装,C#的编译器将代码编译成中间代码,中间代码由.NET Framework去针对不同的操作系统(现如今在PC环境仅支持Windows,因此.NET的跨平台也只停留在理论阶段),编译成平台的专用代码,.NET Framework还负责代码运行期间的安全性以及垃圾回收等工作。

1.2 CLR

    公共语言运行库(Common Language Runtime CLR),是.NET Framework的核心,它在操作系统的顶层并管理着程序的运行,CLR为程序运行提供以下服务:

自动垃圾收集安全和认证通过BCL得到编程功能支持,包括:Web服务和数据服务

    1.2.1 平台无关性

    刚刚已经提到了,目前MS关于.NET的平台无关性还只存在与理论的范畴。MS当初设计.NET时的期望是:包含字节码指令的同一文件可以放在任一平台中,运行时编译过程的最后阶段可以很轻松的完成,这样代码就可以针对特定的硬件及操作系统特性运行在特定的平台上。换句话说,编译成的中间语言是.NET获得平台无关性的核心,这与Java字节码是类似的概念。

    1.2.2 高效

       前面把IL(中间代码)和java的字节码做了比较,实际上,IL比Java字节码的作用要广泛。IL的编译属于即时编译(Just-In-Time),而Java字节码确常常是解释执行的。

Java应用程序在运行时,把Java字节码转换为内部可执行代码。而JIT编译器并不需要把整个应用程序的代码一次编译完,而是只编译它调用的那部分代码。代码编译过一次以后,得到的本地可执行程序就存储起来,直到退出该应用程序为止,这样在下次运行这部分代码时就无需再重新编译。

      举个例子,在七八年前我们想在网上看电视剧的话,都是很大一个压缩包,里面是这个电视剧的所有集,我们需要将其全部下载下来,因为不下载完整的文件是无法解压的,也就无法观看。这就类似于直接一次性把程序所有的代码编译完再执行。我们下载完了以后,可能只对其中某几集感兴趣,翻来覆去的看那几集,对其他的一点也不感冒。(这样的人真的有,特别是那几集有一些需要被封杀的情节)而后来有一些断点续传之类的技术出现,比如BT,你想看电视剧的其中某几集,而不是对整个电视剧感兴趣,你可以用BT下载,想看哪集下哪集就是了,其他的下载了纯属浪费时间和流量。可以类比为JIT的编译方式,用到哪些编译哪些,永远用不到就永远不编译就对了。

      而且JIT会在运行时,根据程序运行环境,即运行在什么类型的处理器上,根据处理器的特性,利用特定的机器代码指令对IL进行进一步的优化,而传统的编译器在编译期优化代码,而不考虑特定的运行环境,因此优化的效果有限。

分享到:
相关文章:
  文章评论 (共有条评论)
发表您的评论(文明评论 违者屏蔽 违规举报 请勿争吵)
  • 本站提供.NET相关的文章,资源,代码,软件等...
  • 测试期如有问题,请联系站长 QQ:61343211
  • 其中部分来源于网络,如果您对本站转载了您的作品表示不满意
  • 请联系我们,我们将在3个工作日之内删除!
  • 本站持续修改完善中,如遇不便还请谅解....
  • © 2010-2011 www.aspx2.com .NET程序员
  •  
  • 关注我们: