美文网首页.Net Core
10分钟学会在windows/Linux下设置ASP.Net C

10分钟学会在windows/Linux下设置ASP.Net C

作者: xdpie | 来源:发表于2017-09-07 09:52 被阅读342次

    创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 来创建,其优点是简单方便,但需要安装最新版本Visual Studio 2017 preview 15.3 。另一种方式是使用Visual Studio Code来创建,Visual Studio Code 则是一款轻量级的编辑器 ,可在多种操作系统中运行,如果情况允许,笔者更建议使用Visual Studio Code来进行开发,可在多种平台开发,同时也更灵活,享受更多开发的乐趣。

    1.1. 先决条件

    1.1.1. 安装.NET Core 2.0

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

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

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

    dotnet --info
    

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

    2017-08-20-22-07-28

    1.1.2. 安装Visual Studio 2017

    如果需要使用Visual Studio 2017 来开发,需要安装 Visual Studio 2017 Preview version 15.3,个人开发者可选择社区版,社区版的功能对于日常的开发已经足够,并且是免费。

    下载地址 https://www.visualstudio.com/vs/preview/?dotnetid=639356346.1501080398

    下载完成后可选择相应的工作负载来安装,如果只是运行ASP.NET Core应用则可以只安装响应部分,如下图所示:

    安装Visual Studio

    1.1.3. 安装Visual Studio Code

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

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

    安装完成后,需要安装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


    作者:xdpie 原出处: http://www.xdpie.com/2017/09/09/ten-min-windows-linux-set-asp-net-core/

    相关文章

      网友评论

      本文标题:10分钟学会在windows/Linux下设置ASP.Net C

      本文链接:https://www.haomeiwen.com/subject/dxlbjxtx.html