2011-05-26 6 views
5

मेरे पास कोड है जो मेरे नियंत्रक से लगभग 1 एमबी डेटा पास करता है जब भी एक नया पृष्ठ बुलाया जाता है । मैं इसे थोड़ा सा अनुकूलित कर सकता हूं लेकिन मुझे आश्चर्य है कि यह डेटा के प्रवाह के रूप में करने के लायक होगा।क्या एमवीसी 3 में व्यूमोडेल के साथ देखने के लिए नियंत्रक से बड़ी मात्रा में डेटा पास करना ठीक है? यहां '

मैं नियंत्रक में जो कर रहा हूं उसके विशिष्ट है कि मुझे एक Azure डेटास्टोर से सभी परीक्षा परिणाम मिल रहे हैं और फिर उन्हें कक्षा के एक नए उदाहरण में डाल रहे हैं। मैं फिर इस वर्ग और दूसरों को एक नजर में गुजर रहा हूं। मुझे लगता है मुझे यकीन नहीं है। क्या डेटा संदर्भ द्वारा पारित किया जाएगा या वास्तविक डेटा एक स्थान से दूसरे स्थान पर ले जाया जाएगा?

किसी को भी एमवीसी 3 के लिए प्रदर्शन ट्यूनिंग के इस पक्ष के साथ कोई अनुभव है?

यहां एक निर्मित उदाहरण है। इस उदाहरण में "टेस्टडेटा" वर्ग और सामग्री को देखने के लिए यह अच्छा और आसान है लेकिन फिर मुझे इस कक्षा से कुछ आइटम चाहिए। इसलिए मैं सोच रहा हूं कि मुझे नियंत्रक में तर्क जोड़ना चाहिए और इन वस्तुओं के लिए दृश्य मॉडल में फ़ील्ड जोड़ना चाहिए या केवल उस डेटा सहित सभी क्लास डेटा में परेशान न करें और मुझे आवश्यकता नहीं है।

public class testIndexViewModel 
{ 
    public string Url { get; set; } 
    public PageMeta PageMeta { get; set; } 
    public TestData TestData { get; set; } 
} 

धन्यवाद,

+1

क्या आप अपने दृश्य में सभी 1 एमबी डेटा प्रदर्शित कर रहे हैं? –

+0

अच्छा सवाल। यदि आप सभी 1 एमबी प्रदर्शित कर रहे हैं, तो किसी भी तरह से डेटा को नियंत्रक से गुजरकर या सीधे इसे देखने में प्राप्त किया जाना चाहिए (शायद पारंपरिक नहीं)। लेकिन एक दृश्य पर 1 एमबी प्रदर्शित कर रहा है :) – Tundey

+0

1 एमबी प्रदर्शित नहीं कर रहा है। मैं दृश्य में प्रदर्शित करने के लिए बस कुछ चीजें चुनता हूं। मैं अपने सभी क्लास डेटा को पास करके कोड को सरल बना सकता हूं या नियंत्रक से देखने के लिए डेटा के बिट्स चुन सकता हूं और चुन सकता हूं। मुझे यकीन नहीं है कि यह कोड के भीतर सभी आंतरिक के रूप में एक फर्क पड़ता है। – TonyG

उत्तर

1

ViewModel वर्ग आपके द्वारा बनाए गए ViewDataDictionary जो आपके संकलित कस्टम View वर्ग इसके आधार System.Web.Mvc.ViewPage<ViewModelType> वर्ग के माध्यम से पहुँचता में जुड़ जाता है। इसका मतलब यह है कि मुझे यकीन है कि आपका ViewModel - एक बार यह बनाया गया है - हमेशा संदर्भ द्वारा उपयोग किया जाता है, और जगह के आसपास कॉपी नहीं किया जाता है।

एकमात्र प्रदर्शन समस्या जो आप पार कर सकते हैं (मुझे लगता है) पहली जगह में 1 एमबी ऑब्जेक्ट बनाने के परिणामस्वरूप होगा; आप इनमें से कितने ऑब्जेक्ट्स बनाने की संभावना रखते हैं, और कितनी बार?

व्यक्तिगत रूप से, मैं पहले लोड परीक्षण के बिना प्रदर्शन अनुकूलन के बारे में चिंता नहीं करता और यह ध्यान में रखता हूं कि यह वास्तव में समस्या पैदा कर रहा है। यदि ऐसा होता है और आपके एप्लिकेशन को केवल किसी भी समय डेटा के एक अंश की आवश्यकता होती है, तो आप एक अनुकूलन में बना सकते हैं।

अंत में, यदि आपके पास अपने 1 एमबी डेटा के माध्यम से निकलने के लिए अपने दृश्य में कोड है और आप जिन अनुभागों को प्रदर्शित करना चाहते हैं उन्हें चुनें, तो आप कोड को और अधिक पठनीय बनाने के लिए केवल उस डेटा को देखना चाहते हैं , और बेहतर नियंत्रक और दृश्य की जिम्मेदारियों को अलग करें।

http://en.wikipedia.org/wiki/Premature_optimization#When_to_optimize

+0

धन्यवाद स्टीव। जब भी उपयोगकर्ता पृष्ठ का चयन करता है तो मैं 1 एमबी ऑब्जेक्ट बनाउंगा क्योंकि मेरा डेटा युक्त ऑब्जेक्ट डेटास्टोर में डेटा से बनाया गया है। मैं इसके लिए एज़ूर टेबल स्टोरेज का उपयोग कर रहा हूं, इसलिए डेटा एक पंक्ति की सामग्री है जिसे सीधे कुंजी द्वारा एक्सेस किया जाता है। – TonyG

+0

पर्याप्त मेला - फिर, इसकी आवाज से यह काफी आम ऑपरेशन होगा। शुद्ध प्रदर्शन दृश्य से मैं अभी भी कहूंगा कि यह परीक्षण लोड करने के लिए नीचे आता है :) –

1

मैं एक उपयोगकर्ता के दृष्टिकोण से इस पर विचार करेंगे।

किसी भी समय स्क्रीन पर कितना डेटा दिखाया जाएगा?

यदि बहुत अधिक है तो डेटा जोखिमहीन हो जाएगा क्योंकि उपयोगकर्ता सूचना अधिभार से पीड़ित होगा।

मैं कुछ विवरणों की एक फ़िल्टरिंग सिस्टम का प्रयास और उपयोग करता हूं, शायद उपयोगकर्ता के फ़िल्टर के विशिष्ट सेट के रूप में निर्दिष्ट करने के लिए सूचियों को छोड़ दें। इस तरह अपने नियंत्रक में आप डेटा को फ़िल्टर कर सकते हैं ताकि आप डेटा के 1 एमबी सेट के एक छोटे से सबसेट को लौट सकें।

वैकल्पिक रूप से यदि आप सभी डेटा वापस करना चाहते हैं तो मैं एक और अजाक्स शैली का सुझाव दूंगा जहां केवल एक छोटा सबसेट लौटाया जाएगा और उपयोगकर्ता स्क्रॉल करता है और अधिक डेटा AJAX के माध्यम से लोड होता है - Google छवियां कैसे काम करती हैं।

0

अगर आप 1 एमबी डेटा लोड और फिर एक नया मॉडल में विशिष्ट डेटा निकालने और देखने के लिए कि पारित यह अभ्यस्त कोई फर्क। आप उसी मात्रा में स्मृति का उपयोग करेंगे। जब तक आप दृश्य में उस विशाल ब्लॉब के खिलाफ बाध्य नहीं करते हैं

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