《CLR via C#》读书笔记1 之 CLR的执行模型

1. 将源代码编译成托管模块

托管模块是一个标准的32位microsoft windows可移植执行体(PE32)文件或者是一个标准的64位Windows可移植执行体(PE32+)文件,他们都需要CLR才能执行。

2. 将托管模块合并成程序集

3. 加载公共语言运行时

4. 执行程序集的代码

IL可视为面向对象的机器语言。Microsoft提供了一个名为ILAsm.exe的IL汇编器和一个名为ILDasm.exe的反汇编器。

IL是基于栈的。意味着它的所有指令都要讲操作数压入(push)一个执行栈,并从栈弹出(pop)结果。

Microsoft C#编译器默认生成的是安全的(safe)代码,这种代码是否安全是可验证的,然后,也运行开发人员写不安全的(unsafe)代码。不安全的代码可以直接操作内存地址,并可操作这些地址处的字节。使用不安全的代码需要用unsafe关键字标记。除此之外,还要求用/unsafe编译器开关来编译源代码。

5. 本地代码生成器:NGen.exe

加快应用程序的启动速度:运行NGen.exe能加快启动速度,因为代码已编译成本地代码,运行时不需要再花时间编译。

减少应用程序的工作集:NGen.exe会将IL编译成本地代码,将这些代码保存到一个单独的文件中。这个文件可以通过“内存映射”的方式,同时映射到多个进程地址空间中,是带阿玛得到共享,避免每个经常都需要一份单独的代码拷贝。

NGen生成的文件存在以下问题:没有知识产权保护,生成的文件可能失去同步,较差的执行时性能。

6.Framework类库

Web 服务(web service):利用Microsoft的ASP.NET,XML,Web Service技术或者WCF技术,可以非常简单的处理通过Internet发送的消息。

Web窗体应用程序(Web Form):开发基于HTML的应用程序,可以在ASP.NET Web窗体应用程序中查询数据库和调用WEB服务,合并和筛选返回信息,然后使用一个基于HTML的用户界面,在浏览器中显示那些信息。

Windows应用程序: 开发windows GUI应用程序。WPF。

富Internet应用程序:利用silverlight技术,可以构建通过Internet来部署GUI应用程序。

Windows控制台应用程序,Windows服务,数据库存储过程,组件库。

7.通用类型系统

类型包含:字段,方法,属性,事件。访问:private, protected,internal,public.

原文地址:https://www.cnblogs.com/fyhou/p/3823416.html