10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用

建立和开发ASP.NET Core应用能够有二种方式:最简单的方式是经过Visual Studio 2017 来建立,其优势是简单方便,但须要安装最新版本Visual Studio 2017 preview 15.3 。另外一种方式是使用Visual Studio Code来建立,Visual Studio Code 则是一款轻量级的编辑器 ,可在多种操做系统中运行,若是状况容许,笔者更建议使用Visual Studio Code来进行开发,可在多种平台开发,同时也更灵活,享受更多开发的乐趣。html

1.1. 先决条件

1.1.1. 安装.NET Core 2.0

开发ASP.NET Core 2.0的应用,前提是须要安装.NET Core 2.0 正式版。linux

下载地址https://www.microsoft.com/net/download/coreweb

安装完成后,可在命令行(cmd)中键入命令查看安装信息:docker

dotnet --info

安装信息以下图,表示.NET Core 2.0 已经成功安装shell

2017-08-20-22-07-28

1.1.2. 安装Visual Studio 2017

若是须要使用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

1.1.3. 安装Visual Studio Code

Visual Studio Code 是一个轻量级的源代码编辑器,能够运行在Windows,MacOs,和Linux。经过安装扩展可用来开发诸如C++、C#、 Python、PHP、Go等语言。windows

下载地址(https://code.visualstudio.com/)[https://code.visualstudio.com/]visual-studio-code

安装完成后,须要安装c#开发扩展以下图所示

vscode

1.2. 经过Visual Studio 2017 建立应用

经过Visual Studio 2017 建立应用很是简单,在新建项目时选择 ASP.NET Core webapplication便可

create asp.net core webapplication

在确认选择后,还会弹出一个对话框,选择代码结构模板,此处任意选择Web Application(MVC),项目便可生成完毕。在Visual Studio 2017中点击运行,一个ASP.NET Core 网站便可运行。

mvcmoive

1.3. 经过Visual Studio Code 建立应用

首先可在本地新建文件夹,而后打开Visual Studio Code ,选择打开刚才的文件夹

open vscode

在主菜单中依次选择“查看” > “集成终端”。在集成终端中输入 dotnet new mvc 命令,文件夹中会生成 mvc 的模板

2017-08-23-23-13-44

模板创建好后,可在集成终端中输入dotnet run 命令,mvc 站点便可运行。

2017-08-23-23-14-23

要在Visual Studio Code 中调试程序,须要配置调试器,点击调试配置,选择.NET Core配置文件

configure

此时会生成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命令,选择配置任务运行程序。

2017-08-23-23-12-20

配置完成后会多一个task.json文件,此时再次开启调试,即可运行调试。

debug

2017-08-23-23-13-01

1.4. 托管ASP.NET Core 应用

托管 ASP.NET Core 应用有多种方式,便可在传统的windows平台,也能够部署在开源的Linux上,还能够经过docker容器来部署,本节将讲解多种方式部署 ASP.NET Core 应用

1.4.1. Windows平台托管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命令,此时便可启动整个应用。

run

在ASP.NET Core中能够用两种HTTP server,它们请求原理如图所示:

Kestrel

HttpSys

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();

1.4.2. Linux平台下托管ASP.NET Core应用

因为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

2017-08-20-14-29-41

使用命令生成项目模板

dotnet new mvc -o app

以上命令会在当目录下面建立一个app文档夹,首先咱们要将根路径跳转到app文件夹下面

cd app

最后咱们要将ASP.NET Core应用在Linux环境下托管起来,只须要运行下面一条命令

dotnet run

2017-08-20-14-32-52

若是选择Http.Sys做为Linux下的服务器则会抛出异常

2017-08-23-23-11-01

1.5. 总结

从本节能够看出,无论是在传统的Windows环境仍是Linux环境,都能经过Visual Studio Code开发ASP.NET Core 应用程序,一样的在Windwos环境和Linux均可以使用ASP.NET Core自带的Web server来托管应用。


参考资料

【1】http://www.microsoft.com/net/core#linuxubuntu


做者:帅虫哥 出处: http://www.cnblogs.com/vipyoumay/p/7420436.html

相关文章
相关标签/搜索