ASP.NET Core 可以用作传统的web服务、RESTful服务、远程过程调用(RPC)服务、微服务,这归功于它的跨平台支持和轻量级设计。如下图所示:
什么时候选择ASP.NET Core
这个问题需要从三个方面来讨论。
1、刚学习.NET的开发人员
如果您是.NET开发新手并正在考虑使用ASP.NET Core,那么欢迎您! 微软正在推动ASP.NET Core作为Web开发初学者的一个有吸引力的选择,与其他跨平台Web框架相比,它具有如下的优势:
a、它是一个现代的,高性能的开源Web框架;
b、它使用熟悉的设计模式和范式;
c、C#是一种很棒的语言(如果你愿意,你可以使用VB.NET或F#);
d、您可以在任何平台上构建和运行(跨平台);
ASP.NET Core是对ASP.NET框架的重构,在新的.NET Core平台之上,使用了现代软件设计原理。虽然它是一个全新的平台,但.NET Core是从已经使用了十多年,获得了巨大的成功的,成熟、稳定、可靠的.NET框架重构而来,选择ASP.NET Core和.NET Core,您将获得可靠的平台以及功能齐全的Web框架。当前流行的许多Web框架都使用类似设计模式,这各ASP.NET Core没有什么不同。例如,众所周知的Ruby on Rails,它使用模型 - 视图 - 控制器(MVC)模式; Node.js,它使用管道处理请求;存在于各种各样的框架中的依赖注入。如果熟悉这些技术,学习ASP.NET Core是件很容易的事;如果不熟悉,也没关系,ASP.NET Core带你体验这些技术的最佳实践!
2、你是一个.NET开发人员,准备创建一个新项目
如果您是.NET开发人员,那么选择ASP.NET Core只是时间问题。 虽然微软承诺继续支持老版的ASP.NET框架,但很明显他们的重心在新的ASP.NET Core框架。 从长远来看,如果你愿意使用新的特性和功能,ASP.NET Core是你必然的选择。
ASP.NET Core是否适合您,很大程度上取决于您的需求和之前ASP.NET框架的体验。 跟ASP.NET框架相比,ASP.NET Core具有如下优势:
a、跨平台开发和部署;
b、高性能;
c、简化的托管模型;
d、更短的迭代和开发周期;
e、开源;
f、模块化设计;
如果您在应用中没有使用任何特定于Windows的组件,例如注册表。那么跨平台构建和部署应用程序的能力将为你打开一个进入全新的应用程序大门:它可以利用更便宜的Linux 虚拟主机,托管在云端,使用Docker容器进行可复用的持续集成,或者在Mac上编写.NET代码而无需运行Windows虚拟机。
以前的ASP.NET框架的托管模型是一个相对复杂的模型,依靠Windows IIS提供Web服务器进行托管。 在跨平台环境中,不存在这种共生关系,而是使用了另一种托管模型,它将Web应用程序与底层分开。 这促成了微软对Kestrel的开发:一个快速,跨平台的可以运行ASP.NET Core应用的HTTP服务器。下图是ASP.NET 和ASP.NET Core的托管示意图:
为了实现这一点,ASP.NET Core被设计为高度模块化,尽可能减少模块间的耦合。从一个简单的应用程序开始添加需要的库,而不是像以前的从一开始就变得臃肿的ASP.NET应用程序 。在ASP.NET Core应用中,甚至MVC也是一个可选包! 这并不意味着ASP.NET Core缺少了功能; 它仅仅是让你按需添加类库,构造灵活的,轻量的应用。它包含如下重要的组件:
a、用于定义应用程序行为的中间件“管道”(“pipeline”);
b、内建的依赖注入(dependency injection);
c、组合UI(MVC)和API(Web API)基础结构;
d、高度可扩展的配置系统;
e、异步编程;
3、将现有ASP.NET应用程序转换为ASP.NET Core