精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入淺出Dotnet Core的項目結構變化

開發 項目管理
今天,就著這個點,寫一下Dotnet Core的主要類型的項目結構,以及之間的轉換和演化。

 [[375510]]

本文轉載自微信公眾號「老王Plus」,作者老王Plus的老王 。轉載本文請聯系老王Plus公眾號。

前幾天Review一個項目的代碼,發現非常基礎的內容,也會有人理解出錯。

今天,就著這個點,寫一下Dotnet Core的主要類型的項目結構,以及之間的轉換和演化。

一、最基礎的應用Console

控制臺應用,是Dotnet Core乃至前邊的Dotnet Framework中,最基礎的項目。

我們來創建一個Console項目看一下:

  1. % dotnet new console -o demo 

創建完成后,打開工程。工程里只有一個文件Program.cs,里面只有一個方法Main:

  1. namespace demo 
  2.     class Program 
  3.     { 
  4.         static void Main(string[] args) 
  5.         { 
  6.             Console.WriteLine("Hello World!"); 
  7.         } 
  8.     } 

在Dotnet Core所有類型的項目中,Program.cs都是最開始的入口,main方法,也是最開始的入口方法。

這個工程中,還有一個文件也需要了解一下,demo.csproj,這是這個項目的定義文件:

  1. <Project Sdk="Microsoft.NET.Sdk"
  2.  
  3.   <PropertyGroup> 
  4.     <OutputType>Exe</OutputType> 
  5.     <TargetFramework>net5.0</TargetFramework> 
  6.   </PropertyGroup> 
  7.  
  8. </Project> 

這里面,OutputType告訴編輯器這個工程編譯后可以直接執行,TargetFramework定義運行的框架。

注意,這個框架字串有個對照表:net5.0對應的是.Net 5.0;如果你想用Dotnet Core 3.1,對應的字符串是netcoreapp3.1,而不是net3.1。準確的說,3.1是.Net Core 3.1,而5.0是.Net 5.0。不用太糾結,微軟的命名規則而已。

這就是控制臺應用Console的初始狀態。

下面,我們看看這個工程如何轉變為Web應用。

二、轉為Web應用

第一件事,我們需要改動demo.csproj項目定義文件。

Web應用跑在WebHost上面,而不是從直接執行。所以,我們需要把OutputType項去掉。

另外,SDK也需要改一下。Console我們用的是Microsoft.NET.Sdk,Web應用要改成Microsoft.NET.Sdk.Web:

  1. <Project Sdk="Microsoft.NET.Sdk.Web"
  2.  
  3.   <PropertyGroup> 
  4.     <TargetFramework>net5.0</TargetFramework> 
  5.   </PropertyGroup> 
  6.  
  7. </Project> 

改完保存。

這時候,應該可以注意到,項目的發生了變化:

  • 依賴的框架從Microsoft.NETCore.App變成了兩個,多了一個Microsoft.AspNetCore.App,表明現在這是一個Asp.net Core的應用;
  • 項目中自動生成了一個目錄Properties,下面多了一個文件launchSettings.json。這個文件大家應該很熟悉,就不解釋了。

這時候,應用已經從Console轉為了Web應用。

Asp.Net Core框架提供了Host供Web加載。我們需要做的,是把Host構建器加到程序中。通常,我們需要兩個構建器:

  • 通用主機 Generic host builder
  • Web主機 Web host builder

1. 配置通用主機

通用主機在Microsoft.Extensions.Hosting.Host中,主要給Web應用提供以下功能:

  • 依賴注入
  • 日志
  • 配置 IConfiguration
  • IHostedService實現

加入通用主機很簡單,就一個方法CreateDefaultBuilder:

  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         Host.CreateDefaultBuilder(args) 
  5.             .Build() 
  6.             .Run(); 
  7.     } 

2. 配置Web主機

Web主機才是真正與Web相關的內容,主要實現:

  • Http支持
  • 設置Kestrol服務器為Web服務器
  • 添加IIS支持

加入Web主機,也是一個方法ConfigureWebHostDefaults:

  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         Host.CreateDefaultBuilder(args) 
  5.             .ConfigureWebHostDefaults(webBuilder => 
  6.             { 
  7.             }) 
  8.             .Build() 
  9.             .Run(); 
  10.     } 

這個方法用來添加Http請求管道并注入我們需要的服務。而注入我們需要的服務,就是我們最常見的Startup.cs的內容。

下面,我們先創建Startup.cs,

  1. namespace demo 
  2.     public class Startup 
  3.     { 
  4.     } 

