codecamp

ASP.NET Core 简介

ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。使用 ASP.NET Core,您可以:

  • 创建 Web 应用程序和服务、IoT 应用和移动后端。
  • 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
  • 部署到云或本地。
  • 在 .NET Core 或 .NET Framework 上运行。

为何使用 ASP.NET Core

数百万开发人员使用过(并将继续使用)ASP.NET 4.x 创建 Web 应用。 ASP.NET Core 是重新设计的 ASP.NET 4.x,更改了体系结构,形成了更精简的模块化框架。

ASP.NET Core 具有如下优点:

  • 生成 Web UI 和 Web API 的统一场景。
  • 针对可测试性进行构建。
  • Razor Pages 可以使基于页面的编码方式更简单高效。
  • 能够在 Windows、macOS 和 Linux 上进行开发和运行。
  • 开放源代码和以社区为中心
  • 集成新式客户端框架和开发工作流。
  • 基于环境的云就绪配置系统
  • 内置依赖项注入
  • 轻型的高性能模块化 HTTP 请求管道。
  • 能够在 IISNginxApacheDocker 上进行托管或在自己的进程中进行自托管。
  • 定目标到 .NET Core 时,可以使用并行应用版本控制。
  • 简化新式 Web 开发的工具。

使用 ASP.NET Core MVC 生成 Web API 和 Web UI

ASP.NET Core MVC 提供生成 Web API 和 Web 应用所需的功能:

客户端开发

ASP.NET Core 与常用客户端框架和库(包括 Razor ComponentsAngularReact 和 Bootstrap)无缝集成。 有关详细信息,请参阅 Razor Components 和“客户端开发”下的相关主题。

面向 .NET Framework 的 ASP.NET Core

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 版本上受支持:

  • 强烈建议使用 .NET Framework 4.7.1 及更高版本。
  • .NET Framework 4.6.1 及更高版本。

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 的部分优势包括:

  • 跨平台。 在 macOS、Linux 和 Windows 上运行。
  • 增强的性能
  • 并行版本控制
  • 新 API
  • 开源

我们正努力缩小 .NET Framework 与 .NET Core 的 API 差距。 Windows 兼容性包使数千个仅可在Windows运行的API 可在 .NET Core 中使用。 这些 API 在 .NET Core 1.x 中不可用。

推荐的学习路径

建议使用以下一系列教程和文章来介绍如何开发 ASP.NET Core 应用程序:

  1. 请按照适用于要开发或维护的应用类型的教程操作:应用类型方案教程Web 应用用于新的开发Razor 页面入门Web 应用用于维护 MVC 应用MVC 入门Web API创建 Web API*实时应用SignalR 入门
  2. 请按照介绍如何进行基本数据访问的教程操作:方案教程用于新的开发带 Entity Framework Core 的 Razor 页面用于维护 MVC 应用带 Entity Framework Core 的 MVC
  3. 参阅适用于所有应用类型的 ASP.NET Core 功能的概述:基础知识
  4. 浏览目录以了解其他感兴趣的主题。

* 新增了在浏览器中完全遵循的 Web API 教程,无需安装本地 IDE。 代码在 Azure Cloud Shell 中运行,并且 curl 用于测试。

如何下载示例

很多文章和教程中都包含有示例代码链接。

  1. 下载 ASP.NET 存储库 zip 文件
  2. 解压缩 Docs-master.zip 文件。
  3. 使用示例链接中的 URL 帮助你导航到示例目录。

示例代码中的预处理器指令

为了演示多个方案,示例应用将使用 #define 和 #if-#else/#elif-#endif C# 语句选择性地编译和运行不同的示例代码段。 对于那些利用此方法的示例,请将 C# 文件顶部的 #define 语句设置为与你想要运行的方案相关联的符号。 一些示例要求在多个文件的顶部设置符号才能运行方案。

例如,以下 #define 符号列表指示四个方案可用(每个符号一个方案)。 当前示例配置运行 TemplateCode 方案:

C#

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

若要更改示例以运行 ExpandDefault 方案,请定义 ExpandDefault 符号并保留剩余的符号处于被注释掉的状态:

C#

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

若要详细了解如何使用 C# 预处理器指令选择性地编译代码段,请参阅 #define(C# 参考)和 #if(C# 参考)

示例代码中的区域

一些示例应用包含由 #region 和 #endregion C# 语句包围的代码片段。 文档生成系统会将这些区域注入到所呈现的文档主题中。

区域名称通常包含“代码段”一词。 下面的示例显示了一个名为 snippet_FilterInCode 的区域:

C#

#region snippet_FilterInCode
WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureLogging(logging =>
        logging.AddFilter("System", LogLevel.Debug)
            .AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Trace))
            .Build();
#endregion

主题的 markdown 文件在以下行中应用了前面的 C# 代码段:

Markdown

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_FilterInCode)]

你可放心忽略(或删除)代码两侧的 #region 和 #endregion 语句。 如果计划运行主题中所述的示例方案,请不要更改这些语句中的代码。 试用其他方案时,可随时更改代码。

有关详细信息,请参阅参与 ASP.NET 文档:代码片段

后续步骤

有关更多信息,请参见以下资源:


在 ASP.NET 4.x 和 ASP.NET Core 之间进行选择
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }