-
查看全部
-
全部筆記:
start up :項目運行配置 管理依賴注入 中間間(configure-》Middelware) 以及處理請求通道(由IApplicationBuilder類創 建)
Program.cs-》
CreateDefaultDuilder(args)->1.加載主機和應用得配置信息
2.配置日志記錄
3.設置web服務器
4.設置asp.net core的應用形式
Asp.net MVC routing系統
?1.無需文件真正保存在硬盤上
2.訪問文件無需后綴
3.URL結構與服務器文件夾結構無關
4.url將會被映射給Controller控制器來處理請求,不會映射給靜態文件
http請求交給服務器-》controller來進行活動 之后再有controller響應http請求
URL:{域名}/Controller/Action
具體信息又分段路由segments(自定義路由)來處理
URL:{域名}/Controller/Action/{id}->action 函數的參數來進行頁面處理獲得數據輸出?
如何定義URL和Controller之間的映射規則?
默認路由系統。 app.UseMvcWithDefaultRoute();
{域名}/{Controller=Home}/{Action=index}/{Value?}
自定義默認路由:
使用中間件:
app.UseMvc(routes=>routes.MapRoute(name:"default",template:"{controller=Home}/{Action=index}/{Value?}"))
==app.UseMvcWithDefaultRoute();
在ASP.Net Mvc有兩種路由模式
1.傳統路由(使用路由表) Concentional routing
2.特性注釋路由 Attribute routing?
Conventional Routing?
1.URl 被分解為Controller和action兩個部分?
2.使用路由表(routing table )來設置路由規則
例如:rotes.MapRoute(name:"default",templete:"{controller=Home}/{action=index}")
Atrtibute Routing:
1.使用簡單,不再需要路由表,只要controller和action代碼中直接使用
attribute來定義路由
Example:
[Route("[controller]/[action]")]
public class HomeController:Controller
{
//get :/<controller>/
public Stirng Index()
{
return "Hello From Home";
}
}
路由中間件:幫助我們解析URL,并映射給相對應得controller和action
?//
Attribute Routing :
可以幫助我們用AOP 面向面向切面得形式可以為每一個controller甚至action
單獨定義路由。Route("[controller]/[index]")
//
app.UseMvc(傳入lamda表達式來設定自定義路由)
什么是MVC:
1.軟件工程的架構方式
2.模型,視圖和控制器
3.分離業務操作,數據顯示,邏輯控制?
視圖:用戶交互界面 展示輸入,不操作數據,接受用戶數據
模型:MVC架構得核心,表示業務模型或者數據模型,程序的業務邏輯。
如:算法的實現,數據的管理,輸出對象的封裝等等
控制器:接受用戶得輸入,并調用模型和視圖去完成用戶的請求處理
本身不處理數據
三層架構:
UI層 BLL 業務邏輯層,處理核心業務以及數據封裝
DAL 表示數據訪問
三層架構面向結構編程,而三個層級之間的完全解耦,完全可替代
MVC得每個部分都是緊密結合的,它的核心并不是解耦,而是重用。
MVC的優點:
耦合性低
可復用性高
可維護性高
缺點:
定義不明確,學習曲線陡
結構復雜
數據流動效率低
----控制器的工作原理--
Action 函數:
處理請求
返回特殊樂星IActionResult
默認http請求方式為Get
可接受url中的參數
Action:Post
如何處理POST請求:
[HttpPost]
public ActionResult Edit(int id,IFormCollection collection)
{
try
{
? return RedirectionToAction(nameof(Index));??
}
catch
{
? return View();
}
}
什么是模型?
1.其實是一個類 映射數據庫,對象化數據。
2.獲取數據,更新數據,傳遞數據,保存數據等
3.處理業務邏輯,被視為BLL層
4.View Model與視圖數據綁定
不過,定義不明確,經驗很重要
可以是一個簡單的poco類 也可以是一復雜的充血性領域模型(rich Domain Model)
模型的業務邏輯:
函數方法等,不會映射數據庫,但會對數據進行更新。
舉例:
模型屬性:
public int Id{get;set;}
public string FirstName{get;set;}
public string UserName{get;set;}
public string ShortDescription{get;set;}
public decimal Phone{get;set;}
public string Email{get;set;}
public bool IsEmailConfirm{get;set;}
業務邏輯:
public void ConfirmEmail(string token)
{
if(isTokenValid)
{
this.IsEmailConfirm=true;//save to database
}
}
數據持久化模式:repository倉庫模式
對象化數據,不用管數據是怎么保存的
使用倉庫接口
舉例:
public interface INoodleRespositoy
{
? IEnumerable<Noodle> GetNoodles();
?Noodle GetNoodleById(int ID);
}
使用模型和數據倉庫的好處:
1.業務邏輯與數據模型緊密耦合,減少分層,降低代碼數量
2.完全剝離數據庫業務,程序員可以更專注于實現業務邏輯
3.面向對象編程,數據轉化為對象,更符合程序員的思考方式
視圖模型 ViewModel
ViewModel中的數據會與UI界面雙向綁定,一旦ViewModel
中的數據發生任何變化,結果都會立即反應在UI界面中。
特點:
1.依然是模型
2.用視圖模型替代數據上下文
3.poco(plain old class object),不包含方法的簡單類
?MVVM:model-view-view Model
為什么要使用ViewModel
1.減少頁面邏輯的復雜度
2.處理頁面的數據邏輯,管理頁面狀態
3.各種組件也可以相對解耦,既有利于團隊協作與日后維護
管理前端框架工具:
項目名稱(右擊)-》client-site Library-》libman
Asp.Net Core Identity?
1.Password Hashing?
2.Tokenization
3.TwoFacts Authentication
4.Authentication
5.Authorization
6.External Login 第三方驗證?
查看全部 -
app.UseMvc(routes =>?
{?
routes.MapRoute(
? ? ? ? ? ? ? ? name: "defalut",
? ? ? ? ? ? ?template:"{controller=Home}/{action=Index}/{id?}"
==app.UseMvcWithDefaultRoute();
}
使用中間件或者映射默認路由都可以
查看全部 -
。net core數據驗證
查看全部 -
admin管理員路由限制
查看全部 -
阿房宮遺址位于廣東省東南部沿海的城市之一?查看全部
-
wwwroot文件夾存放前端靜態文件;如js、css、圖片、視頻
content,images,lib
2.iis只能運行于windows平臺
Propertier-.json文件中配置端口信息
查看全部 -
1-2 asp.net core?
1.歷史:2016asp.net core 1.0,2018asp.net core 2.2
2.跨平臺:windows,macos,linux,unix
3.性能:輕量級,適合微服務架構,容器化,不向后兼容(1.0升2.0要重構,.net framwork換成.net core要重寫)
4.c#:.net framework的旗艦語言,語言集成查詢linq,異步構造await async,支持函數式語
查看全部 -
1-1知識點
基礎知識:.net core / 環境設置
asp mvc :mvc架構 / 路由系統 / razor
entity framework:倉庫模式 / code first / 映射數據 / crud
身份認證:認證 / 授權
查看全部 -
IEnumerable<T>?是?System.Collections.Generic?命名空間中的集合的基接口,如?List<T>、Dictionary<TKey,TValue>和?Stack<T>?以及其他泛型集合,如?ObservableCollection<T>?和?ConcurrentStack<T>。?可以通過使用?
foreach
?語句來枚舉實現?IEnumerable<T>?的集合。查看全部 -
ps:oop面向對象編程
aop面向切面編程 可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態統一添加功能的一種技術。
面向切面編程是面向對象編程的一個強大的補充
通過切面可以把分散在應用各處的行為放入可重用的模塊中
通過注解顯示的聲明在什么地方應用該行為
有效減少冗余代碼,讓我們的類關注自身的主要功能
動態代理模式和靜態代理模式
通過使用@Aspect注解和簡單的配置,可以很簡單的在Spring中裝配advice和pointcut
作者:Jason2Young
鏈接:https://www.jianshu.com/p/be6cb39dbeb7
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。查看全部 -
公用導航欄設置
查看全部 -
ViewModel組合數據
查看全部 -
數據倉庫逐個注入
查看全部 -
依賴注入
倉庫注冊services.AddTransient<INoodleRepository,MockNoodleResposity>();//每次發起請求后創建一個全新的倉庫,請求結束后自動注銷這個倉庫
services.AddSingleton;//系統啟動有且僅創建一個倉庫,系統每次請求使用同一個倉庫實例
services.AddScoped;//將一系列請求或操作整合在一個事務里,這個事務有且僅創建一個實例,事務結束后會自動注銷這個實例
查看全部
舉報