随笔分类 - CLR via C# 第三版
学习笔记
CLR VIA C# 笔记一(1.6~1.9)
摘要:1.6 Framework类库 .NET Framework包含了Framework类库(Framework Class Library,FCL),FCL是一组DLL程序集的统称,它含有数千个类型定义,每个类型都公开了一些功能. 例如: 1. Web 服务(Web service) 利用Microsoft的ASP.NET XLM Web Service技术或者Windows Communication Foundation(WCF)技术,可以简单的处理通过Internet发送消息. 2. Web窗体应用程序(Web Form)开发基于HTML的应用程序(网站) 3. Windows应用程序开.
阅读全文
CLR VIA C# 笔记一(1.5)
摘要:1.5本地代码生成器: NGen.exe .NET Framework 配套提供的NGen.exe工具可以在应用程序安装到用户的计算机时將IL代码编译成本地代码,那么CLR的JIT编译器就不需要在运行時编译IL代码,这有助于提升应用程序的性能: 1. 加快应用程序的启动速度 因为不需要再花时间编译 2. 减小应用程序的工作集 NGen.exe将IL代码编译成本地代码,并将这些代码保存到一个单独的文件中,这个文件可以通过”内存映射”的方式,同时映射到多个进程地址空间中,使代码得到了共享,避免每个进程都需要一份单独的代码拷贝. 使用NGen.exe时,NGen.exe会新建一个只包含本地代码的程.
阅读全文
CLR VIA C# 笔记一(1.4.1~1.4.2)
摘要:1.4.1 IL和验证IL 是基于栈的,也就是它的所有指令都要将操作数压入(push)一个执行栈,并从栈弹出(pop)结果. IL 指令是”无类型”(typeless)的,例如IL提供了一个add指令,它的作用是判断栈中最后两个操作数的类型并且将它们加到一起. 将IL编译成本地CPU指令时,CLR会执行一个名为验证(verification)的过程,这个过程确定代码所做的一切都是安全的,这也就是IL的优势之一:健壮性和安全性.例如,验证正确的数量参数,返回值的正确使用等等. 将每个windows进程都放到一个独立的地址空间可以获得健壮性与稳定性:进程间不互相干扰. 进程数量太多,会损害性能并.
阅读全文
CLR VIA C# 笔记一(1.4)
摘要:1.4执行程序集的代码 IL是与CPU无关的机器语言,可将它视为一种面向对象的机器语言.高级语言通常只公开了CLR的所有功能的一个子集,而IL汇编语言允许开发人员访问CLR的所有功能. 若某一高级语言隐藏了需要的CLR功能,那么可以使用IL或者其他公开了这一功能的高级语言来写.这也是CLR其中一个非常出色的特性”混合语言编程”,允许在不同编程语言之间方便地切换,同时又保持紧密集成. CLR的“即时”编译器(just in time,JIT)会把IL编译成本地CPU指令. 方法的调用图: 一个方法只有在首次调用时才会造成性能损失,以后都无需重新验证IL并把它编译成本地代码,因为JIT编译器将本.
阅读全文
CLR VIA C# 笔记一(1.2~1.3)
摘要:1.2 将托管模块并成程序集 CLR是和程序集一起工作的. 程序集 是一个或多个模块/资源文件的逻辑性分组,它是重用、安全性以及版本控制的最小单元,它的逻辑表示和物理表示区是分开的,根据不同的编译器或工作可以生成单文件或多文件的程序集。在CLR世界里,它相当于一个“组件”。 在程序集的模块中包含了引用程序集有关的信息,这就使程序集能够自描述(self-describing),能让CLR不需要通过注册表或Active Directory Domain Services(ADDS)就可以找到程序集的直接依赖对象(immediate dependency)并执行程序集中的代码.由于无需额外的信息,.
阅读全文
CLR VIA C# 笔记一(1.1)
摘要:学多些懂多些… 1.1将源代码编译成托管模块 .NET Framework 在某种程度上,它是它自己的操作系统:有自己的内存管理器、安全系统、文件加载器、错误处理机制、应用程序隔离边界(AppDomains)、线程处理模型等。 公共语言运行时 (Common Language Rumtime,CLR)的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。例如,CLR允许创建线程,所以面向CLR的任何语言都能创建线程。可用任何编程语言进行开发,只要编译器是面向CLR的就可以了,例如Microsoft创建的几个语言编译器:C++/CLI、C#、Visua.
阅读全文