创建和开发 ASP.NET Core 应用可以有二种方式:最简单的方式是通过 Visual Studio 2017 来创建,其优点是简单方便,但需要安装最新版本 Visual Studio 2017 preview 15.3 。另一种方式是使用 Visual Studio Code 来创建,Visual Studio Code 则是一款轻量级的编辑器 ,可在多种操作系统中运行,如果情况允许,笔者更建议使用 Visual Studio Code 来进行开发,可在多种平台开发,同时也更灵活,享受更多开发的乐趣。
开发 ASP.NET Core 2.0 的应用,前提是需要安装. NET Core 2.0 正式版。
下载地址 https://www.microsoft.com/net/download/core
安装完成后,可在命令行(cmd)中键入命令查看安装信息:
- dotnet--info
安装信息如下图,表示. NET Core 2.0 已经成功安装
如果需要使用 Visual Studio 2017 来开发,需要安装 Visual Studio 2017 Preview version 15.3,个人开发者可选择社区版,社区版的功能对于日常的开发已经足够,并且是免费。
下载地址 https://www.visualstudio.com/vs/preview/?dotnetid=639356346.1501080398
下载完成后可选择相应的工作负载来安装,如果只是运行 ASP.NET Core 应用则可以只安装响应部分,如下图所示:
Visual Studio Code 是一个轻量级的源代码编辑器,可以运行在 Windows,MacOs, 和 Linux。通过安装扩展可用来开发诸如 C++、C#、 Python、PHP、Go 等语言。
下载地址 (https://code.visualstudio.com/)[https://code.visualstudio.com/]
安装完成后,需要安装 c# 开发扩展如下图所示
通过 Visual Studio 2017 创建应用非常简单,在新建项目时选择 ASP.NET Core webapplication 即可
在确认选择后,还会弹出一个对话框,选择代码结构模板,此处任意选择
,项目即可生成完毕。在 Visual Studio 2017 中点击运行,一个 ASP.NET Core 网站即可运行。
- Web Application(MVC)
首先可在本地新建文件夹,然后打开 Visual Studio Code ,选择打开刚才的文件夹
在主菜单中依次选择 "查看" > "集成终端"。在集成终端中输入
命令,文件夹中会生成 mvc 的模板
- dotnet new mvc
模板建立好后,可在集成终端中输入
命令,mvc 站点即可运行。
- dotnet run
要在 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 节点中的路径改为自己程序集的路径即可, 例如
然后点击左侧调试图标,在左上角可选择启动调试,启动后会弹出, 对话框提示找不到 build 命令,选择配置任务运行程序。
- ${workspaceRoot/bin/Debug/netcoreapp2.0/WebApplicationSample1.dll
配置完成后会多一个 task.json 文件,此时再次开启调试,便可运行调试。
托管 ASP.NET Core 应用有多种方式,即可在传统的 windows 平台,也可以部署在开源的 Linux 上,还可以通过 docker 容器来部署,本节将讲解多种方式部署 ASP.NET Core 应用
ASP.NET Core 应用需要一个 Host , Host 必须要实现
接口,接口包括
- IWebHost
方法。创建一个 Host 需要使用
- Start
, 它会返回一个
- WebHostBuilder
实例,用于处理请求。
- WebHost
在上一节所创建的 ASP.NET Core 应用中,可以看到 Program.cs 文件中的'void Main'方法,此方法是整个应用的入口,在入口中调用了
来创建 Host, 代码如下:
- CreaDefaultbuilder
- 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
的实例来构建启动 server 的 host。host 需要一个实现
- WebHostBuilder
接口的 server。内建的 Web server 包括 Kestrel 和 Httpsys, 默认使用 Kestrel. 在命令行工具中执行
- IServer
命令,此时即可启动整个应用。
- 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
作者:帅虫哥 出处: http://www.cnblogs.com/vipyoumay/p/7420436.html
来源: http://www.cnblogs.com/vipyoumay/p/7420436.html