.Net Framework 基础和版本差异

本来是计划写篇博客介绍一下.net Linq技术,因为Linq技术是同Framework 3.5一同发布的,提到.net framework可以顺便介绍一下.net framework的基本知识,所以就改为先介绍Framework,下篇介绍Linq。

.Net Framework基础:
直接介绍.net framework 2.0,包含CLR、类库、GC、JIT等,JIT会把代码编译成中间语言,最后转换成机器可以执行的本机语言,如.exe和dll文件,这样就可以做到机器无关性可以跨平台。中间语言是什么?如同Java的字节码,也可以当作汇编语言,.Net CLR有其自己的汇编语言,称为IL汇编语言,有兴趣可以自己研究一下,而机器语言就是二进制了。

托管和非托管的区别:
说到GC垃圾回收,就必须得提一下托管和非托管的区别,如java一样,.net不需要像C和C++那样需要从始至终都关注内存分配和内存地址读写等操作,那么在什么情况下,需要用到非托管对象呢?如前面提到的,.exe和dll他们与设备相关,需要用它们时自然就是非托管,再比如在.net里面操作win32 api和其它com和com+组件时,那么它们也属于非托管的范畴,简单概括就是:需要你自己手动释放的一类资源是非托管的。

上面当作基础知识了解,下面介绍Framework版本差异。

以上内容都是.net framework 2.0里面包含的内容,到目前为止.net framework已经发展到了4.5,有些东西在变,有些至始至终都不会改变,在变的东西是新增的功能架构和特性,不变的是CLR,所有版本还是那个公共语言运行时,还是那个编译器,很好理解为什么会没变,如果变了,我们的版本就不能兼容了,这是语言的根本。

下面逐个介绍新功能和新特性,我只写主要内容:


Framework 2.0:(Visual Studio 2005)
CLR, JIT, GA, 类库。

描述一些对LINQ来说很重要的C# 2.0语法:
1. 泛型(Generics)
2. 匿名方法(Anonymous methods,它们是C# 3.0中lambda表达式的基础)
3. yield关键字以及可以枚举的接口

4. 可空类型


Framework 3.0/3.5:(Visual Studio 2008)
新增:WCF, WPF, WF和WCS。

新特性 :(也可以理解为C# 3.0的新特性,随同2008一起发布)
1. 隐式类型本地变量
隐式类型本地变量(Implicity Typed Local Variables)是一种在变量声明时编译器自动推断其变量类型的一种语法形式。它使用 var 关键字声明变量。

2. 对象和集合初始值设定项
该语法为简化对象和集合类型(如数组)的初始化赋值操作而产生。例如如下代码声明并初始化一个一个 List<string>。
List<string> list = new List<string>();
list.Add("This");

3. 匿名类型
匿名类型常常用在查询表达式的结果中,因为这种类型的返回值往往是一个包含一种特定类型的 IEnumerable<T>。

4. 扩展方法
扩展方法将一个在特定类型上实现的方法引入到该类型上,并可利用该类型直接调用。

5. 查询综合
C# 3.0 支持基于语言的查询框架(Linq),可以在语言上实现类似于 SQL 的查询。Linq 包含一些关键字,如 select, from, where 等,用来实现更直观的 Linq 语法;Linq 包括 Linq to SQL, Linq to Objects, Linq to XML 和 ADO.NET Entity Framework 等几个部分。

6. Lambda 表达式
Lambda 表达式是一种匿名函数结构,它可以方便的实现委托、查询综合和扩展方法的 delegate 类型参数的初始化定义。

7. 宽松委托
宽松委托使得 C# 在判断委托实例化赋值时,对于签名不同的函数可以接受

8. 自动实现属性
C# 3.0 提供了一种简化的属性定义方法,可以实现上述代码的作用。
public string Name{ get; set; }

9. 分部方法
分部方法允许开发人员在多个文件中定义一个类的方法。这里有必要提一下分部类,正因为有分部类才会有分部方法的出现,分部类是在2.0里面就已经有了,分部方法在这儿出现了。


Framework 4.0: (Visual Studio 2010)
新功能很多,我总结下官方发布。
一.Web相关:
1. Asp.net MVC 2。
2. 图表控件、SEO支持以及ASP.NET 4可扩展的输出缓存。
3. 集成了Jquery类库和智能提示。

二、内核新功能及改进:
动态语言运行时:
动态语言运行时(DLR)是一个新的运行时环境,它把一组针对动态语言的服务添加到CLR中。DLR使开发运行于.NET框架上的动态语言更加容易,而且有利于把动态特性添加到静态类型的语言中。为了支持DLR,.NET框架中添加了一个新的命名空间System.Dynamic。
通过引入新的描述控制流的类型,例如System.Linq.Expressions.LoopExpression和System.Linq.Expressions.TryExpression,表达式树功能被进一步扩展。注意,这些新的类型仅为动态语言运行时(DLR)所使用,而不能够由LINQ使用。
上面为官方发布,我解释一下具体细节:
Dynamic: 也就是说从这个版本开始有了Dynamic类型,如同其它类型int, string等.
动态Linq: 再就要说到与Linq相关的东西了,动态Linq技术从这儿开始变成现实,System.Linq.Expressions。

 

新特性:(随同2010发布的C# 4.0的新特性,没有3.0那么大的变动)

1. Dynamic类型:动态类型。

2. 可选参数。

3. 特定于COM的互操作性。

4.通过委托成员来实现接口。

5.安全的null延迟幅值操作符。


Framework 4.5: (Visual Studio 2012/2013)
还是一样,官方发布内容很多,我总结一下自己切身感受到的差异。
Web:
ASP.NET 4.5 包括下列新功能:
为新 HTML5 窗体类型的支持。
为模型联编程序支持在 Web 窗体中。 这些允许您直接将数据控件绑定到数据访问方法,并自动将用户输入转换到和来自 .NET Framework 数据类型。
为客户端验证脚本的不显眼的 JavaScript 支持。
改进客户端脚本的处理通过改进页性能的绑定和缩减。
从 AntiXSS 库(以前的外部库)中集成编码例程可以从跨站点式脚本攻击中保护。
为 WebSockets 协议支持。
用于读取和写入 HTTP 请求和响应支持异步。
对于异步模块和处理程序。
为 ScriptManager 控件的内容分布式 Web (CDN) 回退支持

上面为官方内容,很全。下面再说说其它方面。
Visual Studio 2012: Asp.Net MVC4。
Visual Studio 2013:
1. 当然包含了2012的所有功能,Asp.net MVC 4和5同时存在;Entity Framework集成进来了;
2. Jquery和Jquery UI都被集成进来了;
3. 新加了Git的源代码管理方式,真正意义上的分布式源代码管理工具,它的流行程度可以通过百度和Google证明一下。
4. NuGet功能,如同Java的Market、Maven等。

以上就写这么多,更多版本差异可以查看官方发布,不过官方发布的内容很多,很难找到自己马上能用的东西。上面的新特性基本可以马上使用,而且能解决不少问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值