真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎樣理解ASP.NET的設(shè)計(jì)思想

這篇文章給大家介紹怎樣理解ASP.NET的設(shè)計(jì)思想,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)成立10多年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶(hù)資源,形成了良好的口碑。為客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、主機(jī)域名、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶(hù)體驗(yàn)好、性?xún)r(jià)比高、打開(kāi)快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過(guò)對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶(hù)提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。

自從有了html與http,就有了瀏覽器與Web服務(wù)器,并有了Web應(yīng)用,最初的交互模式是這樣的:

怎樣理解ASP.NET的設(shè)計(jì)思想

該模式很好地運(yùn)行了很多年。然而,隨著計(jì)算機(jī)應(yīng)用的發(fā)展,人們?cè)絹?lái)越不滿(mǎn)足于只有靜態(tài)內(nèi)容的頁(yè)面,而由某種機(jī)制動(dòng)態(tài)產(chǎn)生html等代碼的需求越來(lái)越迫切,于是,很多技術(shù)就應(yīng)運(yùn)而生,ASP.NET就是這樣一種技術(shù)。從本質(zhì)上講,ASP.NET就是一種服務(wù)器端動(dòng)態(tài)產(chǎn)生html、css、javascript等瀏覽器認(rèn)識(shí)的代碼的技術(shù)。ASP.NET的交互模式如下:

怎樣理解ASP.NET的設(shè)計(jì)思想

由該圖可知,ASP.NET必須解決兩大問(wèn)題,一是如何與Web服務(wù)器(一般就是指IIS)進(jìn)行交互,二是如何根據(jù)不同請(qǐng)求產(chǎn)生不同的html等代碼。

***個(gè)問(wèn)題,根據(jù)IIS版本(5.*,6.0,7.0)的不同,ASP.NET具有不同的進(jìn)程模式與不同的交互模式,該問(wèn)題不是本篇要講述的。一般來(lái)說(shuō),大家不必關(guān)心該問(wèn)題,而且要了解該問(wèn)題,又必須清楚IIS各個(gè)版本的模型,而各個(gè)版本又各有各的不同,因此,我基本不準(zhǔn)備講述這個(gè)問(wèn)題,大家有興趣的話(huà),可以自行搜索相關(guān)資料。

我們來(lái)討論第二個(gè)問(wèn)題,這里首先要說(shuō)明的是,因?yàn)镮IS7.0進(jìn)程模式的變化比較大,我也沒(méi)去了解IIS7.0的模型,因此,以下講述及以后講述將只針對(duì)IIS5.*與IIS6.0。我們有理由認(rèn)為,針對(duì)IIS5.*與IIS6.0的講述一般同樣適用于IIS7.0。

先且按下該問(wèn)題不表,我們來(lái)看一段請(qǐng)求玉帝把大象放到冰箱里的代碼(為什么不是上帝?因?yàn)槲抑腥A不歸上帝管),請(qǐng)大家先跟著我的思路來(lái),別急,別急。

 System;
namespace ConsoleApplication3
11_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_45_2811_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_45_2811_Closed_Text').style.display='inline';" src="/files/uploadimg/20090423/1047402.gif" align=top>[object Object] Program
[object Object][object Object]     void Main(string[] args)
[object Object][object Object]         Emperor();
[object Object]            while (true)
[object Object][object Object]             elephantName = Console.ReadLine();
[object Object]                Console.WriteLine("輸入大象的體重:");
[object Object]                int elephantWeight = int.Parse(Console.ReadLine());
[object Object]                Console.WriteLine("輸入冰箱的名字:");
[object Object]                string refrigeratorName = Console.ReadLine();
[object Object]
[object Object]                Elephant elephant = new Elephant()
[object Object][object Object]                ;
[object Object]                Refrigerator refrigerator = new Refrigerator()
[object Object][object Object]                ;
[object Object]
[object Object]                Context context = new Context()
[object Object][object Object]                ;
[object Object]
[object Object]                emperor.ProcessRequest(context);
[object Object]
[object Object]                Console.WriteLine("是否要玉帝繼續(xù)把大象關(guān)進(jìn)冰箱里?");
[object Object]                string answer = Console.ReadLine();
if (answer == "n")
break;
}
[object Object]        }
}
class Emperor
 void ProcessRequest(Context context)
