在本文中,将从零开始搭建一个简单的ASP.NET Core 1.0应用程序,并在Microsoft开发的轻量级Web服务器Kestrel上运行。可以在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应用程序(例如ASP.NET应用程序),必须使用Windows操作系统和Visual Studio集成开发环境。为了帮助开发.NET框架应用程序,Microsoft提供了一组预构建的库,这些库以多种语言提供,目标是.NET Framework(如C#、Visual Basic、C++等)。这些库被称为框架类库(FCL)。当在PC上安装Windows时,这些库就会随着.NET Framework一起安装。额外的.NET库和程序集是通过一个名为NuGet的包管理器从互联网上获取的。NuGet拥有许多开源和社区构建的库和程序集,可以下载并在项目中使用。传统上,都必须在Windows和Visual Studio中使用所有这些工具。
为了使.NET应用程序开发开源,Microsoft引入了.NET Core。.NET Core是一个小型优化的应用程序运行时,它在Windows、Linux和Mac OS上运行。.NET Core可以被认为是自2000年以来一直在使用的.NET Framework的开源版本。.NET Core是一个模块化、更快、更可靠的运行时,用于在多个平台上执行和运行.NET应用程序。.NET Core附带了一个小型的公共语言运行时(CLR)称为CoreCLR,它是完整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(以前称为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工具。
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"
}
}
前端工作流程可能包括多个任务,以提高性能,如压缩CSS和JavaScript、编译LESS、SASS和CoffeeScript、TypeScript文件到CSS和JavaScript、将多个文件合并成一个文件以减少文件下载速度等。手动重复执行这些任务可能会非常繁琐。这就是构建系统发挥作用的地方。
构建系统使用命令行界面(CLI)来管理这些不同的任务。在对未压缩的JS文件(例如)进行更改后,可以输入一个命令并运行它以压缩该文件,而无需手动执行此操作。今天有两个流行的构建系统,Grunt和Gulp。想要运行的每个任务都有一个插件在他们的网站上可用,无论是由社区创建的还是由第三方创建的,下载并使用NPM作为Node模块安装它们,并在Gruntjs或Gulpjs文件中配置插件以运行任务。
写了一篇非常简单的博客文章,介绍如何从头开始运行任务,可以在网站上找到。
可以使用Yeoman生成器脚手架一个开源项目。它只是一个脚手架工具,没有更多。每个项目都有一个生成器。他们的网站上有许多生成器可用。其中一些是社区创建的,一些是第三方的。
创建了Yeoman生成器,将在本文中使用它来使用Yeoman脚手架一个简单的ASP.NET Core 1.0应用程序。可以通过访问Yeoman网站来找到其他生成器。
注意:Grunt/Gulp和Yeoman是通过NPM安装的。
现在已经讨论了一些开源技术的基础知识。现在让脚手架一个简单的ASP.NET Core 1.0应用程序。假设已经在本地系统上安装了Node.js和Yeoman生成器。如果不知道如何安装Yeoman和Yeoman生成器,请参考他们的网站。
现在将使用Yeoman和Yeoman生成器来脚手架应用程序。按照以下步骤操作:
创建一个任意名称的文件夹,并在那里打开终端。
在终端中输入:
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上运行。