Atitit. C#.net clr 2.0 4.0 4.5新特性 v2 s22 1. CLR内部结构 1 2. CLR 版本发展史 3 3. CLR 2.0新特性 4 4. CLR 4 新特性
2018-02-08 21:00
417 查看
Atitit. C#.net clr 2.0 4.0 4.5新特性 v2 s22
1. CLR内部结构 1
2. CLR 版本发展史 3
3. CLR 2.0新特性 4
4. CLR 4 新特性 概览 4
4.1.1. 托管与本地代码的互操作 5
4.1.2. 垃圾回收 6
4.1.3. 代码约定 6
4.1.4. Corrupted state exception 6
4.1.5. 新的安全模型 7
4.1.6. 同一个进程,多个CLR 7
4.1.7. 基本类库 7
5. CLR最新发展 8
6. 参考 8
跨语言集成:CLR语序开发这以任何语言进行开发,用这些语言开发的代码,可以在CLR环境下紧密无缝的进行交叉调用,例如,可以用VB声明一个基类对象,然后在C#代码中直接创建次基类的派生类。
自动内存管理:CLR提供了拉架收集机制,可以自动管理内存。当对象或变量的生命周期结速后,CLR会自动释放他们所占用的内存.
跨语言异常处理
版本控制(避免了DLL灾难)
.NET安全
简单的组件互操作性。
自描述组件:自描述组件是指将所有数据和代码都放在一个文件中的执行文件。自描述组件可以大大简化系统的开发和配置,并且改进系统的可靠性
转载请注明来源: http://blog.csdn.net/attilax
图二 CLR 版本大家可以看到,2.0的发行已经是三年之前的事情了,在这几年中,CLR小组的工作最后都汇集在了这次发行之中,可谓是众星云集,下面我们一一叙来。
CLR 这些年有啥变化吗? - WEB开发者.htm
1. CLR内部结构 1
2. CLR 版本发展史 3
3. CLR 2.0新特性 4
4. CLR 4 新特性 概览 4
4.1.1. 托管与本地代码的互操作 5
4.1.2. 垃圾回收 6
4.1.3. 代码约定 6
4.1.4. Corrupted state exception 6
4.1.5. 新的安全模型 7
4.1.6. 同一个进程,多个CLR 7
4.1.7. 基本类库 7
5. CLR最新发展 8
6. 参考 8
1. CLR内部结构
从上图可以看到CLR提供的功能,如类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)等,具体的说,.NET上的CLR为开发者提供如下的服务:具体的说,.NET上的CLR为开发者提供如下的服务:平台无关:CLR实际上是提供了一项使用了虚拟机技术的产品,他在操作系统之上,并不要求程序的运行平台是 Windows系统,只要是能够支持它的运行库的系统,都可以在上面运行.NET应用。所以,一个完全由托管代码组成的应用程序,只要编译一次,就可以在任何支持.NET的平台上运行.(从Mono的出现变得更加真实啦,不用再羡慕JAVA啦)跨语言集成:CLR语序开发这以任何语言进行开发,用这些语言开发的代码,可以在CLR环境下紧密无缝的进行交叉调用,例如,可以用VB声明一个基类对象,然后在C#代码中直接创建次基类的派生类。
自动内存管理:CLR提供了拉架收集机制,可以自动管理内存。当对象或变量的生命周期结速后,CLR会自动释放他们所占用的内存.
跨语言异常处理
版本控制(避免了DLL灾难)
.NET安全
简单的组件互操作性。
自描述组件:自描述组件是指将所有数据和代码都放在一个文件中的执行文件。自描述组件可以大大简化系统的开发和配置,并且改进系统的可靠性
2. CLR 版本发展史
C#版本 和.Net Framework 版本以及CLR依赖关系 和新特性添加列表,作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com转载请注明来源: http://blog.csdn.net/attilax
3. CLR 2.0新特性
CLR 在.NET框架中所处的位置CLR作为.NET框架中的一部分,总是跟着.NET发行,但是近年来.NET的发行版本从2.0一直到3.5, 但是CLR却还一直保留在2.0,如下表所示:.NET框架版本 | 时间 | CLR |
1.0 | 2002.2 | 1.0 |
1.1 | 2003.4 | 1.1 |
2.0 (Generics) | 2006.1 | 2.0 |
3.0 (WPF/WCF/WF) | 2006.11 | 2.0 |
3.5 (LINQ) | 2007.11 | 2.0 |
4.0 Beta | 2009.5 | 4.0 |
4. CLR 4 新特性 概览
.NET 4中发布了最新版本的公共语言运行时,简称CLR (Common Language Runtime) 。这个版本是CLR 2.0之后又一个新的版本,包含着CLR小组几年以来的辛勤工作。4.1.1. 托管与本地代码的互操作
托管代码与本地代码之间的互操作(interop)担负着.NET世界对外联系的责任。比如调用一个本地dll或者COM组件。在CLR 4中,我们作了以下工作,来提高互操作的易用性。1. 自定义QI(Custom QI)当托管代码被COM调用的时候,它扮演着COM组件的角色。对于COM组件来说,IUnknown::QueryInerface(QI)是类型转化的关键。CLR4之前,为每个托管COM组件提供了一个QI实现; CLR4 允许用户自定义QI,大家可以从mscorlib中新增的interface,System.Runtime.InteropServices.ICustomQueryInterface着手了解这一新功能。2. TlbImp源代码以及自定义工具在托管代码中调用COM组件,需要这个COM组件用托管语言申明自己的接口,也就是Interop Assembly(IA)。在一般情况下,用户不需要自己动手撰写这些assembly,而可以使用TlbImp这个工具,根据TLB生成IA。在CLR 4的开发中,我们用托管代码把TlbImp重写了,并且把源代码公布在了codeplex上面。发布TlbImp的源代码的好处之一,是方便使用者根据自己的需求,通过修改源代码来自拓展TlbImp的功能。我们也收集了很多客户需要自定义TlbImp的要求,并且提取了一些呼声最高的自定义请求,制作了TlbImp自定义工具,也在codeplex发行。详见http://blogs.msdn.com/silverlightshanghai/archive/2009/03/13/codeplex-tlbimp.aspx3. 等价类型前面提到,COM组件要为.NET所用,需要Interop Assembly。不同版本的COM组件,带来了部署上的问题。在CLR 4.0之中,我们通过等价类型的引入,就部署IA的问题,给出了更好的解决方案。4. 其他Interop其他方面的改动,包括自定义Stub来处理Interop中的Marshalling和目标函数调用;使用COM取代了原先的远程对象访问;让用户自己决定清理RCW的时机等等,会有更为详细的博文作具体介绍。4.1.2. 垃圾回收
垃圾回收一直是CLR中的核心模块,对托管程序运行的性能至关重要。在这个版本中,CLR引入了background GC,和原来的Concurrent GC相比,在GC进行的过程中,会更少的阻断其他进程,从而提高整个CLR的运行效率。同时,此前在sp2中引入的GC::RegisterForFullGCNotification可以让 CLR4.0可以通知用户第二代GC发生,从而使服务器有机会处理负载平衡,使得整个服务器端的处理能力不至于因为GC的发生受到太大的影响。4.1.3. 代码约定
在CLR4.0中,引入了代码约定,更方便用户规范代码的行为,大家可以从System.Diagnostics.Contracts这一命名空间着手,进一步了解其内容。4.1.4. Corrupted state exception
CLR 4.0中,对异常处理的哲学有了一个改进:在默认情况下,try/catch语句将不能捕获诸如AccessViolationException等异常。因为这些异常的损毁(Corrupt)了机器的状态(state),即使用户捕获了它们,也无法继续执行代码,或者说,继续执行代码也会变得非常危险。4.1.5. 新的安全模型
用过CLR v2的安全模型的朋友们可能还会记得诸如Evidence,Policy以及Permission等概念,这些复杂的对象一起构筑了v2的安全模型的框架,CLR4.0中,安全模型被大大简化,SecurityCritical,SecurSafeCritical等一些安全级别构筑了新的安全模型的基础。4.1.6. 同一个进程,多个CLR
CLR4.0的出现,又添加了一个CLR的版本,尽管我们尽量保证各个不同版本之间的兼容性,但是还是可能出现一些已经开发的组件,需要特定的版本才能运行。为了确保用户过去编写的组件不会因为新的CLR版本而不能运行,CLR4.0中允许用户在一个进程中,运行不同的CLR版本,这样不同的组建就可以各取所需,运行在适合他们的CLR中了。4.1.7. 基本类库
基本类库,也就是mscorlib.dll,包括了诸如System.Object这样在整个类型系统中最为核心的类库。CLR4.0也包含了很多新功能:比如用于支持动态语言的System.Tuple,新的集合类型System.Collections.Generic.SortedSet,用于提高文件系统浏览性能的API,操作注册表的API,以及对内存映射文件的支持等等。 总的来说,CLR4.0相较于CLR2.0,在保证了很高的兼容性的同时,做了大量的改进工作,在之后的一系列博客中,我们团队的成员会进一步作更为具体的介绍,敬请大家期待。5. CLR最新发展
6. 参考
CLR 4 新特性 概览 - 蓝讯.htmCLR 这些年有啥变化吗? - WEB开发者.htm
相关文章推荐
- Atitit.java相比c#.net的优点 优缺点 v2 q330
- Atitit,通过pid获取进程文件路径 java php c#.net版本大总结
- Atitit. c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0 attilax总结 1. 版本历史 1 1.1. C# 1.0-纯粹的面向对象 2 1.2. C# 2.0
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
- Atitit,通过pid获取进程文件路径 java php c#.net版本大总结
- Atitit,通过pid获取进程文件路径 java php c#.net版本大总结
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(二)
- 《asp.net 2.0 开发指南》读书笔记之三 4.5 面向对象的特性
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- Atitit. 获取cpu占有率的 java c# .net php node.js的实现
- Atitit mac os 版本 新特性 attilax大总结
- Atitit js版本es5 es6新特性
- Atitit. 获取cpu占有率的 java c# .net php node.js的实现
- Atitit mac os 版本 新特性 attilax大总结
- 重新过一遍ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特性)(转帖)
- 温故知新ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特性)
- asp.net 2.0教程 C# 2.0新特性 泛型
- 为什么在VS2010中编写.net 2.0程序可以调用C#2.0以上版本特性?