.NET Core 和 ASP.NET Core 1.0 概览






4.44/5 (5投票s)
首次了解使用 .NET Core 和 ASP.NET Core 1.0 进行开源 .NET 开发。
引言
在这里,我们将了解 Microsoft 的两个主要平台 .NET Core(运行时)和 ASP.NET Core(Web 开发框架)。这两个都是开源的,并且可以在 GitHub 上找到。在本文中,我们将从头开始构建一个简单的 ASP.NET Core 1.0 应用程序,并直接从终端在 Microsoft 开发的轻量级 Web 服务器 Kestrel 上运行此应用程序。现在我们可以编写 ASP.NET 应用程序而无需使用 Visual Studio。如果您拥有 Windows、Mac OS 或 Linux,都可以按照本教程进行操作。为简化起见,我们在此不讨论项目结构的每一个细节。
.NET Core 和 ASP.NET Core 的当前版本处于 Release Candidates 2 (RC2) 阶段。ASP.NET Core 发行版的路线图可以在 此处找到。
背景
我期望读者至少具备 ASP.NET MVC 的基本知识以及 .NET Framework 的工作原理,并对此有一定的了解。此外,读者应该已经在他们的系统上安装了 Node.js、Bower 以及一个构建系统,例如 Grunt 或 Gulp。如果我们稍后遇到这些工具,我们会解释它们是什么,即使您之前不知道。
.NET Core 简介
传统上,如果我们想开发一个 .NET 应用程序(例如 ASP.NET 应用程序),我们必须使用 Windows(操作系统)和 Visual Studio(IDE)。为了帮助开发 .NET 框架应用程序,Microsoft 提供了一套预构建的库,并支持多种面向 .NET Framework 的语言(如 C#、Visual Basic、C++ 等)。这些库被称为 Framework Class Libraries 或 FCL。当您在 PC 上安装 Windows 时,这些库将与安装在 Windows 上的 .NET Framework 一起提供给您。额外的 .NET 库和程序集可以通过一个称为 NuGet 的包管理器从 Internet 获取。它拥有许多开源和社区构建的库和程序集,您可以下载并在您的项目中使用。传统上,我们必须在 Windows 和 Visual Studio 中使用所有这些东西。
为了使 .NET 应用程序开发开源化,Microsoft 推出了 .NET Core。.NET Core 是一个小型优化应用程序运行时,可在 Windows、Linux 和 Mac OS 上运行。.NET Core 可以被认为是自 2000 年以来我们一直在使用的 .NET Framework 的开源版本。.NET Core 是一个模块化、更快速、更可靠的运行时,用于在多个平台上执行和运行 .NET 应用程序。.NET Core 带有一个名为 CoreCLR 的小型通用语言运行时 (CLR),它是完整 CLR 的一个微小版本,是 .NET 生态系统的基础部分。它的工作原理与 .NET Framework 在运行时的工作原理相同,但我们在传统 .NET 应用程序中使用的库现在不再随 .NET Core 本身提供。相反,您必须使用 NuGet 客户端从 NuGet 库还原这些包。
需要注意的是,并非所有 .NET Framework 支持的平台,例如 WPF、SharePoint、WCF 等,都能够在 .NET Core 上运行。我们可以在 .NET Core 之上运行的前三个平台是 C# 控制台应用程序、ASP.NET MVC 6 应用程序 和 通用 Windows 平台 (UWP)(部分)。在这篇文章中,我们将从头开始构建一个简单的 ASP.NET Core 1.0 RC2 应用程序,该应用程序由我自己开发,足以理解基础知识。另请注意,并非所有 .NET Framework 库和程序集都可用于 .NET Core(称为 CoreFx)。如下面的幻灯片所示,这些将很快可用,这些幻灯片来自 #Build2016。
我们使用 .NET Core 附带的命令行界面 (CLI) 来管理 .NET Core 运行时和应用程序。如我们稍后将看到的,有许多 .NET Core 命令可用于构建、运行和发布 .NET Core 应用程序。
ASP.NET Core 1.0 简介
ASP.NET Core (以前称为 ASP.NET 5) 是可以在 .NET Core 之上运行的平台(Web 框架)之一。ASP.NET Core 是对其前身的完全重构版本。它是一个更快、更可靠、更轻量级的 Web 开发框架。它使用 MVC(不再是 Web Forms),并利用现代 Web 工具,这些工具是开源的,如 Bower、Grunt\Gulp 和 NPM。我们可以在许多文本编辑器中编写 ASP.NET Core 应用程序,例如 Atom、Brackets、Visual Studio Code,当然还有 Visual Studio。
有一个社区致力于在许多文本编辑器中作为扩展管理 C# 和 ASP.NET Core 的 IntelliSense 和代码补全功能,称为 OminSharp。您可以下载您选择的编辑器的此扩展,并在开发 ASP.NET Core 应用程序时在编辑器中获得 IntelliSense 功能和代码补全片段。
让我们来看看我们可以用于 ASP.NET Core 1.0 的一些开源 Web 工具。
包管理、构建系统和 Web 脚手架工具
使用 Bower 进行包管理
Bower 是一个客户端库的包管理器。它提供 CLI 来管理、更新和还原客户端包,如 Bootstrap、jQuery、Angular 等。Bower 在一个名为 Bower.json 的 JSON 文件中跟踪其包。您可以在此文件中以 JSON 格式包含具有指定版本的包,可以通过使用许多 Bower 命令来还原和轻松管理您的客户端包。这比手动从提供商网站下载客户端库并使用 CDN 要好。CDN 主要在生产环境中使用,而包通常在本地开发环境中使用。
一个示例 Bower.json 文件看起来像这样,只安装了一个包 Bootstrap。
{ "name": "projectName", "version": "0.0.0", "dependencies": { "bootstrap": "~3.2" } }
使用构建系统:Grunt 或 Gulp
前端工作流程可以包含多个任务,以提高性能,例如缩小 CSS 和 JavaScript、将 LESS、SASS、Coffeescript、TypeScript 文件编译为 CSS 和 JavaScript、将多个文件合并为一个文件以减少文件下载速度等等。手动重复执行这些任务会非常繁琐。这就是“构建系统”的用武之地。
构建系统使用命令行界面 (CLI) 来管理这些不同的任务。在对未压缩的 JS 文件(例如)进行更改后,我们可以输入一个命令来运行它,从而无需手动操作即可压缩该文件。现在有两种流行的构建系统可用:Grunt 和 Gulp。我们想运行的每个任务都有一个可在其网站上找到的插件,这些插件由社区或第三方创建,我们使用 NPM 作为 Node Modules 下载并安装它们,并在 Gruntjs 或 Gulpjs 文件中使用它们来配置我们的插件以运行任务。
我写了一篇非常简单的博客文章,关于从头开始使用 Grunt 运行任务,您可以在我的网站 此处找到。
使用 Yeoman 生成器进行 Web 脚手架
我们可以使用 Yeoman Generators 来脚手架出一个开源项目。它只是一个脚手架工具,仅此而已。每个项目都有一个生成器。其网站上有许多生成器。其中一些是社区创建的,一些是第三方创建的。
我创建了我自己的 Yeoman Generator,我们将在本文中使用它来脚手架出一个简单的 ASP.NET Core 1.0 应用程序。您可以通过访问 Yeoman 网站 => Discovering Generators 来查找其他生成器。
注意:Grunt\Gulp 和 Yeoman 通过 NPM 安装。
现在我们已经讨论了一些开源技术的基础知识。现在让我们来脚手架出一个简单的 ASP.NET Core 1.0 应用程序。我假设您已经在本地系统上安装了 Node.js 和 Yeoman Generator。如果您不知道如何安装 Yeoman 和 Yeoman 生成器,请参阅其网站 此处。
脚手架 ASP.NET Core
现在我们将使用 Yeoman 和一个 Yeoman Generator 来脚手架我们的应用程序。请按照以下步骤操作
创建一个任意名称的文件夹,然后在其中打开终端。
在终端中输入以下命令:
npm install -g generator-aspnetcore-example
这将安装我自己创建的 Yeoman 生成器。
安装完成后,输入
yo aspnetcore-example
您将看到 Yeoman 发出的输入消息,如下所示
接下来,在终端中为应用程序输入任何名称(我将使用“App”),您将看到 Yeoman 开始生成示例项目,它还将为您安装 Bower 包。
现在您需要恢复项目中的 .NET Core 包,所以在终端中输入:
dotnet restore
它将为您还原 .NET Core 包。
现在您已经设置好了一切,最后通过在终端中输入以下命令来运行应用程序:
dotnet run
它将构建并运行您的应用程序。导航到终端中描述的端口(在本例中为 localhost:5000)。
现在您可以看到应用程序已在您的本地 PC 上启动并运行。
此应用程序使用 Bootstrap 验证、Ajax 表单提交和基本的 MVC 控件。
该项目只是一个简单的两层 Web 应用程序。我将在我的网站博客 此处向您展示如何添加不同的功能,例如使用 Identity 进行身份验证/授权等。并非所有博客都已准备好,但我会尽快撰写。