ASP.NET Core Web開發學習筆記-1介紹篇
給大家說聲報歉,從2012年個人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也沒有更新過。踏實的生活(曾辭職轉行后重新回來),娶妻生子,很感謝我的朋友能在最危難時刻幫助我,也很感話我的妻子對我事業的支持,希望大家保重好身體,多學習,多陪伴家人。
一直從事.Net和 PHP 和一些不成型的前端開發,有人評論WP的失敗,是,現在這個開源的時候,如果跟不上,閉門自封,將會墜入深淵。個人認為微軟出.Net Core 為遲已晚,很多市場像Windows, CE,Phone一樣被市場冷酷的淘汰。但唯是 ASP.NET Core 是對 ASP.NET 的一次意義重大的重構。跨平台,C#語法通俗簡練,肯定效果不凡。
懂行的人都知道,ASP.NET 易學難精,只要大神優化做的好,用好MVC,webAPI,解決高並發,在后台語言上是有很多優點的,這里就不多費話了。本篇內容是為了記錄:ASP.NET Core Web開發學習筆記遇到的總結點。
什么是 ASP.NET Core?
ASP.NET Core 是一個新的開源和跨平台的框架,用於構建如 Web 應用、物聯網(IoT)應用和移動后端應用等連接到互聯網的基於雲的現代應用程序。ASP.NET Core 應用可運行於 .NET Core 和完整的 .NET Framework 之上。 構建它的目的是為那些部署在雲端或者內部運行(on-premises)的應用提供一個優化的開發框架。它由最小開銷的模塊化的組件構成,因此在構建你的解決方案的同時可以保持靈活性。你可以在 Windows、Mac 和 Linux 上跨平台的開發和運行你的 ASP.NET Core 應用。 ASP.NET Core 開源在 GitHub 上。
通過 ASP.NET Core,你可以獲得的改進:
- 一個統一的方式用於構建 web UI 和 web APIs
- 集成 現代的客戶端開發框架 和開發流程
- 一個適用於雲的,基於環境的 配置系統
- 內置的 依賴注入
- 新型的輕量級的、模塊化 HTTP 請求管道
- 運行於 IIS 或者自宿主(self-host)於你自己的進程的能力
- 基於支持真正的 side-by-side 應用程序版本化的 .NET Core 構建
- 完全以 NuGet 包的形式發布
- 新的用於簡化現代 web 開發的工具
- 可以在 Windows 、Mac 和 Linux 上構建和運行跨平台的 ASP.NET 應用
- 開源並且重視社區
應用程序事例
要進行開發環境和工具包安裝:
我們使用VS2015創建一個新的 ASP.NET Core 解決方案
一個 ASP.NET Core 應用其實就是一個在其 Main
方法中創建一個 web 服務器的簡單控制台應用程序:

在上面圖示中,web 服務器 Kestrel 被啟用,但是你也可以指定其它 web 服務器。(Kestrel 是一個實現了應用程序類似於IIS功能的服務器)
用於創建一個 web 應用程序宿主。這個 builder 有些用於定義 web 服務器 (如 UseKestrel
)和 startup 類型( UseStartup
)的方法。(startup 是一個全局啟動配置文件,用來定義請求處理管道和配置應用需要的服務。)
ConfigureServices 方法:可定義的服務有:實現了一系列IService的IServiceCollection,如:ASP.NET MVC Core framework、Entity Framework Core、Identity 等等
Configure 方法:定義你的請求管道中的 中間件(middleware)來配置並請求和響應HTTP的管道命令
什么是服務(Services)
服務是應用中用於通用調用的組件。服務通過依賴注入獲取並使用。 ASP.NET Core 內置了一個簡單的控制反轉(IoC) 容器,它默認支持構造器注入,並且可以方便的替換成你自己選用的 IoC 容器。
什么是中間件(Middleware)
ASP.NET Core 中間件為一個 HttpContext
執行異步邏輯,然后按順序調用下一個中間件或者直接終止請求。一般來說你要使用一個中間件,這個中間件要完成IHttpContext的ProcessRequest方法,如果您熟悉HTTP請求管道,這個方法一般在第7-8個事件處理中。
簡單的說,這個中間件,就是您的應用程序如何實現了IHttpContext,並做了相應的request 和 response和處理。
微軟給我們提供了哪些中間件:
ASP.NET Core 帶來了豐富的內置中間件:
- 靜態文件(Static files)
- 路由(Routing)
- 身份驗證(Authentication)
你也可以創建你自己的 自定義中間件。
你也可以在 ASP.NET Core 中使用任何基於 OWIN 的中間件。
服務器(Servers)
ASP.NET Core 托管模式並不直接監聽請求;而是依賴於一個 HTTP server 實現來轉發請求到應用程序。
這個服務器進行監聽你的應用服務端口,並轉發以一組 feature 接口的形式來包裝后請求,然后被應用程序組合到一個 HttpContext
中去。
ASP.NET Core 包含了一個托管的跨平台 web 服務器,被稱為 Kestrel,(想起來了嗎? 在)它往往會被運行在一個如 IIS 或者 nginx 的生產 web 服務器之后。
內容根目錄(Content root)
內容根目錄是應用程序所用到的所有內容的根路徑,例如它的 views 和 web 內容。內容根目錄默認與宿主應用的可執行程序的應用根目錄相同;一個替代的地址可以通過 WebHostBuilder 來設置。
Web根目錄(Web root)
你的應用的Web根目錄(Web root)是你項目中所有公共的、靜態的資源,如 css、js 和 圖片文件的目錄。靜態文件中間件將默認只發布 Web 根目錄(Web root)和其子目錄中的文件。 Web 根目錄(Web root)默認為 /wwwroot,但是你也可以通過 WebHostBuilder 來指定另外一個地址。
配置(Configuration)
ASP.NET Core 使用了一個新的配置模型用於處理簡單的鍵值對。新的配置模型並非基於System.Configuration
或者 web.config ;而是從一個有序的配置提供者集合拉取數據。內置的配置提供者支持多種不同的文件格式如(XML,JSON, INI)和用於支持基於環境的配置環境變量。你也可以實現你自己自定義的配置提供者。
環境(Environments)
環境:生產環境,DEBUG和RELEASE是一種編譯狀態,開發時在系統級開發中分了如 “Development” 和 “Production”,是 ASP.NET Core 中的第一級概念而且它可以設置成使用環境變量。
使用 ASP.NET Core MVC 構建 web UI 和 web APIs
- 你可以使用 Model-View-Controller(MVC)模式創建優秀的並且可測試的 web 應用程序。查看MVC 和 測試。
- 你可以構建支持多種格式並且完全支持內容協商的 HTTP 服務。 查看 Formatting
- Razor 提供了一種高效的語言用於創建 Views
- Tag Helpers 啟用服務器端的代碼參與到 - Razor 文件的創建和 HTML 元素渲染
- 你可以使用自定義或者內置的 formatters (JSON, XML)來構建完全支持內容協商的 HTTP 服務
- Model Binding 模型綁定 自動的映射 HTTP 請求中的數據到 action 方法參數
- Model Validation 模型驗證 自動的執行客戶端和服務器端驗證
-
客戶端開發
ASP.NET Core 在設計時已考慮到和各種客戶端框架(AngularJS,KnockoutJS 和 Bootstrap)的無縫集成。