[object Object][object Object]        ;
[object Object]            Console.WriteLine(string.Format("玉帝打開(kāi)了 {0} 的冰箱門(mén)。", refrigerator.Name));
[object Object]
[object Object]            //第二步,把大象放進(jìn)去
[object Object]            refrigerator.Content = elephant;
[object Object]            Console.WriteLine(string.Format("玉帝把大象 {0} 放到冰箱 {1} 里了。", elephant.Name, refrigerator.Name));
[object Object]
[object Object]            //第三步,關(guān)上冰箱門(mén)
[object Object]            refrigerator.IsOpen = false;
[object Object]            Console.WriteLine(string.Format("玉帝關(guān)上了 {0} 的冰箱門(mén)。", refrigerator.Name));
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Elephant
[object Object][object Object]     string Name ; set; }
[object Object][object Object]        public int Weight; set; }
[object Object]    }
[object Object]
[object Object]    class Refrigerator
[object Object][object Object]     string Name ; set; }
[object Object][object Object]        public bool IsOpen ; set; }
[object Object]
[object Object]        private object m_Content;
[object Object]        public object Content
[object Object][object Object]          this.m_Content; }
[object Object]            set
[object Object][object Object]             (!this.IsOpen)
[object Object]                    throw new InvalidOperationException("冰箱門(mén)未打開(kāi),無(wú)法放進(jìn)東西。");
[object Object]                if (this.m_Content != null)
[object Object]                    throw new InvalidOperationException("冰箱內(nèi)有東西,無(wú)法放進(jìn)新的東西。");
[object Object]
[object Object]                this.m_Content = value;
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Context
[object Object][object Object]     Elephant Elephant ; set; }
[object Object][object Object]        public Refrigerator Refrigerator ; set; }
[object Object]    }
[object Object]}

請(qǐng)大家先認(rèn)真讀懂該代碼,該代碼不會(huì)有問(wèn)題吧,如果有問(wèn)題,那么還請(qǐng)你一定先讀懂該代碼再往下看。

后來(lái),玉帝累了,他想啊,我堂堂玉帝,居然親自干這種沒(méi)含量的活,但是顧客是玉帝的玉帝,又不能不干。于是,玉帝找了兩個(gè)手下(把門(mén)大神、神象星宿)來(lái)幫他干活。

