.net metadata/IL/BCL

来源:互联网 发布:康熙王朝 1080p 源码 编辑:程序博客网 时间:2024/06/06 10:04

从2003年开始接触.net以来,已经有七年之痒了。看过和研究过的.net书籍、资料已经不计其数,但是总是有点力不从心的感觉;新的framework版本出来,虽然有MSDN总是不尽人意,你总是要去寻求新的专门书籍来学习。

  有时候也在想那些书籍的作者是如何研习新的技术的呢。其实03年的时候就接触过serge Lindin的讲解MSIL的书,但是没有深究。直到6月份,将expert .net 2.0 assembly and il深入拜读之后,才豁然开朗。

  其实微软的BCL都是开放在那的,你反编译一下就能了解BCL的源代码,解读这些源代码就会对BCL有个深入的了解。当然很多作者其实更进一层,他们参与到.net开发与咨询过程中,有第一手的CLR的C++源代码,所以人家才会有如此的洞察力与深刻的理解。

  当然CLR的C++源代码我们是无法接触到了,但是解析BCL的IL也是能够让我们对dotnet platform的理解推进到比较底层的一个位置。

  dotnet大致可以分成三个层次:CLR的实现层(运行时引擎的实现,可以类比为java虚拟机实现),metadata/IL层,高级语言层

      除非我们想自己实现一个CLR,metadata/IL层已经是.net 平台理念的底层了。metadata/IL提供了.net platform的全部能力,所以是学习使用.net的基石。当然你只是知道高级语言比如C#也可以开发出各种各样的应用程序,但是充其量你只是一个很好的BCL API使用者而已;你的能力很大程度上受到C#的局限,当然你对BCL API也只是知道一个宏观的不详尽的结果,而且但有些API内部实现算法发生变化的时候可能对你来说是致命的:比如Asp.net升级的时候对于用户密码的hash算法变化,导致如果网站升级Asp.net将会导致原有的加密保存的用户密码失效(因为hash算法不一样了,呵呵)。如果你了解IL,你可以将原先.net版本的算法添加到自己的project中,让升级后的程序使用使用这个算法即可解决。所以深入了解metadata/IL可以让你在.net上活力全开,同时你也可以对BCL一览无余(除了部分internalcall和runtime实现之外),你可能再也不需要MSDN或者专家的书籍来告诉你种种BCL的使用方法了。从某种意义上来说,只有深入了解了metadata/IL的人才算得上真正意义上地在.net领域入门了。

  我的blog大部分精力将放在剖析BCL的各个基础类上,这个是我学习BCL的方式,当然中间会伴随着各种挫折和收获,愿公诸同好。

原创粉丝点击