淺談ASP.NET框架

一 .NET框架概述

1.作用:提供了基于.NET框架開發(fā)的基礎(chǔ)平臺(tái)和模板,為.NET開發(fā)的基架;
2.基本構(gòu)成:可支持語言,CLS,模板框架,基本模板,基本操作,基本類庫,公共需要運(yùn)行時(shí),CTS和CLS,OS等;
? ? (1)可支持語言:.NET框架可支持vb,c++,c#,F(xiàn)#,js等語言開發(fā);
? ? (2)CLS:通用語言規(guī)范,使多種語言開發(fā)成為了可能。
? ? (3)模板框架:B/S模式開發(fā),C/S模式開發(fā),App開發(fā),接口開發(fā)
? ? ? ? B/S:WebForm和MVC,.NET Core;主要是PC運(yùn)用程序;
? ? ? ? C/S:Winform和WPF,主要是桌面運(yùn)用程序;
? ? ? ? APP:當(dāng)前主流的一種開發(fā)模式;
? ? (4)基本操作:對(duì)DB操作(ADO.NET和EF),I/O操作等;
? ? (5)BCL:基本類庫,供調(diào)用;
? ? (6)CLR:公共語言運(yùn)行時(shí),是IL形成EXE必不可少的環(huán)節(jié),也是JIT實(shí)現(xiàn)一次編譯,多次且跨平臺(tái)運(yùn)行的必不可少的環(huán)境,在.NET框架中扮演著及其重要的角色,且技術(shù)比較難且晦澀;
? ? (7)CTS 和 CLS:CTS,即通用類型系統(tǒng),實(shí)現(xiàn)COM組件兼容等;
? ? (8)OS:屏蔽底層實(shí)現(xiàn),高度抽象,OS類型:Win XP(基本淘汰,微軟官方都不維護(hù)了)、Win 7 ,Win 8,Win 10;
3..NET兩大產(chǎn)品:Dynamic CRM 和SharePoint;
?(一)ADO.NET

1.作用:程序與數(shù)據(jù)交互的方式之一。.NET框架中,ADO.NET抽象化了程序與Database的交互,在進(jìn)行基本的CRUD操作時(shí),只需調(diào)用具體的類,方法即可;
2.基本構(gòu)成:主要由五大對(duì)象構(gòu)成。Conneciton對(duì)象,DataAdapter對(duì)象,Command對(duì)象,DataSet對(duì)象,DataReader對(duì)象構(gòu)成;
3.五大對(duì)象的基本概述:
? ?(1)Connection對(duì)象:連接數(shù)據(jù)庫的通道,主要方法為Open()和Close(),前者負(fù)責(zé)打開數(shù)據(jù)庫入口,后者負(fù)責(zé)關(guān)閉數(shù)據(jù)庫入口;
? ?(2)Command對(duì)象負(fù)責(zé)對(duì)DB的具體操作,CRUD就是通過它實(shí)現(xiàn)的;
? ?(3)DataAdapter對(duì)象負(fù)責(zé)將DB與DataSet適配,使基本的CRUD得以實(shí)現(xiàn);
? ?(4)DataSet對(duì)象扮演虛擬內(nèi)存的角色,也扮演緩存的角色,是實(shí)現(xiàn)Application與DB數(shù)據(jù)交互的必要環(huán)節(jié)之一;
? ?(5)DataReader主要解決讀取數(shù)據(jù)的問題,性能比較高;
4.建議:具體詳細(xì)信息,大家可以參照MSDN,其概述比較詳細(xì);
(二)EF框架

1.作用:為程序員提供更加方便快捷的數(shù)據(jù)操作,對(duì)于初級(jí)程序員來說,能很快的上手,極其方便(當(dāng)然,有經(jīng)驗(yàn)的EF開發(fā)人員可能經(jīng)歷過EF的各種坑);
2.三種模式:DB First,Code First,Model First;
3.基本構(gòu)成:操作工具(Linq To Entity,Entity SQL),ObjectServices,Entity Client,EDM,ADO.NET ?Data Provider;
? ?(1)Linq To ?Entity 和Entity SQL:提供了對(duì)數(shù)據(jù)操作的兩種不同方式;
? ?(2)ObjectServices:DB訪問入口,實(shí)現(xiàn)實(shí)體與數(shù)據(jù)的轉(zhuǎn)換;
? ?(3)Entity Client:負(fù)責(zé)將Linq To Entity和Entity SQL轉(zhuǎn)化為標(biāo)準(zhǔn)的SQL;
? ?(4)EDM:實(shí)現(xiàn)概念模型向存儲(chǔ)模型的轉(zhuǎn)換;
? ?(5)ADO.NET Data Provider:實(shí)現(xiàn)對(duì)DB的交互;
(三)程序編譯過程
1.程序編譯過程大致可概述

2.在控制臺(tái)中操作
Code:

