.NET框架简介
.NET 框架是由微软开发的软件开发平台,其最主要的两个组成部分是公共语言运行时 (CLR) 和框架类库 (FCL),基础类库 (BCL)是框架类库的一个子集。
其中,最下层的无疑就是操作系统了。
在 .NET 框架中,运行于底层的是公共语言运行时 (CLR),它是公共语言基础设施 (CLI) 的一个实现。
在 CLR 之上,.NET 框架提供了全面、丰富的框架类库 (FCL),这些类库通过 CLR 调用操作系统的 API 实现各种功能。
框架类库致力于让开发者通过 .NET 平台编写各种各样的应用程序,并调用微软的其他产品。
这些类库中,一些基础的类组成基础类库(BCL)。
在类库之上,.NET 框架的各种语言共同实现了公共语言规范(CLS)。
甲骨文公司的 Java EE 是 .NET 平台的竞争对手之一。.NET 框架的最新版本是 4.7.1 (截至2017年底)。
我们简单回顾一下 .NET 平台的发展历史,它对于我们更好地了解 .NET 平台有着重要的意义。
.NET 框架试图通过 CLR 代替 COM,并提供更多功能,令用户可以更轻松的使用 Windows 的资源进行软件开发。
2002 年微软推出了 .NET Framework 1.0,相应地 Visual Studio 也升级到 7,称为 Visual Studio 2002(上一个版本叫做 Visual Studio 6)。
该框架包括 C# 和 VB.NET( Visual Basic 的继任者)。
同时,第一个版本的 ASP.NET 也在 .NET Framework 1.0 亮相,它作为网站的解决方案,一直是 .NET 框架最重要的产品线之一。
该框架包括 C# 2,相比第一代添加了新的语法特性,其中最重要的就是泛型。
与此同时,CLR 的版本也相应更新为 2.0,Visual Studio 也升级到 Visual Studio 2005。
.NET Framework 2.0 中,Web 应用解决方案仍然是 ASP.NET WebForm,Windows Form 则作为 Windows下的应用解决方案。
数据库连接为 ADO.NET(支持 SQL Server 和 Oracle), Web Service 则多种多样,包括 .NET Remoting(TCP/HTTP/Pipeline communication)以及基础的 Winsock 等。
.NET 3.0 标志着 Windows 平台开始全面转向 .NET 时代(以后所有版本的 Windows 都预装 .NET)。
而在这之前,只有服务器版本的 Windows 会预装 .NET。
当时的 .NET 只能在 Windows 上运行,通过 CLR 调用 Windows 的 API,从而控制电脑硬件。.NET 3.0 的 CLR 和 .NET 2.0 相同。
相应地,为了支持 LINQ,此版本也加入了扩展方法、Lambda 表达式等新功能。
从 C# 3开始,C# 不再是 Java 的一个跟班小弟,某种意义上实现了对 Java 的超越(Java 直到 2014 年才在 Java 8 加入了 Lambda 表达式)。
另外,.NET 3.5 SP1 新增了 ADO.NET Entity Framework 取代 ADO.NET,作为 ORM 的解决方案。
在 ADO.NET Entity Framework 发表之前,NHibemate 是在 .NET Framework 上经常使用的 ORM 实现,顾名思义,它是 Hibernate 在 .NET Framework 上的实现。
相应地, Visual Studio 也升级到了 Visual Studio 2008。
CLR 由 2 直接升级到4。相应地,Visual Studio 也升级到了 Visual Studio 2010。
2012 年:.NET 4.5 和 C# 5
.NET 4.5 和 C#5 —起发布,.NET 4.5 框架的生态系统如下图所示。
C# 5 基本上全部都是围绕 async/await 关键字的。
相应地,Visual Studio 也升级到了 Visual Studio 2012。
在这之后,.NET 还有更高的版本 4.6 和 4.7,对应 Visual Studio 2015 和 Visual Studio 2017。
当然与此同时,各个 .NET 主要产品线也没有闲着,例如 ASP.NET MVC 作为 ASP.NET 的一组类库,于 2009 年初次发布,最新的版本是 ASP.NET MVC 5.2。
Web Service 也在不断进化,从基于 XML 的 WCF 发展到 RESTful 的 WebAPI。
从图中可以看到,最上面的应用层,ASP.NET 茁壮成长,继续和 PHP/JSP 等技术分庭抗礼,用户有 WebForm 和 MVC 可供选择。
在 JS 方面,选择了 jQuery 作为官方 JS。值得注意的是,MVC 中的 M 由 ADO.NET Entity Framework 负责。
Windows 下的解决方案仍然是WPF。中间的服务和数据层中,Web 服务拥抱 RESTful,数据库方面也是由 ADO.NET Entity Framework 唱主角。
最下面当然就是基础类库(BCL)。在 C# 5 中,增加了对异步编程的简化。
.NET Core 并不算是 .NET Framework 的继任者,而更像是它的兄弟,所以,现在它们两个各有自己的版本编号。
未来 .NET Framework 和 .NET Core 也将会是各自发展,但它们也会同时使用彼此的功能。
.NET Core 和 .NET Framework 共用一部分底层功能(例如一些 BCL),参见下图。
与 .NET Framework 不同的是 ,.NET Core 采用组件化的管理方式,应用程序只需要通过 nuget 获取需要的组件即可,与 .NET Framework 一上来就全部安装的做法不同。
.NET Core 的应用层包括 UWP,用于开发 Windows 商店应用(部署到任何支持 Win10 的设备上,例如 XBox,智能手机甚至眼镜),和 ASP.NET Core,用于开发网站应用(通常展现为微服务的形式)。
中间则是 CoreFX,它是 .NET Core 的基础类库,础类库 BCL。
底层则实现两种运行时,Core RT 和 Core CLR。 Core RT 将 C# 或 VB.NET 代码直接转换为机器码运行在宿主机器上,在不同的平台上,会使用不同的技术(Windows 上使用的是 .NET Native,Mac OS 与 Linux 上使用的是LLILC)。
而 Core CLR 就是 .NET Framework CLR 的移植,它包括一个全新的 JIT 编译器——RyuJIT,依据微软的测试报告,该 JIT 的性能比旧版本提升了约25%。
由于 .NET Core 更佳的跨平台表现,越来越多的网络应用使用 ASP.NET Core 来编写。
.NET 框架简介
下图展示了 .NET 框架的主要结构。其中,最下层的无疑就是操作系统了。
在 .NET 框架中,运行于底层的是公共语言运行时 (CLR),它是公共语言基础设施 (CLI) 的一个实现。
在 CLR 之上,.NET 框架提供了全面、丰富的框架类库 (FCL),这些类库通过 CLR 调用操作系统的 API 实现各种功能。
框架类库致力于让开发者通过 .NET 平台编写各种各样的应用程序,并调用微软的其他产品。
这些类库中,一些基础的类组成基础类库(BCL)。
在类库之上,.NET 框架的各种语言共同实现了公共语言规范(CLS)。
甲骨文公司的 Java EE 是 .NET 平台的竞争对手之一。.NET 框架的最新版本是 4.7.1 (截至2017年底)。
.NET 框架发展史
截至现在年,C# 和 .NET 平台已经分别有了 18 和 16 年的历史。我们简单回顾一下 .NET 平台的发展历史,它对于我们更好地了解 .NET 平台有着重要的意义。
2002 年:.NET 1.0
在 .NET 出现之前,编写 Windows 上可以运行的程序就要直接和 COM(微软的一套软件的接口标准)打交道。.NET 框架试图通过 CLR 代替 COM,并提供更多功能,令用户可以更轻松的使用 Windows 的资源进行软件开发。
2002 年微软推出了 .NET Framework 1.0,相应地 Visual Studio 也升级到 7,称为 Visual Studio 2002(上一个版本叫做 Visual Studio 6)。
该框架包括 C# 和 VB.NET( Visual Basic 的继任者)。
同时,第一个版本的 ASP.NET 也在 .NET Framework 1.0 亮相,它作为网站的解决方案,一直是 .NET 框架最重要的产品线之一。
2005 年:.NET 2.0
2005 年 11 月,.NET Framework 2.0 发布。该框架包括 C# 2,相比第一代添加了新的语法特性,其中最重要的就是泛型。
与此同时,CLR 的版本也相应更新为 2.0,Visual Studio 也升级到 Visual Studio 2005。
.NET Framework 2.0 中,Web 应用解决方案仍然是 ASP.NET WebForm,Windows Form 则作为 Windows下的应用解决方案。
数据库连接为 ADO.NET(支持 SQL Server 和 Oracle), Web Service 则多种多样,包括 .NET Remoting(TCP/HTTP/Pipeline communication)以及基础的 Winsock 等。
2007 年:.NET 3.0,WCF+WPF+WF
.NET 3.0 是 .NET 框架最重大的一个更新,包括三大产品线:- WCF:统一了过去 Web 服务混乱的形式,形成了一个统一的格式。
- WPF:作为前端用户界面的解决方案,包括 Silverlight。
- WF:提供工作流的管理。
.NET 3.0 标志着 Windows 平台开始全面转向 .NET 时代(以后所有版本的 Windows 都预装 .NET)。
而在这之前,只有服务器版本的 Windows 会预装 .NET。
当时的 .NET 只能在 Windows 上运行,通过 CLR 调用 Windows 的 API,从而控制电脑硬件。.NET 3.0 的 CLR 和 .NET 2.0 相同。
2008 年:.NET 3.5,C# 3(LINQ)与 Entity Framework
.NET 3.5 集成了 C# 3,包括 C# 3 最重要的一个功能,即 LINQ。相应地,为了支持 LINQ,此版本也加入了扩展方法、Lambda 表达式等新功能。
从 C# 3开始,C# 不再是 Java 的一个跟班小弟,某种意义上实现了对 Java 的超越(Java 直到 2014 年才在 Java 8 加入了 Lambda 表达式)。
另外,.NET 3.5 SP1 新增了 ADO.NET Entity Framework 取代 ADO.NET,作为 ORM 的解决方案。
在 ADO.NET Entity Framework 发表之前,NHibemate 是在 .NET Framework 上经常使用的 ORM 实现,顾名思义,它是 Hibernate 在 .NET Framework 上的实现。
相应地, Visual Studio 也升级到了 Visual Studio 2008。
2010 年:.NET 4.0 和 C# 4
.NET 4.0 集成了 C#4,主要增加了动态语言运行时(DLR)和任务并行库(TPL),它包括 PLINQ、任务等,优化了多线程的编程方式。CLR 由 2 直接升级到4。相应地,Visual Studio 也升级到了 Visual Studio 2010。
2012 年:.NET 4.5 和 C# 5
.NET 4.5 和 C#5 —起发布,.NET 4.5 框架的生态系统如下图所示。
C# 5 基本上全部都是围绕 async/await 关键字的。
相应地,Visual Studio 也升级到了 Visual Studio 2012。
在这之后,.NET 还有更高的版本 4.6 和 4.7,对应 Visual Studio 2015 和 Visual Studio 2017。
当然与此同时,各个 .NET 主要产品线也没有闲着,例如 ASP.NET MVC 作为 ASP.NET 的一组类库,于 2009 年初次发布,最新的版本是 ASP.NET MVC 5.2。
Web Service 也在不断进化,从基于 XML 的 WCF 发展到 RESTful 的 WebAPI。
从图中可以看到,最上面的应用层,ASP.NET 茁壮成长,继续和 PHP/JSP 等技术分庭抗礼,用户有 WebForm 和 MVC 可供选择。
在 JS 方面,选择了 jQuery 作为官方 JS。值得注意的是,MVC 中的 M 由 ADO.NET Entity Framework 负责。
Windows 下的解决方案仍然是WPF。中间的服务和数据层中,Web 服务拥抱 RESTful,数据库方面也是由 ADO.NET Entity Framework 唱主角。
最下面当然就是基础类库(BCL)。在 C# 5 中,增加了对异步编程的简化。
2016 年:.NET Core 的问世
.NET Core 是 .NET Framework 的新一代版本,也是另外一种实现方式,是微软开发的第一个跨平台的(Windows、Mac OSX、Linux)、开源的、模块化的应用程序开发框架。.NET Core 并不算是 .NET Framework 的继任者,而更像是它的兄弟,所以,现在它们两个各有自己的版本编号。
未来 .NET Framework 和 .NET Core 也将会是各自发展,但它们也会同时使用彼此的功能。
.NET Core 和 .NET Framework 共用一部分底层功能(例如一些 BCL),参见下图。
与 .NET Framework 不同的是 ,.NET Core 采用组件化的管理方式,应用程序只需要通过 nuget 获取需要的组件即可,与 .NET Framework 一上来就全部安装的做法不同。
.NET Core 的应用层包括 UWP,用于开发 Windows 商店应用(部署到任何支持 Win10 的设备上,例如 XBox,智能手机甚至眼镜),和 ASP.NET Core,用于开发网站应用(通常展现为微服务的形式)。
中间则是 CoreFX,它是 .NET Core 的基础类库,础类库 BCL。
底层则实现两种运行时,Core RT 和 Core CLR。 Core RT 将 C# 或 VB.NET 代码直接转换为机器码运行在宿主机器上,在不同的平台上,会使用不同的技术(Windows 上使用的是 .NET Native,Mac OS 与 Linux 上使用的是LLILC)。
而 Core CLR 就是 .NET Framework CLR 的移植,它包括一个全新的 JIT 编译器——RyuJIT,依据微软的测试报告,该 JIT 的性能比旧版本提升了约25%。
由于 .NET Core 更佳的跨平台表现,越来越多的网络应用使用 ASP.NET Core 来编写。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算