特點
- 輕量級
- 適合微服務架構
- 容器化
- 不向後兼容
- 所使用語言爲c#集成了linq、await、async等異步構造
- 依賴管理方案 Nuget(類似java的maven js的npm等)
配置文件
- launchSettings.json:配置啓動端口號 環境變量等
2.startup.cs:註冊相應依賴 開啓相應功能以及配置http管道等,如下圖所示:
-
該函數爲註冊服務
-
該函數爲配置http管道 檢查 &處理http請求
具體工作過程如下圖
//如下代碼 即可在默認鏈接上+/test即可得到hello from test的字符串響應
app.Map("/test", build =>
{
build.Run(async contenxt =>
{
await contenxt.Response.WriteAsync("hello from test");
});
});
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
相應方式
- 傳統相應方式
- 映射資源必須在服務器中
- url相對路徑必須與請求資源的路徑一致
缺點: - 無法服務動態文件
- 文件必須帶有後綴
- 暴露服務器文件結構
- Asp.Net MVC 路由系統
- 無需文件在真正保存的硬盤上
- 訪問文件無需後綴
- url結構與服務器文件夾結構無關
- url將會映射給controller控制器請求 不會直接映射給靜態文件
路由
兩種路由映射模式
- 傳統路由
app.UseMvc(router =>
{
router.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
- 特性註釋路由
[Route("[controller]/[action]")]
MVC
概念:軟件工程的結構方式
M (Model)模型:架構核心,表示業務模型或數據模型,實現業務邏輯(算法 實現,數據的管理 輸出的對象的封裝等)
V (View)視圖:交互界面,接收輸入,展示數據但不處理
C (Controller)控制器:接收輸入 並調用模型和視圖完成用戶請求,不處理數據,但返回視圖和顯示數據
優點:分離業務操作 數據顯示 邏輯控制,且耦合性低,複用性高,可維護性高
缺點:
- 定義不明確:開發人員沒有正確理解mvc的真諦
- 結構複雜:簡單頁面遵循mvc會導致數據操作多 效率低下
- 數據流動率低:頻繁訪問數據造成性能下降
與傳統三層區別
- 傳統三層面向接口編程 層級完全解耦 完全可替換
- mvc每個部分都是緊密結合,他的核心不說解耦,而是重用