_Text_112146').style.display='none'; document.getElementById('Code_Open_Image_112146').style.display='inline'; document.getElementById('Code_Open_Text_112146').style.display='inline';" height=16 src="/files/uploadimg/20090423/1047403.gif" width=11 align=top>[object Object] System;
using System.Collections.Generic;
namespace ConsoleApplication3
[object Object][object Object] Program
[object Object][object Object]     void Main(string[] args)
[object Object][object Object]         Emperor();
[object Object]            emperor.Init();
[object Object]
[object Object]            while (true)
[object Object][object Object]             elephantName = Console.ReadLine();
[object Object]                Console.WriteLine("輸入大象的體重:");
[object Object]                int elephantWeight = int.Parse(Console.ReadLine());
[object Object]                Console.WriteLine("輸入冰箱的名字:");
[object Object]                string refrigeratorName = Console.ReadLine();
[object Object]
[object Object]                Elephant elephant = new Elephant()
[object Object][object Object]                ;
[object Object]                Refrigerator refrigerator = new Refrigerator()
[object Object][object Object]                ;
[object Object]
[object Object]                Context context = new Context()
[object Object][object Object]                ;
[object Object]
[object Object]                emperor.ProcessRequest(context);
[object Object]
[object Object]                Console.WriteLine("是否要玉帝繼續(xù)把大象關(guān)進(jìn)冰箱里?");
[object Object]                string answer = Console.ReadLine();
[object Object]                if (answer == "n")
[object Object]                    break;
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Emperor
[object Object][object Object]     IList m_Modules;
[object Object][object Object]        public Context Context ; set; }
[object Object]
[object Object]        public void Init()
[object Object][object Object]         List();
[object Object]            m_Modules.Add(new OpenCloseRefrigeratorDoorModule());
[object Object]            m_Modules.Add(new PutElephantToRefrigeratorModule());
[object Object]
[object Object]            foreach (IEmperorModule module in this.m_Modules)
[object Object][object Object]            );
[object Object]            }
[object Object]        }
[object Object]
[object Object]        public void ProcessRequest(Context context)
[object Object][object Object]        .Context = context;
[object Object]
[object Object]            this.OnOpenRefrigeratorDoor();
[object Object]            this.OnPutElephantToRefrigerator();
[object Object]            this.OnCloseRefrigeratorDoor();
[object Object]        }
[object Object]
[object Object]        public event EventHandler OpenRefrigeratorDoor;
[object Object]        public event EventHandler PutElephantToRefrigerator;
[object Object]        public event EventHandler CloseRefrigeratorDoor;
[object Object]
[object Object]        protected virtual void OnOpenRefrigeratorDoor()
[object Object][object Object]        .OpenRefrigeratorDoor;
[object Object]            if (handler != null)
[object Object][object Object]            , EventArgs.Empty);
[object Object]            }
[object Object]        }
[object Object]
[object Object]        protected virtual void OnPutElephantToRefrigerator()
[object Object][object Object]        .PutElephantToRefrigerator;
[object Object]            if (handler != null)
[object Object][object Object]            , EventArgs.Empty);
[object Object]            }
[object Object]        }
[object Object]
[object Object]        protected virtual void OnCloseRefrigeratorDoor()
[object Object][object Object]        .CloseRefrigeratorDoor;
[object Object]            if (handler != null)
[object Object][object Object]            , EventArgs.Empty);
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Elephant
[object Object][object Object]     string Name ; set; }
[object Object][object Object]        public int Weight; set; }
[object Object]    }
[object Object]
[object Object]    class Refrigerator
[object Object][object Object]     string Name ; set; }
[object Object][object Object]        public bool IsOpen ; set; }
[object Object]
[object Object]        private object m_Content;
[object Object]        public object Content
[object Object][object Object]          this.m_Content; }
[object Object]            set
[object Object][object Object]             (!this.IsOpen)
[object Object]                    throw new InvalidOperationException("冰箱門(mén)未打開(kāi),無(wú)法放進(jìn)東西。");
[object Object]                if (this.m_Content != null)
[object Object]                    throw new InvalidOperationException("冰箱內(nèi)有東西,無(wú)法放進(jìn)新的東西。");
[object Object]
[object Object]                this.m_Content = value;
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Context
[object Object][object Object]     Elephant Elephant ; set; }
[object Object][object Object]        public Refrigerator Refrigerator ; set; }
[object Object]    }
[object Object]
[object Object]    interface IEmperorModule
[object Object][object Object]     Init(Emperor emperor);
[object Object]    }
[object Object]
[object Object]    class OpenCloseRefrigeratorDoorModule : IEmperorModule
[object Object][object Object]     void Init(Emperor emperor)
[object Object][object Object]         EventHandler(this.OpenDoor);
[object Object]            emperor.CloseRefrigeratorDoor += new EventHandler(this.CloseDoor);
[object Object]        }
[object Object]        #endregion
[object Object]
[object Object]        private void OpenDoor(object sender, EventArgs e)
[object Object][object Object]        ;
[object Object]            Console.WriteLine(string.Format("玉帝的把門(mén)大神打開(kāi)了 {0} 的冰箱門(mén)。", refrigerator.Name));
[object Object]        }
[object Object]
[object Object]        private void CloseDoor(object sender, EventArgs e)
[object Object][object Object]        ;
[object Object]            Console.WriteLine(string.Format("玉帝的把門(mén)大神關(guān)上了 {0} 的冰箱門(mén)。", refrigerator.Name));
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class PutElephantToRefrigeratorModule : IEmperorModule
[object Object][object Object]     void Init(Emperor emperor)
[object Object][object Object]         EventHandler(this.PutElephantToRefrigerator);
[object Object]        }
[object Object]        #endregion
[object Object]
[object Object]        private void PutElephantToRefrigerator(object sender, EventArgs e)
[object Object][object Object]        .Format("玉帝的神象星宿把大象 {0} 放到冰箱 {1} 里了。", elephant.Name, refrigerator.Name));
[object Object]        }
[object Object]    }
[object Object]}

