.NET Framework发布至今已有十余年,.NET一直是Windows平台的封闭产品。虽然有Mono项目对.NET实现了平台移植,但毕竟不是微软“亲生”,Mono在一些功能实现上仍然不够完美。
随着2014年Xamarin和微软发起.NET基金会,微软在2014年11月开放.NET Core框架源代码。随后在.NET基金会的统一规划下诞生了.NET Core。
.NET Core早期被称为 .NET vNext或 .NET 5,直到2016年1月才正式命名为 .NET Core 1.0。2019年5月6日,微软再次介绍了.NET 5。我们会在后文中详细说明。
需要注意的是,虽然微软把 .NET Core作为.NET未来的发展方向,但 .NET Core和 .NET Framework仍然是两个独立的产品。.NET Framework也会继续被更新和维护。
2019年微软发布了 .NET技术的下一步发展规划,2020年微软会将.NET Core和 .NET Framework整合为.NET 5。
.NET Core与 .NET Framework的一大区别是,.NET Core是完全开源的,它托管在GitHub上,支持任何开发者向项目贡献代码,.NET Core不再仅支持Windows,还支持Linux、macOS等多种平台。
可以说 .NET Core是.NET Framework的新一代版本,或者说是其进化版本,是微软官方开发的第一个跨平台 (Windows、macOS和Linux) 的应用程序开发框架(Application Framework)。
.NET Core的开发目标是成为跨平台的.NET平台,为此 .NET Core会包含 .NET Framework的类库。但与 .NET Framework不同的是,.NET Core采用包 (Package)的管理方式,应用程序只需要获取需要的组件即可(不像 .NET Framework使用打包安装的方式),同时各个包亦有独立的版本线(Version Line),不再硬性要求应用程序跟随主线版本的更新而更新。
.NET Core的核心是创新、开源和跨平台,可以说.NET Core就是一个用更少的时间做更多有趣的事情的跨平台开发框架。
.NET Core具有以下特点。
2016年6月27日,RedHat DevNation峰会宣布了 .NET Core & ASP .NET Core 1.0 RTM的发行。
截至本书截稿,.NET Core最新的版本为3.1.0,更新时间为2019年10月15日。
.NET Core经常被拿来与其他平台做类比,尤其是它的源头 .NET Framework以及另一个相似性质的开源平台Mono。
据微软的帮助文档说明,.NET Core和 .NET Framework是子集 (Subset) 与超集 (Superset) 的关系,.NET Core将会实现部分的 .NET Framework功能 (基本上是不含用户界面的部分),比如JIT(.NET Core采用RyuJIT)、垃圾收集器 (GC) 以及类型 (包含基本类型以及泛型类型等)。未来 .NET Framework和 .NET Core也会各自发展,但它们同时也使用彼此的功能,比如 .NET Compiler Platform与RyuJIT等技术,最终会在2020年合并。
Mono是另一个历史悠久的.NET跨平台开源版本,基本上并不隶属微软官方,而是由社区的力量所主导,自成一个生态系统,也开发出了像Xamarin这样的跨平台.NET移动应用。.NET Core与Mono未来会是合作的关系,Mono仍会维持由社区力量主导的维护与发展,而.NET Core则会以官方角度来发展,两者也会一起进行彼此功能上的补充。
其实一开始.NET Core与ASP .NET Core并不是主从关系 ,在ASP.NET Core的开发初期 (ASP.NET Next),.NET Core还没有“起跑”。ASP.NET Core当时有自己的运行器与工具,被称为Project K,后来改为.NET运行环境(.NET Execution Environment, DNX)。DNX本身就具有可独立运行的能力,不需要依赖 .NET Core运行,但是这样会形成 .NET Core和ASP.NET Core成为“双头马车”的现象。在 .NET Core逐渐成熟之后,微软也决定要将这两个各自独立发展的产品线集成在一起,因此DNX也改用 .NET Core运行器而终止开发,DNX的功能也由 .NET Core以及旗下的 .NET命令行界面(Command-Line Interface,CLI)接替提供,集成后的版本在1.0 RC2的时候就发布了。
严谨来说,ASP.NET本不应该放在此处与以上3个框架平行,但是因为ASP.NET太出名了,因此我觉得有必要厘清它们的关系。
ASP.NET最初是.NET Framework框架中的一个组件,用于开发Web应用程序,它是ASP技术的改进版本。需要注意的是,ASP与ASP.NET是完全不同的两个产品。同理,VB和VB.NET也是完全不同的两个产品。ASP和VB都是20世纪的技术,有些“古老”,在此不再赘述,但请务必注意区分它们。
早期的ASP.NET提供一种叫作WebForm的方式用于呈现网页,它可以让网页开发变得像WinForm开发一样简单且可视化。但随着Web技术的飞速发展,WebForm由于其低效、封闭和难以定制的缺陷已经逐渐淡出历史舞台。
随着2009年 .NET Framework 3.5的发布,微软提供了全新的ASP.NET网页呈现方式,称为ASP.NET MVC Framework。这套框架遵循MVC设计模式思想,将视图和业务逻辑进行了很好的分离,并且大幅提升了性能和可定制性。
经过多年发展,目前已经更新到了ASP.NET MVC 6,完全采用.NET Core的项目结构,支持.NET Framework、.NET Core和Mono多种运行时。在ASP.NET MVC的未来演进路上,ASP.NET MVC 6将不再存在,而是被称为ASP.NET MVC Core 1.0。
图2.1所示为MVC版本演进的历程。
图2.1
推荐一本最适合入门ASP.NET Core的书:《深入浅出 ASP.NET Core》
如果你想学习ASP.NET Core,那么推荐一本最适合入门ASP.NET Core的书:《深入浅出 ASP.NET Core》
本书是一本系统地介绍http://ASP.NET Core、Entity Framework Core以及http://ASP.NET Core Identity框架技术的入门图书,旨在帮助读者循序渐进地了解和掌握http://ASP.NET Core。本书使用http://ASP.NET Core从零开始搭建一个实际的项目。从基本的控制台应用程序开始,介绍http://ASP.NET Core基本的启动流程,涵盖http://ASP.NET Core框架中各个技术的实际应用。同时,本书也会介绍一些http://ASP.NET Core的高级概念。在本书中,我们会开发一个学校管理系统,其中包含清晰的操作步骤和大量的实际代码,以帮助读者学以致用,将http://ASP.NET Core的知识运用到实际的项目开发当中,最后我们会将开发的项目部署到生产环境中。通过阅读本书,读者将掌握使用http://ASP.NET Core开发Web应用程序的方法,并能够在对新项目进行技术选型时做出战略决策。
本书适合有一定C# 编程经验和HTML、JavaScript基础,并对http://ASP.NET Core感兴趣的读者阅读,也可以作为高等院校相关专业的教学用书和培训学校的教材。
本书适合有一定的C# 编程经验和HTML、 JavaScript基础,并对http://ASP.NET Core感兴趣的开发者,包括以下对象。
本书分为以下5个部分。
第一部分(第1章~第9章)介绍http://ASP.NET Core的基础知识,比如中间件、环境变量和配置信息等,简单讲解完整的http://ASP.NET Core的项目结构。
第二部分(第10章~第20章)介绍并运用MVC模型及路由中间件,结合http://ASP.NET Core提供的TagHelper等新特性,完成对学生信息的增删改查、图片上传;介绍简单的仓储模式与依赖注入的关系,为搭建管理系统做好基础准备。
第三部分(第21章~第29章) 通过搭建一个基础管理系统,分析及处理实际业务场景中的常见问题,比如身份验证和授权、客户端及服务端验证、配置信息、 EF Core数据访问、数据分页和统一异常处理等。
第四部分(第30章~第38章) 介绍架构的作用以及意义,根据架构的思想应用设计模式,结合C#泛型特性优化仓储模式,建立多层体系架构,通过并发、 LINQ及活用Entity Framework Core中的常用功能完成一个类似领域驱动设计的项目。
第五部分(第39章~第42章)介绍简单的Web API入门、部署http://ASP.NET Core项目以及从ASP .NET Core 2.2到http://ASP.NET Core 3.1的版本升级过程