下面我們將AddSum()方法編譯成dll文件

通過反編譯工具.NET Reflector查看IL代碼

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

提示:當(dāng)在Dos命令中中提示:‘csc’不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。
請(qǐng)將.net csc.exe 路徑添加到系統(tǒng)環(huán)境變量中,我的csc.exe路徑為
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
不會(huì)的,可以參照?csc.exe Path路徑配置
或者參照我的另外一篇文章【java系列】java開發(fā)環(huán)境搭建
?

列舉幾個(gè)比較常用的csc.exe命令

關(guān)于csc.exe的命令,大家可以參照MSDN:
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/compiler-options/command-line-building-with-csc-exe
3.編譯過程大致可分為兩個(gè)階段:
第一階段:.cs代碼=>IL代碼,這個(gè)編譯時(shí)間比較慢
第二階段:IL+dll通過CRL形成目標(biāo)代碼,這個(gè)過程比較快
大家想想:為什么第一階段比較慢,第二階段比較快呢?將在下面的IL中講到
(四)CLR
?

1.作用:內(nèi)存管理,異常管理,多線程管理,GC管理等。CLR為.NET中極其重要的組成部分,也是.NET框架中比較難且晦澀技術(shù)之一。
2.可以把CLR看成是Java虛擬機(jī);
3.JIT即時(shí)編譯,主要由三部分構(gòu)成(主編譯器,PreJit和EconoJit)
4.JIT+CLR實(shí)現(xiàn)一次編譯,多次運(yùn)行且可跨平臺(tái);
5.CLR中比較重要的一個(gè)環(huán)節(jié),就是管道(Pipes)(HttpModule和HttpHandler)
(五)MSIL
?

1.IL是.cs代碼經(jīng)過VS編譯器csc.exe編譯而成的;
2.IL比較接近機(jī)器代碼但非機(jī)器代碼(這個(gè)特點(diǎn)使其IL=》.exe過程比較快);
3.IL代碼是指令無關(guān)的;
4.可以通過反匯編工具查看IL代碼;
二? 基于.NET Framework框架的B/S程序運(yùn)行解析
(一)總體流程概述

1.IIS在處理請(qǐng)求時(shí),將資源分為兩大類型:靜態(tài)資源和動(dòng)態(tài)資源
? ? ?靜態(tài)資源:IMG,JS,CSS,HTML等;
? ? ?動(dòng)態(tài)文件:ASP,ASP.NET,.aspx,..ashx,asax等;
?2.IIS處理靜態(tài)資源:
? ? 當(dāng)IIS收到來自瀏覽器的請(qǐng)求,識(shí)別為靜態(tài)資源時(shí),IIS直接處理,將處理結(jié)果以HTML形式返回給瀏覽器;
?3.IIS如何處理動(dòng)態(tài)資源?
? ?當(dāng)IIS收到來自瀏覽器的請(qǐng)求,識(shí)別為動(dòng)態(tài)資源時(shí),此時(shí)IIS不能處理,轉(zhuǎn)交給 ? ? ISAPI Extensions(ISAPI 擴(kuò)展程序)擴(kuò)展程序,該擴(kuò)展程序根據(jù)請(qǐng)求資源擴(kuò)展名,尋找響應(yīng)的程序處理,如為.asp文件,則asp_isapi處理,若為.aspx,則aspnet_isapi處理,
?4.IIS如何處理WebForm和MVC?
??當(dāng)IIS收到來自瀏覽器的請(qǐng)求,識(shí)別為動(dòng)態(tài)資源時(shí),此時(shí)IIS不能處理,轉(zhuǎn)交給ISAPI Extensions處理,此時(shí)ASP.NET MVC HTTP處理程序識(shí)別請(qǐng)求資源是否為MVC,若是,則交給MVC路由,按照處理MVC方式處理,否則按照WebForm流程處理;
5.CLR里面的管道(Pipes)是怎樣的呢?
? ?管道的本質(zhì)是HttpModule和HttpHandler(一般處理程序.ashx);
(二)CLR和Pipe

(三)TCP/IP模型

?1.這個(gè)結(jié)構(gòu)為當(dāng)前比較標(biāo)準(zhǔn)的TCP/IP五層模型,在五層模型成為通用規(guī)范前,有七層模型和四層模型兩大種類;
?2.關(guān)于這五層,謝希仁編寫的《計(jì)算機(jī)網(wǎng)絡(luò)》講得比較詳細(xì)且透徹,感興起的朋友可以去看看;
?3.為什么要提到TCP/IP呢?很簡(jiǎn)單,我們?cè)跒g覽器輸入:http://www.google.com.hk/,發(fā)生了過程中,TCP/IP就不可或缺;
?4.在這里不多講,會(huì)在后續(xù)文章WebApi和HTTP協(xié)議中詳細(xì)講解;
原文地址:https://www.cnblogs.com/wangjiming/p/8201129.html