觀測(cè)該代碼有哪些變化?玉帝增加了一個(gè)Init方法,該方法召集了那些干活的手下,并交待手下你們要干的事情(初始化)。所有手下都繼承自IEmperorModule接口,該接口有一個(gè)Init方法,以初始化該手下能干的活。玉帝的ProcessRequest方法不再親自干活了,而僅僅是在那邊喊,該開(kāi)門(mén)了,該把大象放進(jìn)去了,該關(guān)門(mén)了。

來(lái)點(diǎn)題外話(huà),上面代碼應(yīng)用了模板方法模式,或者說(shuō)是模板方法的變種。什么,不是,沒(méi)有抽象類(lèi),沒(méi)有抽象方法,沒(méi)有子類(lèi)?請(qǐng)問(wèn),模板方法一定要有抽象類(lèi)嗎?一定要有抽象方法嗎?一定要有子類(lèi)嗎?我想,模板方法的精髓,在于它規(guī)定了特定的步驟算法,而這些步驟在必要的時(shí)候可以委托給其它方法實(shí)現(xiàn)。在傳統(tǒng)的模板方法中,是委托給子類(lèi)實(shí)現(xiàn),而在我們擁有委托的情況下,難道我們不能委托給其它類(lèi)實(shí)現(xiàn)嗎?其實(shí),我想,學(xué)習(xí)設(shè)計(jì)模式,不要拘泥于形式,而要掌握其精髓,并靈活運(yùn)用。就Gof的23種設(shè)計(jì)模式來(lái)說(shuō),我覺(jué)得其精髓幾乎全部可由一句話(huà)概括。)

天有不測(cè)風(fēng)云,人有旦夕禍福,某一天,這神象星宿病了,他趕不動(dòng)超過(guò)1000斤的大象了,怎么辦?玉帝于是又召集了超級(jí)神象星宿,可但凡有點(diǎn)能耐的都有點(diǎn)脾氣,超級(jí)神象星宿表示,只有其它人趕不動(dòng)的大象他才來(lái)趕。

