<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【ASP.NET MVC系列】淺談ASP.NET框架

          共 3231字,需瀏覽 7分鐘

           ·

          2020-11-19 17:57

          本篇文章稍微偏原理且底層,有一定難度和且比較晦澀,文章粒度稍微粗些,更細(xì)粒度的,會在后續(xù)的文章中,結(jié)合具體的Demo實(shí)例分析。感興趣的朋友,可以先收藏。

          .NET框架概述

          1.作用:提供了基于.NET框架開發(fā)的基礎(chǔ)平臺和模板,為.NET開發(fā)的基架;

          2.基本構(gòu)成:可支持語言,CLS,模板框架,基本模板,基本操作,基本類庫,公共需要運(yùn)行時,CTS和CLS,OS等;

          (1)可支持語言:.NET框架可支持vb,c++,c#,F(xiàn)#,js等語言開發(fā);

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

          (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)基本操作:對DB操作(ADO.NET和EF),I/O操作等;

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

          (6)CLR:公共語言運(yùn)行時,是IL形成EXE必不可少的環(huán)節(jié),也是JIT實(shí)現(xiàn)一次編譯,多次且跨平臺運(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操作時,只需調(diào)用具體的類,方法即可;

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

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

          ? ?(1)Connection對象:連接數(shù)據(jù)庫的通道,主要方法為Open()和Close(),前者負(fù)責(zé)打開數(shù)據(jù)庫入口,后者負(fù)責(zé)關(guān)閉數(shù)據(jù)庫入口;

          ? ?(2)Command對象負(fù)責(zé)對DB的具體操作,CRUD就是通過它實(shí)現(xiàn)的;

          ? ?(3)DataAdapter對象負(fù)責(zé)將DB與DataSet適配,使基本的CRUD得以實(shí)現(xiàn);

          ? ?(4)DataSet對象扮演虛擬內(nèi)存的角色,也扮演緩存的角色,是實(shí)現(xiàn)Application與DB數(shù)據(jù)交互的必要環(huán)節(jié)之一;

          ? ?(5)DataReader主要解決讀取數(shù)據(jù)的問題,性能比較高;

          4.建議:具體詳細(xì)信息,大家可以參照MSDN,其概述比較詳細(xì);


          EF框架

          1.作用:為程序員提供更加方便快捷的數(shù)據(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:提供了對數(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)概念模型向存儲模型的轉(zhuǎn)換;

          ? ?(5)ADO.NET Data Provider:實(shí)現(xiàn)對DB的交互;

          程序編譯過程

          1.程序編譯過程大致可概述

          2.在控制臺中操作

          Code:

          ?View Code

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

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

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

          提示:當(dāng)在Dos命令中中提示:‘csc’不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。

          請將.net csc.exe 路徑添加到系統(tǒng)環(huán)境變量中,我的csc.exe路徑為

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

          列舉幾個比較常用的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.編譯過程大致可分為兩個階段:
          第一階段:.cs代碼=>IL代碼,這個編譯時間比較慢
          第二階段:IL+dll通過CRL形成目標(biāo)代碼,這個過程比較快
          大家想想:為什么第一階段比較慢,第二階段比較快呢?將在下面的IL中講到。

          CLR

          1.作用:內(nèi)存管理,異常管理,多線程管理,GC管理等。CLR為.NET中極其重要的組成部分,也是.NET框架中比較難且晦澀技術(shù)之一。

          2.可以把CLR看成是Java虛擬機(jī);
          3.JIT即時編譯,主要由三部分構(gòu)成(主編譯器,PreJit和EconoJit)
          4.JIT+CLR實(shí)現(xiàn)一次編譯,多次運(yùn)行且可跨平臺;
          5.CLR中比較重要的一個環(huán)節(jié),就是管道(Pipes)(HttpModule和HttpHandler)

          MSIL

          1.IL是.cs代碼經(jīng)過VS編譯器csc.exe編譯而成的;

          2.IL比較接近機(jī)器代碼但非機(jī)器代碼(這個特點(diǎn)使其IL=》.exe過程比較快);
          3.IL代碼是指令無關(guān)的;
          4.可以通過反匯編工具查看IL代碼;


          ?基于.NET Framework框架的B/S程序運(yùn)行解析

          總體流程概述

          ?

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

          CLR和Pipe

          TCP/IP模型



          End


          瀏覽 35
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本免费网站 | 亚洲欧美三级在线 | 国产一卡在线 | 一起色综合 | AV高清无码|