目录
1. 什么是.NET
2. .NET的历史
3. .NET的优势与劣势
什么是.NET
.NET是由微软公司提供的一种软件开发编程的框架,可以在基于Windows的操作系统上开发,安装和执行软件。近年来,.NET已经成为在Windows平台创建任意类型的应用程序的巨大生态系统。目前,.NET支持的编程语言为C#、VB.NET、Jscript.NET,但现在大多数.NET开发首选的编程语言为C#。
NET的历史
想要更好的理解.NET和C#的可用功能,就要了解它的历史。
.NET(开发编程框架) | CLR (公共语言运行库) | C# (面向对象高级语言) | Visual Studio(开发工具集) |
1.0 | 1.0 | 1.0 | 2002 |
1.1 | 1.1 | 1.2 | 2003 |
2.0 | 2.0 | 2.0 | 2005 |
3.0 | 2.0 | 2.0 | 2005+扩展版 |
3.5 | 2.0 | 3.0 | 2008 |
4.0 | 4.0 | 4.0 | 2010 |
4.5 | 4.0 | 5.0 | 2012 |
4.5.1 | 4.0 | 5.0 | 2013 |
4.6 | 4.0 | 6 | 2015 |
.NET Core 1.0 | CoreCLR | 6 | 2015+扩展版 |
表1-1主要显示了.NET的版本对应的公共语言运行库的版本,C#的版本和Visual Studio的版本,下面各小结将会详细介绍表1-1,已经C#和.NET的发展。
1.2.1 C# 1.0 —— 一种新语言
C#是一种全新的编程语言,用于NET Framework。C#是由Anders Hejlsberg设计的,鉴于Anders Hejlsberg的背景,C#编程语言主要受到了C++、Java 和 Pascal 的影响。由于创建时间比较晚,所以微软分析了其他语言中典型的编程错误,所以完成了一些不同的工作来避免这些错误。
例如:
- 在使用if语句时,Boolean(布尔)表达式是必须的;
- 允许使用 struct(结构体类型) 和 class 关键字创建值类型和引用类型;
- 允许使用虚方法(虚拟方法)和非虚方法(非虚拟方法);
C#是一种纯粹的面向对象编程语言,具备封装、继承和多态等特性,也提供了基于组件的编程改进,如委托和事件。
CLR是每种.NET编程语言都在使用的运行库,.NET编程语言的编译器会生成中间语言(Intermediate Languagem,IL) 代码,IL代码看起来很像面向对象的机器码,CLR包含了一个即时编译器(Just-In-Time,JIT),当程序运行时,JIT会从IL代码生成本地代码。(注意:IL代码也称为托管代码)。
线程实用工具负责在底层平台上创建线程。
1.2.2 带有泛型的C# 2 和 .NET 2
这个版本是一个巨大的更新,在这个版本中改变了C#编程语言,建立了IL代码,所以需要新的CLR来支持IL代码的增加,同时添加了泛型。
泛型允许创建类型,而不需要知道使用什么内部类型。所使用的内部类型在实例化(即创建实例)时定义。
同时C#编程语言的改进也导致Framerwork中多了许多的新类型。
1.2.3 .NET3.0 —— WPF(Windows Presentation Foundation)
.NET3.0的发布,并不需要新版本的C#,但在这个版本中提供了新的库,并发布了大量新的类型和名称空间。其中WPF可能是新框架最大的一部分。
1.2.4 C# 3 和 .NET 3.5 —— LINQ
.NET 3.5 和 C# 3 一起发布,这一次的版本改动是使用C#定义的查询语法,允许使用相同的语法来过滤和排序对象列表、XML文件和数据库,使用的C#特性的只是语法糖。所谓的加强其实旧的语法也可以实现,只是需要更多的代码罢了,C#语言很容易进行这些查询。有了 LINQ 和 lambda 表达式,就可以使用相同查询语法来访问对象集合、数据库和 XML 文件。
为了访问数据库并创建 LINQ 查询,LINQ to SQL 发布为.NET3.5的一部分,在这个版本上同时发布了EF(Entity Framework)的第一个版本。LINQ to SQL 和 EF都提供了层次结构到数据库关系的映射和 LINQ 提供程序。EF 更强大,但 LINQ 更简单。后来,LINQ to SQL 的特性在 EF 中实现了,并且会一种保留该特性。
.NET的优势与劣势
优势
技术易学易用,开发效率高
运行环境安装配置方便 (.Net Framework, Asp.Net, IIS)
技术成熟,主流技术,配套技术文档完善,众多开源或免费的文档或项目可供参考
拥有众多新技术,方便构建企业级应用
开发部署工具功能强大
能与Windows平台紧密结合,最大限度利用系统功能
众多中间件(控件支持)
技术在不断更新发展中,拥有庞大的开发人员群体且呈增长趋势
劣势
只能运行于Windows平台
效率低于本地化编译程序(C/C++)
开放性低于与Java, 在超大规模应用中缺乏有力案例