[object Object][object Object] System;
using System.Collections.Generic;
namespace ConsoleApplication3
[object Object][object Object] Program
[object Object][object Object]     void Main(string[] args)
[object Object][object Object]         Emperor();
[object Object]            emperor.Init();
[object Object]
[object Object]            while (true)
[object Object][object Object]             elephantName = Console.ReadLine();
[object Object]                Console.WriteLine("輸入大象的體重:");
[object Object]                int elephantWeight = int.Parse(Console.ReadLine());
[object Object]                Console.WriteLine("輸入冰箱的名字:");
[object Object]                string refrigeratorName = Console.ReadLine();
[object Object]
[object Object]                Elephant elephant = new Elephant()
[object Object][object Object]                ;
[object Object]                Refrigerator refrigerator = new Refrigerator()
[object Object][object Object]                ;
[object Object]
[object Object]                Context context = new Context()
[object Object][object Object]                ;
[object Object]
[object Object]                emperor.ProcessRequest(context);
[object Object]
[object Object]                Console.WriteLine("是否要玉帝繼續(xù)把大象關(guān)進(jìn)冰箱里?");
[object Object]                string answer = Console.ReadLine();
[object Object]                if (answer == "n")
[object Object]                    break;
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Emperor
[object Object][object Object]     IList m_Modules;
[object Object][object Object]        public Context Context ; set; }
[object Object]
[object Object]        public void Init()
[object Object][object Object]         List();
[object Object]            m_Modules.Add(new OpenCloseRefrigeratorDoorModule());
[object Object]            m_Modules.Add(new PutElephantToRefrigeratorModule());
[object Object]            m_Modules.Add(new SuperPutElephantToRefrigeratorModule());
[object Object]
[object Object]            foreach (IEmperorModule module in this.m_Modules)
[object Object][object Object]            );
[object Object]            }
[object Object]        }
[object Object]
[object Object]        public void ProcessRequest(Context context)
[object Object][object Object]        .Context = context;
[object Object]
[object Object]            this.OnOpenRefrigeratorDoor();
[object Object]            this.OnPutElephantToRefrigerator();
[object Object]            this.OnCloseRefrigeratorDoor();
[object Object]        }
[object Object]
[object Object]        public event EventHandler OpenRefrigeratorDoor;
[object Object]        public event EventHandler PutElephantToRefrigerator;
[object Object]        public event EventHandler CloseRefrigeratorDoor;
[object Object]
[object Object]        protected virtual void OnOpenRefrigeratorDoor()
[object Object][object Object]        .OpenRefrigeratorDoor;
[object Object]            if (handler != null)
[object Object][object Object]            , EventArgs.Empty);
[object Object]            }
[object Object]        }
[object Object]
[object Object]        protected virtual void OnPutElephantToRefrigerator()
[object Object][object Object]        .PutElephantToRefrigerator;
[object Object]            if (handler != null)
[object Object][object Object]            , EventArgs.Empty);
[object Object]            }
[object Object]        }
[object Object]
[object Object]        protected virtual void OnCloseRefrigeratorDoor()
[object Object][object Object]        .CloseRefrigeratorDoor;
[object Object]            if (handler != null)
[object Object][object Object]            , EventArgs.Empty);
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Elephant
[object Object][object Object]     string Name ; set; }
[object Object][object Object]        public int Weight; set; }
[object Object]    }
[object Object]
[object Object]    class Refrigerator
[object Object][object Object]     string Name ; set; }
[object Object][object Object]        public bool IsOpen ; set; }
[object Object]
[object Object]        private object m_Content;
[object Object]        public object Content
[object Object][object Object]          this.m_Content; }
[object Object]            set
[object Object]Id('Codehighlighter1_3485_3771_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_3485_3771_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_3485_3771_Open_Text').style.display='inline';" src="/files/uploadimg/20090423/1047407.gif" align=top>             (!this.IsOpen)
[object Object]                    throw new InvalidOperationException("冰箱門(mén)未打開(kāi),無(wú)法放進(jìn)東西。");
[object Object]                if (this.m_Content != null)
[object Object]                    throw new InvalidOperationException("冰箱內(nèi)有東西,無(wú)法放進(jìn)新的東西。");
[object Object]
[object Object]                this.m_Content = value;
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class Context
[object Object][object Object]     Elephant Elephant ; set; }
[object Object][object Object]        public Refrigerator Refrigerator ; set; }
[object Object]
[object Object]        private IDictionary m_Items;
[object Object]        public IDictionary Items
[object Object][object Object]        
[object Object][object Object]             none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">[object Object] (this.m_Items == null)
[object Object]                    this.m_Items = new Dictionary();
[object Object]                return this.m_Items;
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    interface IEmperorModule
[object Object][object Object]     Init(Emperor emperor);
[object Object]    }
[object Object]
[object Object]    class OpenCloseRefrigeratorDoorModule : IEmperorModule
[object Object][object Object]     void Init(Emperor emperor)
[object Object][object Object]         EventHandler(this.OpenDoor);
[object Object]            emperor.CloseRefrigeratorDoor += new EventHandler(this.CloseDoor);
[object Object]        }
[object Object]        #endregion
[object Object]
[object Object]        private void OpenDoor(object sender, EventArgs e)
[object Object][object Object]        ;
[object Object]            Console.WriteLine(string.Format("玉帝的把門(mén)大神打開(kāi)了 {0} 的冰箱門(mén)。", refrigerator.Name));
[object Object]        }
[object Object]
[object Object]        private void CloseDoor(object sender, EventArgs e)
[object Object][object Object]        ;
[object Object]            Console.WriteLine(string.Format("玉帝的把門(mén)大神關(guān)上了 {0} 的冰箱門(mén)。", refrigerator.Name));
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class PutElephantToRefrigeratorModule : IEmperorModule
[object Object][object Object]     void Init(Emperor emperor)
[object Object][object Object]         EventHandler(this.PutElephantToRefrigerator);
[object Object]        }
[object Object]        #endregion
[object Object]
[object Object]        private void PutElephantToRefrigerator(object sender, EventArgs e)
[object Object][object Object]         (elephant.Weight > 1000)
[object Object][object Object]            
[object Object]            else
[object Object][object Object]            ;
[object Object]                Console.WriteLine(string.Format("玉帝的神象星宿把大象 {0} 放到冰箱 {1} 里了。", elephant.Name, refrigerator.Name));
[object Object]            }
[object Object]        }
[object Object]    }
[object Object]
[object Object]    class SuperPutElephantToRefrigeratorModule : IEmperorModule
[object Object][object Object]     void Init(Emperor emperor)
[object Object][object Object]         EventHandler(this.PutElephantToRefrigerator);
[object Object]        }
[object Object]        #endregion
[object Object]
[object Object]        private void PutElephantToRefrigerator(object sender, EventArgs e)
[object Object][object Object]         hasPutElephant;
[object Object]            if (emperor.Context.Items.TryGetValue("HasPutElephant", out hasPutElephant))
[object Object][object Object]             (hasPutElephant is bool && ((bool)hasPutElephant) == true)
[object Object][object Object]                ;
[object Object]                }
[object Object]            }
[object Object]
[object Object]            refrigerator.Content = elephant;
[object Object]            emperor.Context.Items["HasPutElephant"] = true;
[object Object]            Console.WriteLine(string.Format("玉帝的超級(jí)神象星宿把大象 {0} 放到冰箱 {1} 里了。", elephant.Name, refrigerator.Name));
[object Object]        }
[object Object]    }
[object Object]}

