簡體   English   中英

ASP.NET MVC:UpdateModel是一個“昂貴”的操作(由於Reflection)?

[英]ASP.NET MVC: Is UpdateModel an “expensive” operation (due to Reflection)?

我想知道UpdateModel是否被認為是“昂貴的”操作(由於模型屬性的Reflection查找),尤其是在更大的Web應用程序(想想StackOverflow)的上下文中看到的時候?

我不想進行過早的優化,但我認為這是使用UpdateModel的設計選擇,這就是為什么我想早知道是否建議使用它。 另一個(繁瑣)選擇是為具有固定屬性的各種域對象編寫自己的UpdateModel方法。

謝謝!

你很聰明,不想過早地進行優化。 特別是因為這種“優化”有利於處理器的時間超過你的,這是更昂貴的。

優化的主要規則是首先優化緩慢的東西。 因此,請考慮實際更新模型的頻率與從數據庫后端進行選擇的頻率。 我猜它是經常或更少的1/10。 現在考慮從數據庫后端選擇的成本與反射成本。 反射成本以毫秒為單位。 從數據庫后端進行選擇的成本可以在最差的情況下以秒為單位進行測量。 我的經驗是POST很少很慢,而且當它們通常是錯誤的數據庫而不是反射。 我認為您可能會將大部分優化時間花在GET上。

與網絡延遲,數據庫調用和一般IO相比,UpdateModel()調用是微不足道的,我不打擾它。

我認為UpdateModel是一種快捷方式,它會在視圖和模型之間產生大量的耦合。

我選擇不使用“內置”模型(比如能夠直接從數據庫將LINQ創建的對象傳遞給視圖)因為我希望選擇用更復雜的東西替換我的模型 - 甚至只是另一個數據庫提供者。 但是,使用LINQtoSQL(或ADO.NET實體)進行快速原型設計非常誘人。

我傾向於創建我的MVC應用程序,然后公開一個“服務”層,然后連接到“模型”(這是我的域的OO視圖)。 這樣我就可以輕松創建Web服務層,交換數據庫,編寫新的工作流等,而無需擔心。

(並確保您編寫測試並使用DI - 這樣可以省去很多麻煩!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM