设为首页 收藏本站
查看: 1028|回复: 0

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

[复制链接]

尚未签到

发表于 2017-12-7 14:42:41 | 显示全部楼层 |阅读模式
  创建和开发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
    • 1.1.2. 安装Visual Studio 2017
    • 1.1.3. 安装Visual Studio Code

  • 1.2. 通过Visual Studio 2017 创建应用
  • 1.3. 通过Visual Studio Code 创建应用
  • 1.4. 托管ASP.NET Core 应用

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

  • 1.5. 总结

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 已经成功安装
DSC0000.jpg


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应用则可以只安装响应部分,如下图所示:
DSC0001.jpg


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#开发扩展如下图所示
DSC0002.jpg


1.2. 通过Visual Studio 2017 创建应用
  通过Visual Studio 2017 创建应用非常简单,在新建项目时选择 ASP.NET Core webapplication即可
DSC0003.jpg

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


1.3. 通过Visual Studio Code 创建应用
  首先可在本地新建文件夹,然后打开Visual Studio Code ,选择打开刚才的文件夹
DSC0005.jpg

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

  模板建立好后,可在集成终端中输入dotnet run 命令,mvc 站点即可运行。
DSC0007.jpg

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

  此时会生成launch.json文件,文件中有三种launch方式,以web节点为例
{  "name": ".NET Core Launch (web)",
  "type": "coreclr",
  "request": "launch",
  "preLaunchTask": "build",
  &quot;program&quot;: &quot;${workspaceRoot}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll&quot;,
  &quot;args&quot;: [],
  &quot;cwd&quot;: &quot;${workspaceRoot}&quot;,
  &quot;stopAtEntry&quot;: false,
  &quot;launchBrowser&quot;: {
  &quot;enabled&quot;: true,
  &quot;args&quot;: &quot;${auto-detect-url}&quot;,
  &quot;windows&quot;: {
  &quot;command&quot;: &quot;cmd.exe&quot;,
  &quot;args&quot;: &quot;/C start ${auto-detect-url}&quot;
  },
  &quot;osx&quot;: {
  &quot;command&quot;: &quot;open&quot;
  },
  &quot;linux&quot;: {
  &quot;command&quot;: &quot;xdg-open&quot;
  }
  }
  
}
  将program节点中的路径改为自己程序集的路径即可,例如${workspaceRoot/bin/Debug/netcoreapp2.0/WebApplicationSample1.dll然后点击左侧调试图标,在左上角可选择启动调试,启动后会弹出,对话框提示找不到build命令,选择配置任务运行程序。
DSC0009.jpg

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

DSC00011.jpg


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>  
{
  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命令,此时即可启动整个应用。
DSC00012.jpg

  在ASP.NET Core中可以用两种HTTP server,它们请求原理如图所示:
DSC00013.jpg

DSC00014.jpg


  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 &quot;deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main&quot; > /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
  

  

DSC00015.jpg

  使用命令生成项目模板
  

  
dotnet new mvc -o app
  

  

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

  
cd app
  

  

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

  
dotnet run
  

  

DSC00016.jpg

  如果选择Http.Sys作为Linux下的服务器则会抛出异常
DSC00017.jpg


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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421754-1-1.html 上篇帖子: .NET Core多平台开发体验[1]: Windows 下篇帖子: windows server 2008性能测试出现大量time_wait
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表