建立和开发ASP.NET Core应用能够有二种方式:最简单的方式是经过Visual Studio 2017 来建立,其优势是简单方便,但须要安装最新版本Visual Studio 2017 preview 15.3 。另外一种方式是使用Visual Studio Code来建立,Visual Studio Code 则是一款轻量级的编辑器 ,可在多种操做系统中运行,若是状况容许,笔者更建议使用Visual Studio Code来进行开发,可在多种平台开发,同时也更灵活,享受更多开发的乐趣。html
开发ASP.NET Core 2.0的应用,前提是须要安装.NET Core 2.0 正式版。linux
安装完成后,可在命令行(cmd)中键入命令查看安装信息:docker
dotnet --info
安装信息以下图,表示.NET Core 2.0 已经成功安装shell
若是须要使用Visual Studio 2017 来开发,须要安装 Visual Studio 2017 Preview version 15.3,我的开发者可选择社区版,社区版的功能对于平常的开发已经足够,而且是免费。json
下载地址 https://www.visualstudio.com/vs/preview/?dotnetid=639356346.1501080398ubuntu
下载完成后可选择相应的工做负载来安装,若是只是运行ASP.NET Core应用则能够只安装响应部分,以下图所示:c#
Visual Studio Code 是一个轻量级的源代码编辑器,能够运行在Windows,MacOs,和Linux。经过安装扩展可用来开发诸如C++、C#、 Python、PHP、Go等语言。windows
下载地址(https://code.visualstudio.com/)[https://code.visualstudio.com/]visual-studio-code
安装完成后,须要安装c#开发扩展以下图所示
经过Visual Studio 2017 建立应用很是简单,在新建项目时选择 ASP.NET Core webapplication便可
在确认选择后,还会弹出一个对话框,选择代码结构模板,此处任意选择Web Application(MVC)
,项目便可生成完毕。在Visual Studio 2017中点击运行,一个ASP.NET Core 网站便可运行。
首先可在本地新建文件夹,而后打开Visual Studio Code ,选择打开刚才的文件夹
在主菜单中依次选择“查看” > “集成终端”。在集成终端中输入 dotnet new mvc
命令,文件夹中会生成 mvc 的模板
模板创建好后,可在集成终端中输入dotnet run
命令,mvc 站点便可运行。
要在Visual Studio Code 中调试程序,须要配置调试器,点击调试配置,选择.NET Core配置文件
此时会生成launch.json文件,文件中有三种launch方式,以web节点为例
{ "name": ".NET Core Launch (web)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceRoot}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll", "args": [], "cwd": "${workspaceRoot}", "stopAtEntry": false, "launchBrowser": { "enabled": true, "args": "${auto-detect-url}", "windows": { "command": "cmd.exe", "args": "/C start ${auto-detect-url}" }, "osx": { "command": "open" }, "linux": { "command": "xdg-open" } } }
将program节点中的路径改成本身程序集的路径便可,例如${workspaceRoot/bin/Debug/netcoreapp2.0/WebApplicationSample1.dll
而后点击左侧调试图标,在左上角可选择启动调试,启动后会弹出,对话框提示找不到build命令,选择配置任务运行程序。
配置完成后会多一个task.json文件,此时再次开启调试,即可运行调试。
托管 ASP.NET Core 应用有多种方式,便可在传统的windows平台,也能够部署在开源的Linux上,还能够经过docker容器来部署,本节将讲解多种方式部署 ASP.NET Core 应用
ASP.NET Core 应用须要一个Host , Host必需要实现IWebHost
接口,接口包括Start
方法。建立一个Host 须要使用WebHostBuilder
,它会返回一个WebHost
实例,用于处理请求。
在上一节所建立的ASP.NET Core应用中,能够看到Program.cs文件中的 'void Main'方法,此方法是整个应用的入口,在入口中调用了CreaDefaultbuilder
来建立Host,代码以下:
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }
CreateDefaultBuilder
建立了WebHostBuilder
的实例来构建启动 server 的 host。host须要一个实现IServer
接口的server。内建的Web server 包括 Kestrel 和 Httpsys,默认使用Kestrel.在命令行工具中执行dotnet run
命令,此时便可启动整个应用。
在ASP.NET Core中能够用两种HTTP server,它们请求原理如图所示:
Kestrel 是跨平台的HTTP server 基于libuv(一个跨平台的异步I/O library)
Httpsys 是基于Windows内核驱动程序Http.Sys的HTTP server。Http.Sys是成熟的技术,能够防范多种攻击,并提供全功能Web服务器的鲁棒性,安全性和可扩展性。IIS自己做为HTTP侦听器运行在Http.Sys之上。
在windows平台上还可使用Http.Sys做为Web Server
WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseHttpSys() .Build();
因为ASP.NET Core的跨平台性,所以在Liunx环境下也可使用,须要注意的是在Linux环境下是不能选择Http.Sys做为Web server,而只能选择Kestrel。本文选用 Ubuntu 16.04 系统,做为示例。
第一步:注册微软key为可信任
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
注:若是没有curl须要安装curl。命令 sudo apt-get install curl
第二步:将微软的安装地址设为可信任的列表
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
第三步:更新apt-get
版本
sudo apt-get update
第四步:更新完成后便可安装最新.NET Core 2.0
sudo apt-get install dotnet-sdk-2.0.0
安装完成后使用以下命令查看.NET Core 版本信息
dotnet --info
使用命令生成项目模板
dotnet new mvc -o app
以上命令会在当目录下面建立一个app文档夹,首先咱们要将根路径跳转到app文件夹下面
cd app
最后咱们要将ASP.NET Core应用在Linux环境下托管起来,只须要运行下面一条命令
dotnet run
若是选择Http.Sys做为Linux下的服务器则会抛出异常
从本节能够看出,无论是在传统的Windows环境仍是Linux环境,都能经过Visual Studio Code开发ASP.NET Core 应用程序,一样的在Windwos环境和Linux均可以使用ASP.NET Core自带的Web server来托管应用。
参考资料
【1】http://www.microsoft.com/net/core#linuxubuntu