第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 MVC 基類的實(shí)現(xiàn)與 WebForms 截然不同?

為什么 MVC 基類的實(shí)現(xiàn)與 WebForms 截然不同?

C#
慕姐4208626 2022-12-31 11:15:28
長期以來,我需要問一個不應(yīng)該但取悅于人類頭腦的問題。為什么 MVC 對服務(wù)器、響應(yīng)等的實(shí)現(xiàn)與 WebForms 不同?在 MVC 中取決于:MVC 會話 HttpSessionStateBase -> 來自 System.WebMVC 服務(wù)器 HttpServerUtilityBaseMVC 請求 HttpRequestBaseMVC 響應(yīng) HttpResponseBaseMVC 上下文 HttpContextBase但是在 WebForms 中:WebForms 會話HttpSessionState -> 來自 System.Web.SessionStateHttpServerUtilityHTTP請求HTTP響應(yīng)Http上下文同樣在 MVC 中,HttpContext 是控制器的一個屬性。但在 WebForms 中,HttpContext 只是一個靜態(tài)類??雌饋硐?MVC 為 WebForms 放置了 Wrappers 類?或者我不知道。HttpSessionStateWrapper HttpContextWrapper我只是想知道為什么所有這些東西都不一樣?編寫庫的專家是否使它們看起來不錯而不是丑陋?
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個贊

長話短說

MVC確實(shí)使用HttpRequestHttpContext,HttpResponse等。它只是不直接使用它們。

通過依賴于“基”類,它允許您替換從那些抽象類繼承的您自己的實(shí)現(xiàn)。這使我們能夠?yàn)榭刂破骰蚱渌蕾囉谏舷挛摹⒄埱蟮鹊念惥帉憜卧獪y試。

在運(yùn)行時,它獲取HttpRequest并將其包裝在一個名為的類中,該類HttpRequestWrapper也繼承自HttpRequestBase,因?yàn)?code>HttpRequest不繼承自HttpRequestBase。(和其他類的相同模式。)


從技術(shù)上講,MVC 在運(yùn)行時使用與 WebForms 相同的類。它只是不直接依賴于它們。相反,它取決于基類。在運(yùn)行時,它使用類似HttpContextWrapper從基類繼承的包裝類,但實(shí)際上“包裝”了 , 等的HttpContext實(shí)例HttpRequest

通過依賴抽象類HttpContextBase而不是具體類HttpContext,MVC 框架使您能夠通過提供抽象類的替代實(shí)現(xiàn)來“模擬”這些類。這是一個流行的答案。這不是很簡單,但至少不是不可能。

相比之下,使用 WebForms 進(jìn)行單元測試要困難得多。WebForms 的大部分測試策略都涉及盡可能多地遠(yuǎn)離它們并將其放在其他可測試的類中。但是當(dāng)涉及到請求、響應(yīng)、上下文等任何事情時,就很難了。顯然這并非不可能,但您必須在頁面中做一些奇怪的自定義內(nèi)容,而不是使用ContextPage屬性。


查看完整回答
反對 回復(fù) 2022-12-31
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號