在前邊ConfigureWebHostDefaults中,加入Startup,并補齊代碼:

  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         Host.CreateDefaultBuilder(args) 
  5.             .ConfigureWebHostDefaults(webBuilder => 
  6.             { 
  7.                 webBuilder.UseStartup<Startup>(); 
  8.             }) 
  9.             .Build() 
  10.             .Run(); 
  11.     } 

這就是Program.cs中的完整代碼了。整理一下,就是我們常見的樣子:

  1. public class Program 
  2.     public static void Main(string[] args) 
  3.     { 
  4.         CreateHostBuilder(args).Build().Run(); 
  5.     } 
  6.  
  7.     public static IHostBuilder CreateHostBuilder(string[] args) => 
  8.         Host.CreateDefaultBuilder(args) 
  9.             .ConfigureWebHostDefaults(webBuilder => 
  10.             { 
  11.                 webBuilder.UseStartup<Startup>(); 
  12.             }); 

不過,到這兒還不能正常運行,因為Startup.cs現在還是空的。

3. 補齊Startup類

Startup類在Asp.net Core應用中有著重要的作用。這個類用于:

  • 使用DI容器注入服務
  • 設置Http Request管道以插入中間件

下面我們補齊所需的方法:

  1. namespace demo 
  2.     public class Startup 
  3.     { 
  4.         public void ConfigureServices(IServiceCollection services) 
  5.         { 
  6.         } 
  7.         public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  8.         { 
  9.         } 
  10.     } 

運行,到這兒,Web應用已經可以正常啟動了。

4. 給應用添加路由

Web應用啟動了,但里面什么也沒有,是空的。

要訪問Web應用中的任何資源,需要配置路由。這兒的路由,基本上就是傳入Http請求與資源之間的映射。

我們可以用下面的中間件來啟動路由:

  • UseRouting
  • UseEndpoints

加一下試試:

  1. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  2.     app.UseRouting(); 
  3.     app.UseEndpoints(endpoint => { 
  4.         endpoint.MapGet("/", async context => 
  5.         { 
  6.             await context.Response.WriteAsync("Hello from Demo"); 
  7.         }); 
  8.     }); 

這次運行,瀏覽器中就看到正確的輸出了。

我們可以用MapGet映射更多資源:

  1. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  2.     app.UseRouting(); 
  3.     app.UseEndpoints(endpoint => 
  4.     { 
  5.         endpoint.MapGet("/", async context => 
  6.         { 
  7.             await context.Response.WriteAsync("Hello from Demo"); 
  8.         }); 
  9.         endpoint.MapGet("/test", async context => 
  10.         { 
  11.             await context.Response.WriteAsync("Hello from Demo.Test"); 
  12.         }); 
  13.         endpoint.MapGet("/about", async context => 
  14.         { 
  15.             await context.Response.WriteAsync("Hello from Demo.About"); 
  16.         }); 
  17.     }); 

到這兒,我們成功地把Console應用轉為了Web應用。

三、延伸內容

上面完成的Web應用,算是Web應用中的基礎。基于這個內容,我們還可以擴展到別的項目結構。

1. 改為MVC應用

需要在ConfigureServices中注入AddControllersWithViews,并在Configure中添加MapDefaultControllerRoute:

  1. public class Startup 
  2.     public void ConfigureServices(IServiceCollection services) 
  3.     { 
  4.         services.AddControllersWithViews(); 
  5.     } 
  6.     public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  7.     { 
  8.         app.UseRouting(); 
  9.         app.UseEndpoints(endpoint => 
  10.         { 
  11.             endpoint.MapDefaultControllerRoute(); 
  12.         }); 
  13.     } 

2. 改為WebAPI應用

需要注入AddControllers和MapControllers:

  1. public class Startup 
  2.     public void ConfigureServices(IServiceCollection services) 
  3.     { 
  4.         services.AddControllers(); 
  5.     } 
  6.     public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  7.     { 
  8.         app.UseRouting(); 
  9.         app.UseEndpoints(endpoint => 
  10.         { 
  11.             endpoint.MapControllers(); 
  12.         }); 
  13.     } 

3. 改為Razor應用

需要注入AddRazorPages和MapRazorPages:

  1. public class Startup 
  2.     public void ConfigureServices(IServiceCollection services) 
  3.     { 
  4.         services.AddRazorPages(); 
  5.     } 
  6.     public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  7.     { 
  8.         app.UseRouting(); 
  9.         app.UseEndpoints(endpoint => 
  10.         { 
  11.             endpoint.MapRazorPages(); 
  12.         }); 
  13.     } 

四、總結

看下來,其實過程很簡單。通過這種方式,能更進一步理解Dotnet Core的項目結構以及應用的運行過程。

