मैं वर्तमान में एक सी # एमवीसी रीस्ट वेब एपीआई विकसित कर रहा हूं, और हमारे डिजाइन के लिए दो संभावनाओं में से एक के बीच चयन करने की कोशिश कर रहा हूं।सी # स्टेटिक इंस्टेंस बनाम ऑब्जेक्ट इंस्टेंस
हमारे डिजाइन में बहुत गहरा हो रही बिना, हम डेटा का उपयोग है, जो हम DataSource
फोन करता हूँ के लिए एक वर्ग है करना चाहते हैं। प्रत्येक DataSource
को सही प्रतिक्रिया का सही ढंग से निर्माण करने के लिए तर्क के छोटे, निहित ब्लॉक निष्पादित करने की आवश्यकता होगी। भविष्य में हॉट-लोड कोड करने में सक्षम होने की इच्छा के कारण, हम बस DataSource
पर फ़ंक्शंस नहीं करना चाहते हैं, इसके बजाय हम उन्हें अन्य असेंबली द्वारा प्रदान करना चाहते हैं। हमारे पास इस कार्यान्वयन की अवधारणा का प्रमाण है, और अब तक, बहुत अच्छा है।
जो मैं तय करने का प्रयास कर रहा हूं वह एक स्थिर वर्ग ExecuteQuery
फ़ंक्शन के साथ एक स्थिर वर्ग लिख रहा है, या इन वर्गों के उदाहरण बनाने के लिए एक कारखाना विधि लिख रहा है, जिसमें ExecuteQuery
नामक एक उदाहरण विधि है।
कई, अल्पकालिक वस्तुओं हर अनुरोध बनाने, स्थिर तरीकों बुला बनाम के बीच प्रदर्शन विचार क्या हैं?
सहजता से, स्थिर तरीके तेज हो जाएंगी, लेकिन मुझे पहले से ही उम्मीद है कि मैं प्रतिबिंब के माध्यम से उन्हें बुलाए जाने वाले सिरदर्द में थोड़ा सा भागूंगा (गर्म लोड कोड आवश्यकता का समर्थन करने के लिए)।
अगर वहाँ अल्पकालिक वस्तुओं के लिए एक बहुत बड़ा दंड नहीं है, तो वे बाहर सादगी पर अकेले जीत सकता।
हमारे उम्मीद भार के बारे में प्रासंगिक जानकारी:
300 मि.से में- रिस्पांस बार - 800ms रेंज
- लगभग 2000 वेब ग्राहकों के बारे में 4000 ग्राहकों
- ग्राहक प्रश्नों करने का
- पीक लोड के औसत लोड प्रत्येक 2 - 5 सेकंड
- क्लाइंट पीक दर प्रत्येक प्रश्न
इसके अलावा, प्रत्येक DataSource
अधिकतम 8, इन उदाहरणों में से 3 का औसत बनाएगा।
शायद आपके प्रतिबिंब का उपयोग करने का इरादा स्थैतिक-बनाम उदाहरण उपयोग से बड़ा प्रदर्शन हिट करेगा। जैसा कि अन्य ने टिप्पणी की है, आपको वह फॉर्म चुनना चाहिए जो सबसे _design_ sense बनाता है। वैकल्पिक रूप से, चूंकि आपके पास कुछ इच्छित मेट्रिक्स हैं, इसलिए आप स्थिर/आवृत्ति कार्यान्वयन का नकल कर सकते हैं और आपको जिस ओवरहेड का सामना करना पड़ेगा उसका एहसास हो सकता है। –