• 推荐
  • 评论
  • 收藏

CLR(公共语言运行时)到底藏在哪?

2022-12-04    7941次浏览


大家好,今天这篇文章不是由我来跟大家讲解什么技术,而是我们一起来探讨.NETFrameWork中的重要部件CLR的秘密,众所周知CLR是所 有非托管代码的运行时环境,.NET技术平台发展到今天已经经历了近10年的风风雨雨,各大书店数不胜数的.NET技术书籍,大部分都是讲解一些怎么运 用.NET平台来发开某种应用软件,如:B/S的ASP.NET、C/S的Winform等等,本人苦于想寻找一本能讲解平台背后故事的技术书籍,对一些 初学者来说可能对传统的B/S和C/S的软件应用方式有点搞不清楚,他们到底有什么不同,很多人都认为他们都是差不多的,但是作为我们有兴趣挖掘平台背后 故事的人来说,他们的相同点是在我们VisualStudio开发环境中的开发方式差不多,都是运用事件驱动模型来编写软件,但是随着我们深入的研究会发 现B/S和C/S两者之间有天大不同,这样的理解可能有点片面,我们要站在不同的角度、不同的层次上来看他们的不同点和相同点,如果我们仅仅是把自己当成 一名技术工人来看的话,我们对着一套工具开发、编译、部署、运行OK,都是差不多的,各大软件平台厂商也考虑到了,如果他们将不同的软件开发方式都以不同 的方式体现给我们那我们程序员不如去做死了,今天一套明天一套,天大的精力也受不了这样的折腾啊;所以他们竟可能的将不同的东西通过层层中转层层封装的方 式,为我们展示那些背后其实很复杂但是用起来极为简单的开发工具,我们要时刻反省自己如果我们长期这样下去,是不是我们的饭碗很不可靠,工具越来越简单, 面向开发人员的门槛越来越低,随便找个培训班上个一段时间就成了我们的竞争对手,我们的核心竞争力在哪里,我们凭什么要跟领导谈加工资的事情,你要开 5000,领导随便在外面培训班找两三个过来加在一起才5000,反正干的事情都差不多,无非就是用现成的工具来开发软件,比你差的可能仅仅就是业务了;[王清培版权所有,转载请给出署名]

上面有点扯远了,我是为了下面的内容做一个引导吧,我们要成为那些培训班里出来的开发员觉得高不可攀的高手,这句话读起来有点别扭;我们要向下走, 我们要去研究为什么这么好的软件我们为什么不能开发出来,VisualStudio也是用.NET开发的,为什么我们开发的东西仅仅是那些控件平凑起来的 傻瓜式的应用软件,应用软件基本上都是一些对数据库的增、删、改、查操作,我的领导曾经也说过软件不就是那些东西增、删、改、查嘛,有什么难得,虽然我觉 得领导的话可能点打击我们程序员,但是我们开发的东西就是这些,没什么技术含量,稍微懂点技术的人,你别想忽悠他,他扣扣手指就能算出你成本多少,有无技 术含量;现在的应用层技术太多了,你一天学一样都学不完,我们程序员都是人对不对,我们也要生活,我们不可能为了技术抛开自己所有的生活,人活着短短的几 十年,我们是靠着对技术的一片痴心才支撑到最后,如果整天的工作都比较饱和,就算我们的意志力说:“我可以坚持”,但是我们的身体已经被我们折腾的奄奄一 息;我们作为.NET开发人员是否去研究一些那些看不见的东西;请看图:[王清培版权所有,转载请给出署名]
1.

我来解释一些上图中的大概意思,我们的VisualStudio工具本身的启动也是需要依赖.NETCLR运行时环境的,当它启动成功后我们就可以在它里面进行开发了,所有的过程都是一环套一环,我们在来看一副图:[王清培版权所有,转载请给出署名]

2.

[王清培版权所有,转载请给出署名]

这幅图介绍了我们在开发阶段的过程;

3.

[王清培版权所有,转载请给出署名]

这幅图介绍了我们程序开发完成后的运行过程;

我似乎有点跑题,只是为了进一步跟大家讲解我的疑惑,也就是我们要探讨的问题;图1中的一个问号所表达的意思就是今天我们所要探讨的主 题,“CLR(公共语言运行时)到底藏在哪?”,原理我想看过几本.NET书籍的人都能说的出来,但是我就疑惑了,它到底是什么,是不是一个DLL或者一 系列的DLL文件组成,毫无疑问的是CLR肯定是由非托管底层C++、C、汇编之类的代码所编写,我们如何下手去研究它,到哪里能找到相关的技术文档, 从.NetFramework2.0到现在最新的4.0,一直没变的是CLR,为什么它那么强大,以不变因万变呢?在今天各大博客园里的高手或者世外高人 是不是已经参透其中的奥秘还是处于研究期,能否将自己的研究心得或者一些经验跟我们这些垂涎欲滴的“色狼”分享一下;技术的海洋里,有些东西是高深莫测, 以不变因万变,那种未卜先知的神奇力量真的让人向往,想想看我们的软件多么的“垃圾”;事实摆在面前,我们要想在技术的海洋里有属于自己的一艘航母,就必 须沉淀下去,研究那些海底下不动声色的“怪物”,这篇文章我也是想给各位朋友提一下,我们共同的敌人是谁“CLR”,我们要把它挖掘出来大家一起分享,不 管是在底层也好,不管是C++、C、汇编、机器码也好,我想我们的这股激情是用不削弱的,兄弟们我们要一起战胜那些住当我们前进的对手;

总结:似乎今天的文章没能突出主题,也许我是太激动了或者是太急于想搞懂某些问题,希望对CLR有研究的高手能指点一二;谢谢

原文地址:https://www.cnblogs.com/Leo_wl/p/2084969.html