希望對大家能有所幫助。

?

本文的配套代碼在:https://github.com/humornif/Demo-Code/tree/master/0038/demo

 

責任編輯:武曉燕 來源: 老王Plus
相關推薦

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2019-11-11 14:51:19

Java數據結構Properties

2009-11-30 16:46:29

學習Linux

2022-12-02 09:13:28

SeataAT模式

2017-07-02 18:04:53

塊加密算法AES算法

2012-05-21 10:06:26

FrameworkCocoa

2019-01-07 15:29:07

HadoopYarn架構調度器

2021-07-20 15:20:02

FlatBuffers阿里云Java

2022-09-26 09:01:15

語言數據JavaScript

2022-01-13 09:38:25

Android架構設計

2023-03-20 09:48:23

ReactJSX

2019-11-14 09:53:30

Set集合存儲

2009-12-25 15:49:43

Linux rescu

2018-11-09 16:24:25

物聯網云計算云系統

2021-04-27 08:54:43

ConcurrentH數據結構JDK8

2022-11-09 08:06:15

GreatSQLMGR模式

2012-02-21 13:55:45

JavaScript

2022-10-31 09:00:24

Promise數組參數

2009-11-18 13:30:37

Oracle Sequ
點贊
收藏

51CTO技術棧公眾號

