天天看點

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

本篇文章稍微偏原理且底層,有一定難度和且比較晦澀,文章粒度稍微粗些,更細粒度的,會在後續的文章中,結合具體的Demo執行個體分析。感興趣的朋友,可以先收藏。

.NET架構概述

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

1.作用:提供了基于.NET架構開發的基礎平台和模闆,為.NET開發的基架;

2.基本構成:可支援語言,CLS,模闆架構,基本模闆,基本操作,基本類庫,公共需要運作時,CTS和CLS,OS等;

(1)可支援語言:.NET架構可支援vb,c++,c#,F#,js等語言開發;

(2)CLS:通用語言規範,使多種語言開發成為了可能,可參考:https://docs.microsoft.com/en-us/dotnet/standard/language-independence-and-language-independent-components

(3)模闆架構:B/S模式開發,C/S模式開發,App開發,接口開發

            B/S:WebForm和MVC,.NET Core;主要是PC運用程式;

            C/S:Winform和WPF,主要是桌面運用程式;

            APP:目前主流的一種開發模式;

(4)基本操作:對DB操作(ADO.NET和EF),I/O操作等;

(5)BCL:基本類庫,供調用;

(6)CLR:公共語言運作時,是IL形成EXE必不可少的環節,也是JIT實作一次編譯,多次且跨平台運作的必不可少的環境,在.NET架構中扮演着及其重要的角色,且技術比較難且晦澀;

(7)CTS 和 CLS:CTS,即通用類型系統,實作COM元件相容等;

(8)OS:屏蔽底層實作,高度抽象,OS類型:Win XP(基本淘汰,微軟官方都不維護了)、Win 7 ,Win 8,Win 10;

3..NET兩大産品:Dynamic CRM 和SharePoint;

ADO.NET

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

1.作用:程式與資料互動的方式之一。.NET架構中,ADO.NET抽象化了程式與Database的互動,在進行基本的CRUD操作時,隻需調用具體的類,方法即可;

2.基本構成:主要由五大對象構成。Conneciton對象,DataAdapter對象,Command對象,DataSet對象,DataReader對象構成;

3.五大對象的基本概述:

   (1)Connection對象:連接配接資料庫的通道,主要方法為Open()和Close(),前者負責打開資料庫入口,後者負責關閉資料庫入口;

   (2)Command對象負責對DB的具體操作,CRUD就是通過它實作的;

   (3)DataAdapter對象負責将DB與DataSet适配,使基本的CRUD得以實作;

   (4)DataSet對象扮演虛拟記憶體的角色,也扮演緩存的角色,是實作Application與DB資料互動的必要環節之一;

   (5)DataReader主要解決讀取資料的問題,性能比較高;

4.建議:具體詳細資訊,大家可以參照MSDN,其概述比較詳細;

EF架構

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

1.作用:為程式員提供更加友善快捷的資料操作,對于初級程式員來說,能很快的上手,極其友善(當然,有經驗的EF開發人員可能經曆過EF的各種坑);

2.三種模式:DB First,Code First,Model First;

3.基本構成:操作工具(Linq To Entity,Entity SQL),ObjectServices,Entity Client,EDM,ADO.NET  Data Provider;

   (1)Linq To  Entity 和Entity SQL:提供了對資料操作的兩種不同方式;

   (2)ObjectServices:DB通路入口,實作實體與資料的轉換;

  (3)Entity Client:負責将Linq To Entity和Entity SQL轉化為标準的SQL;

   (4)EDM:實作概念模型向存儲模型的轉換;

   (5)ADO.NET Data Provider:實作對DB的互動;

程式編譯過程

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

1.程式編譯過程大緻可概述

2.在控制台中操作

Code:

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

 View Code

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

下面我們将AddSum()方法編譯成dll檔案

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

通過反編譯工具.NET Reflector檢視IL代碼

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

 下面我們用NotePad++編譯源代碼,用VS的csc.exe編譯器編譯

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

提示:當在Dos指令中中提示:‘csc’不是内部或外部指令,也不是可運作的程式或批處理檔案。

請将.net csc.exe 路徑添加到系統環境變量中,我的csc.exe路徑為

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

列舉幾個比較常用的csc.exe指令

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

關于csc.exe的指令,大家可以參照MSDN: https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/compiler-options/command-line-building-with-csc-exe 3.編譯過程大緻可分為兩個階段: 第一階段:.cs代碼=>IL代碼,這個編譯時間比較慢 第二階段:IL+dll通過CRL形成目标代碼,這個過程比較快 大家想想:為什麼第一階段比較慢,第二階段比較快呢?将在下面的IL中講到。

CLR

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

1.作用:記憶體管理,異常管理,多線程管理,GC管理等。CLR為.NET中極其重要的組成部分,也是.NET架構中比較難且晦澀技術之一。

2.可以把CLR看成是Java虛拟機; 3.JIT即時編譯,主要由三部分構成(主編譯器,PreJit和EconoJit) 4.JIT+CLR實作一次編譯,多次運作且可跨平台; 5.CLR中比較重要的一個環節,就是管道(Pipes)(HttpModule和HttpHandler)

MSIL

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

1.IL是.cs代碼經過VS編譯器csc.exe編譯而成的;

2.IL比較接近機器代碼但非機器代碼(這個特點使其IL=》.exe過程比較快); 3.IL代碼是指令無關的; 4.可以通過反彙編工具檢視IL代碼;

 基于.NET Framework架構的B/S程式運作解析

總體流程概述

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

 1.IIS在處理請求時,将資源分為兩大類型:靜态資源和動态資源      靜态資源:IMG,JS,CSS,HTML等;     動态檔案:ASP,ASP.NET,.aspx,..ashx,asax等;  2.IIS處理靜态資源:     當IIS收到來自浏覽器的請求,識别為靜态資源時,IIS直接處理,将處理結果以HTML形式傳回給浏覽器;  3.IIS如何處理動态資源?    當IIS收到來自浏覽器的請求,識别為動态資源時,此時IIS不能處理,轉交給ISAPI Extensions(ISAPI 擴充程式)擴充程式,該擴充程式根據請求資源擴充名,尋找響應的程式處理,如為.asp檔案,則asp_isapi處理 ,若為.aspx,則aspnet_isapi處理,  4.IIS如何處理WebForm和MVC?   當IIS收到來自浏覽器的請求,識别為動态資源時,此時IIS不能處理,轉交給ISAPI Extensions處理,此時ASP.NET MVC HTTP處理程式識别請求資源是否為MVC,若是,則交給MVC路由,按照處理MVC方式處理,否則 ,按照WebForm流程處理; 5.CLR裡面的管道(Pipes)是怎樣的呢?    管道的本質是HttpModule和HttpHandler(一般處理程式.ashx);

CLR和Pipe

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

TCP/IP模型

.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構
.net mvc actionresult 傳回字元串_【ASP.NET MVC系列】淺談ASP.NET架構

End

繼續閱讀