作者:Daniel Roth、Rick Anderson 和 Shaun Luttin
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。 使用 ASP.NET Core,您可以:
数百万开发人员使用过(并将继续使用)ASP.NET 4.x 创建 Web 应用。 ASP.NET Core 是对 ASP.NET 4.x 的重新设计,通过体系结构上的更改,产生了更精简、更模块化的框架。
ASP.NET Core 具有如下优点:
ASP.NET Core MVC 提供生成 Web API 和 Web 应用所需的功能:
ASP.NET Core 与常用客户端框架和库(包括 [!OP.NO-LOC(Blazor)]、Angular、React 和 Bootstrap)无缝集成。 有关详细信息,请参阅 ASP.NET Core Blazor 简介 和“客户端开发”下的相关主题。
ASP.NET Core 2.x 可以面向 .NET Core 或 .NET Framework。 面向 .NET Framework 的 ASP.NET Core 应用无法跨平台,它们仅在 Windows 上运行。 通常,ASP.NET Core 2.x 由 .NET Standard 库组成。 使用 .NET Standard 2.0 编写的库在实现 .NET Standard 2.0 的任何 .NET 平台上运行。
ASP.NET Core 2.x 在实现 .NET Standard 2.0 的 .NET Framework 版本上受支持:
ASP.NET Core 3.0 以及更高版本只能在 .NET Core 中运行。 有关此更改的详细信息,请参阅 A first look at changes coming in ASP.NET Core 3.0(抢先了解 ASP.NET Core 3.0 即将推出的更改)。
面向 .NET Core 有以下几个优势,并且这些优势会随着每次发布增加。 与 .NET Framework 相比,.NET Core 的部分优势包括:
我们正努力缩小 .NET Framework 与 .NET Core 的 API 差距。 Windows 兼容性包使数千个仅可在Windows运行的API 可在 .NET Core 中使用。 这些 API 在 .NET Core 1.x 中不可用。
建议通过以下一系列教程和文章来了解如何开发 ASP.NET Core 应用:
按照你要开发或维护的应用类型的教程操作:
应用类型 | 方案 | 教程 |
---|---|---|
Web 应用 | 用于新的开发 | Razor 页面入门 |
Web 应用 | 用于维护 MVC 应用 | MVC 入门 |
Web API | 创建 Web API* | |
实时应用 | 开始使用 [!OP.NO-LOC(SignalR)] | |
[!OP.NO-LOC(Blazor)] 应用 | 开始使用 [!OP.NO-LOC(Blazor)] | |
远程过程调用应用 | 开始使用 gRPC 服务 |
按照介绍如何进行基本数据访问的教程操作:
方案 | 教程 |
---|---|
用于新的开发 | 结合使用 Razor Pages 和 Entity Framework Core |
用于维护 MVC 应用 | 结合使用 MVC 和 Entity Framework Core |
阅读适用于所有应用类型的 ASP.NET Core 功能的概述:
浏览目录以了解其他感兴趣的主题。
* 新增了在浏览器中完全遵循的 Web API 教程,无需安装本地 IDE。 代码在 Azure Cloud Shell 中运行,并且 curl 用于测试。
有关将 ASP.NET 应用迁移到 ASP.NET Core 的参考指南,请参阅 从 ASP.NET 迁移到 ASP.NET Core。
很多文章和教程中都包含有示例代码链接。
为了演示多个方案,示例应用使用 #define
和 #if-#else/#elif-#endif
预处理器指令选择性地编译和运行示例代码中不同的片段。 对于那些利用此方法的示例,请将 C# 文件顶部的 #define
指令设置为定义与你想要运行的方案相关联的符号。 一些示例要求在多个文件的顶部定义符号才能运行方案。
例如,以下 #define
符号列表指示四个方案可用(每个符号一个方案)。 当前示例配置运行 TemplateCode
方案:
#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode
若要更改示例以运行 ExpandDefault
方案,请定义 ExpandDefault
符号并保留剩余的符号处于被注释掉的状态:
#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode
若要详细了解如何使用 C# 预处理器指令选择性地编译代码段,请参阅 #define(C# 参考)和 #if(C# 参考)。
一些示例应用包含由 #region 和 #endregion C# 指令包围的代码片段。 文档生成系统会将这些区域注入到所呈现的文档主题中。
区域名称通常包含“代码段”一词。 下面的示例显示了一个名为 snippet_WebHostDefaults
的区域:
#region snippet_WebHostDefaults Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); #endregion
主题的 Markdown 文件在以下行中引用了前面的 C# 代码片段:
[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]
可放心忽略(或删除)代码两侧的 #region
和 #endregion
指令。 如果计划运行主题中所述的示例方案,请不要更改这些指令中的代码。 试用其他方案时,可随时更改代码。
有关详细信息,请参阅参与 ASP.NET 文档:代码片段。
有关更多信息,请参见以下资源: