2009-07-30 10 views
6

मुझे आश्चर्य हुआ कि क्या अपडेटमोडेल को "महंगा" ऑपरेशन माना जाता है (मॉडल गुणों के प्रतिबिंब लुकअप के कारण), खासकर जब एक बड़े वेब एप्लिकेशन (स्टैक ओवरफ्लो सोचें) के संदर्भ में देखा जाता है?एएसपी.नेट एमवीसी: अद्यतन मॉडल एक "महंगा" ऑपरेशन (प्रतिबिंब के कारण) है?

मैं समयपूर्व अनुकूलन में शामिल नहीं होना चाहता हूं, लेकिन मैं इसे अपडेटमोडेल का उपयोग करने के लिए एक डिज़ाइन विकल्प मानता हूं, इसलिए मैं जल्दी से जानना चाहता हूं कि यह सलाह दी जाती है या नहीं। अन्य (थकाऊ) पसंद निश्चित गुणों के साथ विभिन्न डोमेन ऑब्जेक्ट्स के लिए अपनी खुद की अद्यतन मॉडल विधि लिख रही है।

धन्यवाद!

उत्तर

5

आप समय से पहले अनुकूलन में संलग्न नहीं करना चाहते करने के लिए स्मार्ट है। खासकर जब से यह "अनुकूलन" प्रोसेसर के समय पर आपका पक्ष लेगा, जो कि अधिक महंगा है।

ऑप्टिमाइज़ेशन का प्राथमिक नियम पहले धीमी सामग्री को अनुकूलित करना है। तो इस बात पर विचार करें कि आप वास्तव में अपने डेटाबेस बैकएंड से चुनने वाले मॉडल को कितनी बार अपडेट करते हैं। मैं अनुमान लगा रहा हूं कि यह 1/10 अक्सर या उससे कम है। अब प्रतिबिंब की लागत बनाम डेटाबेस बैकएंड से चयन करने की लागत पर विचार करें। प्रतिबिंब की लागत मिलीसेकंड में मापा जाता है। डेटाबेस बैकएंड से चयन करने की लागत को सबसे खराब समय में मापा जा सकता है। मेरा अनुभव यह है कि POSTs शायद ही कभी बहुत धीमी होती है, और जब वे आमतौर पर प्रतिबिंब के बजाय गलती पर डेटाबेस होते हैं। मुझे लगता है कि आप जीईटी पर अपने अधिकांश अनुकूलन समय बिताने की संभावना रखते हैं।

0

मुझे लगता है कि अपडेटमोडल एक शॉर्टकट का एक सा है जो दृश्य और मॉडल के बीच बड़ी मात्रा में युग्मन का कारण बनता है।

मैं "अंतर्निहित" मॉडल का उपयोग नहीं करना चुनता हूं (जैसे डेटाबेस से सीधे देखने के लिए LINQ निर्मित ऑब्जेक्ट्स को पास करने में सक्षम होना) क्योंकि मैं अपने मॉडल को कुछ और परिष्कृत - या यहां तक ​​कि बस एक और विकल्प के साथ बदलने का विकल्प चाहता हूं डेटाबेस प्रदाता। यद्यपि तेजी से प्रोटोटाइप के लिए LINQtoSQL (या ADO.NET इकाइयों) का उपयोग करना बहुत मोहक है।

मुझे जो करना है वह मेरा एमवीसी एप्लीकेशन बना रहा है, फिर 'सेवा' परत का पर्दाफाश करें जो तब 'मॉडल' से जुड़ा हुआ है (जो मेरे डोमेन का ओओ व्यू है)। इस तरह मैं बिना किसी चिंता के वेब सेवा परत, डेटाबेस स्वैप कर सकता हूं, नए वर्कफ़्लो आदि लिख सकता हूं।

(और सुनिश्चित करें कि आप अपने परीक्षण और उपयोग डि लिख कर - यह परेशानी का एक बहुत बचाता है)

रोब

+3

मुझे लगता है कि उनके प्रश्न का बिंदु वही रहता है, भले ही आप डोमेन ऑब्जेक्ट्स को सीधे अपडेट करते हैं या एक विशेष संपादन मॉडल (जिसे मैं भी अनुशंसा करता हूं) का उपयोग करता हूं। –

2

नेटवर्क विलंबता, डेटाबेस कॉल और सामान्य आईओ की तुलना में, UpdateModel() कॉल छोटा है और मैं इससे परेशान नहीं होगा।

संबंधित मुद्दे