仔細(xì)琢磨該代碼,請(qǐng)問(wèn)你發(fā)現(xiàn)了什么?如果你發(fā)現(xiàn)的是靈活的可擴(kuò)展性和可配置性,以及各手下之間的交互,那么恭喜你,你悟性很高。如果你還發(fā)現(xiàn)了職責(zé)鏈模式,那么恭喜你,你悟性非常高。(該代碼中兩個(gè)神象星宿的交互完全可以通過(guò)在Context中增加一個(gè)bool值屬性來(lái)實(shí)現(xiàn),之所有這里用Items字典,是為了演示如果你不具有修改Context的源代碼的時(shí)候,該如何處理。)

好了,ASP.NET的設(shè)計(jì)思想講完了。什么,還沒(méi)開(kāi)始?你沒(méi)發(fā)現(xiàn)我們的Program就是HttpRuntime、Emperor就是HttpApplication、Context就是HttpContext、IEmperorModule就是IHttpModule嗎?什么,沒(méi)發(fā)現(xiàn)?那么,讓我們來(lái)看看ASP.NET的源代碼吧。(本想把整個(gè)方法的源代碼都貼上來(lái),但是顯得過(guò)于冗長(zhǎng),因此刪掉非關(guān)鍵代碼,并以//……省略……代替。)

怎樣理解ASP.NET的設(shè)計(jì)思想

怎樣理解ASP.NET的設(shè)計(jì)思想

怎樣理解ASP.NET的設(shè)計(jì)思想

怎樣理解ASP.NET的設(shè)計(jì)思想

如此,你明白了嗎?

關(guān)于怎樣理解ASP.NET的設(shè)計(jì)思想就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)站題目:怎樣理解ASP.NET的設(shè)計(jì)思想
網(wǎng)頁(yè)鏈接:http://weahome.cn/article/jpsojd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部