亚洲伦理影院| 亚洲一级特黄毛片| 成人涩涩网站| 欧美视频国产精品| 日韩片电影在线免费观看| 一本色道久久综合熟妇| 狠狠噜噜久久| 中文字幕亚洲色图| 99999精品| 97在线超碰| 国产日韩欧美在线一区| 成人亚洲激情网| 日韩乱码人妻无码中文字幕| 国产精品一区二区av日韩在线| 69堂国产成人免费视频| 国产免费毛卡片| 日本精品一区二区三区在线播放| 成人美女视频在线观看| 国产精品久久久999| 久久亚洲成人av| 日韩精品久久久久久久电影99爱| 精品国产青草久久久久福利| 成人在线免费播放视频| 日本三级在线观看网站| 国产欧美一区二区三区网站| 国产伦精品一区二区三区视频免费| 亚洲男人的天堂在线视频| 婷婷综合五月| 亚洲人成电影在线观看天堂色| 中国老熟女重囗味hdxx| 欧美激情福利| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产一区二区三区久久| 久久精品免费播放| 小早川怜子久久精品中文字幕| 中文字幕久久精品一区二区| 欧美日韩激情一区二区三区| 乱妇乱女熟妇熟女网站| 呦呦在线视频| 日韩美女视频一区| 日韩三级电影| 九色在线观看视频| 99国产精品一区| 国产精品欧美久久| 精品久久久久久亚洲综合网站 | 日韩欧美国产片| 全亚洲第一av番号网站| 五月婷婷色综合| 日本免费黄色小视频| 黄网站视频在线观看| 国产精品久久午夜夜伦鲁鲁| 亚洲不卡一卡2卡三卡4卡5卡精品| 丰满肉嫩西川结衣av| 国产精品性做久久久久久| 国产日韩精品电影| 五月婷婷激情五月| 日韩—二三区免费观看av| 91精品国产91久久久| 日韩精品在线免费看| 亚洲精品视频啊美女在线直播| 欧美二区在线播放| 国产十六处破外女视频| 欧美成人久久| 九九精品在线播放| 欧美xxxx黑人xyx性爽| 欧美全黄视频| 久久久日本电影| 可以在线观看av的网站| 国产精品亚洲综合色区韩国| 日本精品免费观看| 日本丰满少妇做爰爽爽| www在线视频| 精品嫩草影院| 日韩欧美成人一区| 挪威xxxx性hd极品| 欧美18xxxx| 亚洲区在线播放| 自拍偷拍你懂的| 亚洲一区欧美| 欧美激情a在线| 99精品在线播放| 日本女人一区二区三区| 成人网在线免费看| 黄色av小说在线观看| 91麻豆精东视频| 婷婷久久伊人| 亚洲图区一区| 欧美性黄网官网| 一级黄色香蕉视频| 懂色av色香蕉一区二区蜜桃| 日韩精品中午字幕| 手机av免费看| 五月天综合网站| 97免费中文视频在线观看| 亚洲va在线观看| 精品中文字幕一区二区| 国产在线精品二区| 在线激情网站| 精品国产成人av| 亚洲一级免费观看| 51vv免费精品视频一区二区 | 五月婷婷在线观看视频| 国产人成一区二区三区影院| 国产专区在线视频| 免费在线小视频| 欧美日韩国产乱码电影| 精品人妻伦一二三区久| 日韩精品二区| 欧美一级片久久久久久久| 这里只有精品9| 99国产精品久久| 男女h黄动漫啪啪无遮挡软件| cao在线视频| 91精品欧美福利在线观看| 国产毛片毛片毛片毛片毛片毛片| 国产精品毛片一区二区在线看| 97香蕉超级碰碰久久免费的优势| 91片黄在线观看喷潮| 91麻豆文化传媒在线观看| 日韩免费在线观看av| 高清av一区| 精品视频在线观看日韩| 麻豆明星ai换脸视频| 丝袜美腿高跟呻吟高潮一区| 俄罗斯精品一区二区| 老司机在线看片网av| 一本久道久久综合中文字幕| 中文字幕在线视频播放| 亚洲成人av| 国产欧美日韩免费| 青青色在线视频| 亚洲成va人在线观看| 91精品视频国产| 欧美激情偷拍自拍| 国产精品成人va在线观看| 天堂中文资源在线| 亚洲一二三四在线| 伊人影院在线观看视频| 亚洲二区三区不卡| 国产在线视频不卡| av网站无病毒在线| 欧美影院一区二区三区| 久久久久久久久久久国产精品| 日韩一级在线| 精品国产免费久久久久久尖叫 | 一本久久青青| 午夜精品一区二区三区视频免费看| 精品国产九九九| 亚洲丝袜制服诱惑| 亚洲精品中文字幕乱码无线| 欧美激情偷拍自拍| 成人黄色av播放免费| 午夜在线视频| 在线不卡中文字幕播放| 懂色av粉嫩av蜜臀av一区二区三区| 久久青草久久| 日本公妇乱淫免费视频一区三区| 外国成人直播| 亚洲午夜精品久久久久久性色| 亚洲 欧美 中文字幕| 久久久.com| 天天爱天天操天天干| 欧美亚洲激情| 国产一区玩具在线观看| 免费观看在线黄色网| 欧美一区二区三区在线电影 | 午夜精品久久久久久| 日韩精品人妻中文字幕有码| 亚洲精品精选| 欧美激情导航| 欧美韩国日本| 九九热精品视频国产| 欧美 日韩 人妻 高清 中文| 狠狠做深爱婷婷久久综合一区 | 中文字幕在线一区免费| 一级黄色高清视频| 在线成人国产| 日本成人黄色免费看| 欧美极品在线| 美女国内精品自产拍在线播放| 粉嫩av一区二区夜夜嗨| 欧美性色视频在线| 国产主播av在线| 国产精品一区二区三区网站| 欧美黑人经典片免费观看| 亚洲精品小区久久久久久| 国产欧美日韩免费| 黄页网站在线| 亚洲色图25p| 国产精品呻吟久久| 天天操天天干天天综合网| 亚洲黄色小说视频| 国产精品一品二品| 久久久久久久久久久福利| 日韩久久综合| 国产一区在线免费| 欧美视频在线视频精品| 久久久久五月天| 成人不用播放器| 欧美tk—视频vk| 中文字幕av免费观看| 亚洲一区在线看| 91资源在线播放| 成人小视频在线| 男人添女人下面免费视频| 亚洲二区在线| 亚洲资源在线网| 色综合www| 99久热re在线精品996热视频| 美女福利一区二区三区| 欧美人成在线视频| 成人精品一区二区三区免费| 亚洲а∨天堂久久精品9966| 中文字幕av网站| 日韩欧美中文免费| 欧美极品视频在线观看| 中文在线一区二区| 国产国语性生话播放| 国产美女娇喘av呻吟久久| 狠狠操精品视频| 精品动漫av| 看全色黄大色大片| 日韩av大片| 欧美日韩国产精品一卡| 亚洲一区网址| 亚洲综合最新在线| 国产极品一区| 国产精品扒开腿做爽爽爽男男| 高清电影在线免费观看| 久久福利视频导航| 美女av在线播放| 中文字幕亚洲色图| 黄视频在线播放| 亚洲欧美激情视频| 日韩一级免费毛片| 精品va天堂亚洲国产| 99在线观看免费| 欧美久久一二区| 奴色虐av一区二区三区| 日韩欧美在线免费观看| 三级黄色在线视频| 亚洲高清三级视频| 久久高清无码视频| 悠悠色在线精品| 日韩在线观看视频一区二区| 国产精品国产馆在线真实露脸| 日韩中文字幕有码| 国产欧美一区二区在线| 久久久久久国产免费a片| 国产欧美一区二区三区网站| 国产aⅴ激情无码久久久无码| 91年精品国产| 久久av无码精品人妻系列试探| 久久久久久麻豆| 91网站免费视频| 亚洲国产精品二十页| 成人欧美一区二区三区黑人一| 欧美高清在线精品一区| 日韩欧美视频免费观看| 日韩美女精品在线| 五月天丁香激情| 亚洲一区二区三区四区五区中文| 国产亚洲小视频| 无码av中文一区二区三区桃花岛| 日本一区二区三区精品| 91精品1区2区| 91福利在线观看视频| 91精品国产品国语在线不卡| www日本视频| 亚洲国产黄色片| 亚洲av片在线观看| 一区二区成人av| 麻豆传媒视频在线观看免费| 欧美成年人视频| 国产传媒在线观看| 日本精品视频在线| 伊人久久大香| 国产精品久久久久久久久久直播| 精品欧美午夜寂寞影院| 日韩尤物视频| 中文字幕乱码亚洲无线精品一区| 日韩亚洲欧美视频| 三级影片在线观看欧美日韩一区二区| 一区二区三区视频网| 国产精品1区二区.| 国产不卡一二三| 欧美激情一区二区三区全黄| 曰本女人与公拘交酡| 欧美性xxxx极品高清hd直播| 国产又黄又爽视频| 亚洲成avwww人| 九色视频成人自拍| 久久天天躁狠狠躁夜夜av| 97天天综合网| 国产精品久久久亚洲| 日韩欧美一级| 色一情一乱一伦一区二区三区 | 91蝌蚪porny九色| 精品熟妇无码av免费久久| 亚洲综合一二三区| 神马久久久久久久| 日韩一级视频免费观看在线| 外国精品视频在线观看| 久久最新资源网| 三上悠亚一区二区| 3d精品h动漫啪啪一区二区| 红桃视频在线观看一区二区| 美女av免费观看| 日本人妖一区二区| 亚洲精品国产成人av在线| 国产精品国产三级国产aⅴ无密码| 日韩精品视频播放| 欧美一区二区在线视频| 免费看男男www网站入口在线| 欧美老肥婆性猛交视频| 99re66热这里只有精品4| 国产精品日韩高清| 久久精品亚洲欧美日韩精品中文字幕| 成人在线免费在线观看| 岛国av在线一区| 91麻豆免费视频网站| 色先锋久久av资源部| 天堂网2014av| 色综合老司机第九色激情| 欧美在线一级| 性欧美精品一区二区三区在线播放| 国产精品美女久久久| 日本成人在线免费| 自拍视频在线观看一区二区| 亚洲综合成人av| 亚洲精品少妇网址| free性护士videos欧美| yy111111少妇影院日韩夜片| 91精品综合| www.夜夜爽| 国产精品人成在线观看免费| 欧美h在线观看| 亚洲精品xxxx| 成年人视频免费在线播放| 亚洲最大福利视频| 亚洲国产精品久久久天堂| 自拍偷拍一区二区三区四区| 国产视频不卡一区| 日韩精品一区不卡| 亚洲欧美日本精品| 国产精品粉嫩| 欧美日韩国产高清视频| 久久亚洲一区| 在线观看日本中文字幕| 欧美影院精品一区| bbbbbbbbbbb在线视频| 国产精品第七影院| 久久国产精品亚洲人一区二区三区| av网址在线观看免费| 久久亚洲欧美国产精品乐播 | 国产精品美女诱惑| 亚洲欧洲一区二区天堂久久| 91传媒理伦片在线观看| 亚洲不卡一区二区三区| 天天摸天天干天天操| 3344国产精品免费看| 久久99国内| 国产精品入口免费软件| 国产精品人妖ts系列视频| 一级全黄裸体免费视频| 久久av.com| 999久久久精品一区二区| 春日野结衣av| 国产亚洲综合在线| 一本色道久久综合亚洲| 久久99精品国产99久久6尤物| 都市激情亚洲欧美| 国产精品视频一区二区三区四区五区| 久久老女人爱爱| 一二三四区在线| 欧美精品制服第一页| 久久97精品| 国产日韩成人内射视频| 国产精品久久久久桃色tv| 国产乱叫456在线| 国内精品久久久久久| 女人av一区| 在线免费看v片| 亚洲成a人片在线观看中文| 国产小视频免费在线观看| 成人亚洲激情网| 国产一级久久| 99久久久免费精品| 亚洲国产精品人人爽夜夜爽| 台湾成人免费视频| 成人短视频在线观看免费| 91丨porny丨户外露出| 在线观看毛片网站| 久久久久久久香蕉网| 成人精品视频| 亚洲天堂2024| 欧美日本韩国一区二区三区视频 | av中字幕久久| 日本精品一二三| 欧美视频一区在线观看|