ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。使用 ASP.NET Core,您可以:
- 建置 Web 应用程序和服务、IoT应用和移动后端。
- 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
- 部署到云或本地。
- 在 .NET Core 或 .NET Framework 上运行。
ASP.NET Core 的优点:
- 生成 Web UI 和 Web API 的统一场景。
- 针对可测试性进行构建。
- Razor Pages 可以使基于页面的编码方式更简单高效。
- 能够在 Windows、macOS 和 Linux 上进行开发和运行。
- 开放源代码和以社区为中心。
- 集成新式客户端和开发工作流。
- 基于环境的云就绪配置系统。
- 内置依赖项注入。
- 轻型的高性能模块化 HTTP 请求管道。
- 能够在 IIS、Nginx、Apache、Dockers 上进行托管或在自己的进程中进行自托管。
- 定目标到 .NET Core 时,可以使用并行应用版本控制。
- 简化新式 Web 开发工具。
使用 ASP.NET Core MVC 生成 Web API 和 Web UI:
- Model-View-Controller (MVC) 模式使 Web API 和 Web 应用可测试。
- ASP.NET Core 2.0中新增的 Razor 页面是基于页面的编程模型,可简化 Web UI 生成并提高工作效率。
- Razor 标记提供了适用于 Razor 页面和 MVC 视图的高效语法。
- 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素。
- 内置的多数据格式和内容协商支持使 Web API 可访问多种客户端,包括浏览器和移动设备。
- 模型绑定自动将 HTTP 请求中的数据映射到操作方法参数。
- 模型验证自动执行客户端和服务器端验证。
ASP.NET Core 2.x 可以面向 .NET Core 或 .NET Framework。面向 .NET Framework 的 ASP.NET Core 应用无法跨平台,只能在 Windows 运行。ASP.NET Core 3.0 以及更高版本只能在 .NET Core 中运行。
面向 .NET Core 有以下几个优势,并且这些优势会随着每次发布增加。与 .NET Framework 相比,.NET Core 的部分优势包括:
- 跨平台。在 macOS、Linux 和 Windows 上运行。
- 提高的性能
- 并行版本控制
- 新 API
- 开源
比较 ASP.NET Core 与 ASP.NET 4.x
ASP.NET Core | ASP.NET 4.x |
---|---|
针对 Windows、macOS 或 Linux 进行生成 | 针对 Windows 进行生成 |
Razor 页面 是在 ASP.NET Core 2.x 及更高版本中创建 Web UI 时建议使用的方法。 另请参阅 MVCWeb API 和 SignalR。 | 使用 Web 窗体、SignalR、MVC、Web API、WebHooks 或网页 |
每个计算机多个版本 | 每个计算机一个版本 |
使用 C# 或 F# 通过 Visual Studio、Visual Studio for Mac 或 Visual Studio Code 进行开发 | 使用 C#、VB 或 F# 通过 Visual Studio 进行开发 |
比 ASP.NET 4.x 性能更高 | 良好的性能 |
选择 .NET Framework 或 .NET Core 运行时 | 使用 .NET Framework 运行时 |
比较 .NET Core 和 .NET Framework:
以下情况应对服务器应用程序使用 .NET Core:
- 用户和跨平台需求。
- 用户正在面向微服务。
- 用户正在使用 Docker 容器。
- 需要高性能和可扩展的系统。
- 需按应用程序提供并行的 .NET 版本。
以下情况应对服务器应用程序使用 .NET Framework:
- 应用当前使用 .NET Framework (建议扩展而不是迁移)。
- 应用使用不可用于 .Net Core 的第三方 .NET 库或 NuGet 包。
- 应用使用不可用于 .Net Core 的 .Net 技术。
- 应用使用不支持 .Net Core 的平台。
在ASP.NET Core之前,ASP.NET Framework应用程序由IIS加载。Web应用程序的入口点由InetMgr.exe创建并调用托管。以初始化过程中触发HttpApplication.Application_Start()事件。开发人员第一次执行代码的机会是处理Application_StartGlobal.asax中的事件。
在ASP.NET Core中,Global.asax文件不再可用,已被新的初始化过程替代。
ASP.NET Core 应用程序是在.NET Core 控制台程序下调用特定的库,这是ASP.NET Core应用程序开发的根本变化。所有的ASP.NET托管库都是从Program开始执行,而不是由IIS托管。也就是说.NET工具链可以同时用于.NET Core控制台应用程序和ASP.NET Core应用程序。
using System;
using Microsoft.AspNetCore.Hosting;
namespace aspnetcoreapp{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel() //指定宿主程序为Kestrel
.UseStartup<Startup>()// 调用Startup.cs类下的Configure 和 ConfigureServices
.Build();
host.Run();
}
}
以上是Program
类中Main
方法的示例代码,Main
方法负责初始化Web主机,调用Startup和执行应用程序。主机将调用Startup
类下面的Configure
和ConfigureServices
方法。
参考链接:
https://docs.microsoft.com/zh-cn/aspnet/core/index?view=aspnetcore-2.1
https://blog.youkuaiyun.com/sD7O95O/article/details/78126384