2008-11-05 9 views
14

वीबी.नेट Windows Forms एप्लिकेशन को व्यवस्थित करने का सबसे अच्छा तरीका क्या है ताकि कोड का पुन: उपयोग किया जा सके और एप्लिकेशन को आसानी से बढ़ाया जा सके?वीबीएनईटी विंडोज फॉर्म अनुप्रयोगों को कैसे व्यवस्थित करें

मैं कई नए रूपों का निर्माण करता था। यह कई बार दोहराए गए कोड और रूपों का कारण बनता है जो समान चीजें करते थे।

अब, ऐसे फॉर्मों के लिए जो समान कार्य करते हैं, जैसे किसी विशिष्ट डेटाबेस तालिका से आइटम को देखना/संपादित/हटाएं, मैं आवश्यक नियंत्रण के साथ एक फॉर्म बनाता हूं, फॉर्म में पैरामीटर के साथ एक वर्ग का उदाहरण बनाते हैं जैसे कि नियंत्रण का संग्रह और डेटाबेस तालिका नाम वाली एक स्ट्रिंग। फिर व्यक्तिगत नियंत्रण वर्ग के कार्यों को कॉल करता है।

उन्नत फॉर्म इस मूल रूप वर्ग का उत्तराधिकारी और विस्तार करेंगे।

  1. क्या इस क्षेत्र में पहले से ही काम किया जा चुका है?
  2. क्या किताबें/आलेख उपलब्ध हैं जो इस विषय पर उपलब्ध विकल्पों पर चर्चा करते हैं?

उत्तर

4

मुझे इस Passive Screen पैटर्न के साथ बड़ी सफलता मिली।

मेरी राय में, पारंपरिक एमवीसी आर्किटेक्चर की बड़ी समस्या यह है कि लोग फॉर्म वर्गों में बहुत अधिक तरीके से काम करते हैं। इससे आपको मैन्युअल परीक्षण की मात्रा बढ़ जाती है।

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

इसे हल करने की चाल एक नियंत्रक असेंबली बना रही है जो फॉर्म असेंबली (या EXE) संदर्भ है। प्रत्येक फॉर्म में असेंबली में एक समान वर्ग है। एक बटन पर क्लिक करने से ThisForm.ThisButton(<args>) पर कॉल होगा जो आपके ढांचे में वस्तुओं को कम करेगा। प्रत्येक फॉर्म एक इंटरफेस लागू करता है ताकि, यदि नियंत्रक वर्ग को फॉर्म से अतिरिक्त जानकारी की आवश्यकता है, तो इसे पुनर्प्राप्त करने के लिए एक इंटरफ़ेस है।

फिर अपने unit testing के लिए आप डमी कक्षाओं को कार्यान्वित करने और नियंत्रक कक्षाओं को जानकारी फ़ीड करने के लिए डमी कक्षाओं को कार्यान्वित करके जटिल संचालन करने वाले ऑपरेटर का अनुकरण करते हैं। नियंत्रक वर्गों को किसी भी अलग नहीं पता है क्योंकि डमी वर्ग सभी अपेक्षित इंटरफेस को लागू करते हैं।

एक महत्वपूर्ण अपवाद है और यह मामूली संवाद के लिए है। उन संवादों के लिए जिनके पास कुछ चेक बॉक्स हैं, मुझे लगता है कि यह संगठन अधिक है। मैं command pattern बहुत उपयोग करता हूं। तो असेंबली में जहां मैं कमांड ऑब्जेक्ट्स को परिभाषित करता हूं, मैंने उस कमांड से जुड़े सरल संवाद को रखा है। यह उपचार आपको प्राप्त करने के लिए एक संवाद कितना आसान होना चाहिए।

मुझे निम्नानुसार मेरे अनुप्रयोगों को ढांचा बनाना पसंद है।

  • उपयोगिता - यह एक विधानसभा सामान मैं हर समय का उपयोग किया है - गणित काम करता है, फ़ाइल समारोह, आदि

  • वस्तुओं - यह विशिष्ट वस्तुओं मैं इस आवेदन के लिए उपयोग कर रहा हूँ है।

  • UIFramework - यह सभी रूपों और नियंत्रक इंटरफेस को परिभाषित करता है।

  • कमांड - इसमें सभी कमांड ऑब्जेक्ट्स हैं जो मेरी एप्लिकेशन ऑब्जेक्ट्स में हेरफेर करते हैं।

  • यूआई - वस्तुओं है कि नियंत्रक इंटरफेस

  • EXE लागू - फार्म कि प्रपत्र इंटरफ़ेस को लागू और नियंत्रक वस्तुओं कहता है।

3

आप रॉकी लोट्का के लोकप्रिय CSLA Framework को देखना चाह सकते हैं। यह व्यावसायिक वस्तुओं को लागू करने के लिए एक बहुत ही संरचित तरीका प्रदान करता है ताकि आप गैर-यूआई कोड को अपने रूपों से बाहर रख सकें। अपने व्यापार तर्क को अलग करने के अलावा, यह एन-लेवल पूर्ववत, सत्यापन, सुरक्षा, डेटा बाध्यकारी समर्थन इत्यादि में निर्मित प्रदान करता है।

सीएसएलए में सबसे अधिक निर्देशित एक शिकायत यह है कि यह परीक्षण संचालित विकास को कठिन बनाता है, ताकि कुछ भी विचार करने के लिए हो सकता है।

3

कुछ जो बहुत मदद कर सकता है User Controls का उपयोग है। उपयोगकर्ता नियंत्रण के साथ आप एक ही यूआई को विभिन्न रूपों में पुन: उपयोग कर सकते हैं। साथ ही, आपके पास एक फॉर्म पर कई उपयोगकर्ता नियंत्रण हो सकते हैं, इसलिए यदि आपके पास टैब टैबलेट वाला कोई फॉर्म है जिसमें 5 टैब हैं, तो प्रत्येक टैब की सामग्री उपयोगकर्ता नियंत्रण हो सकती है, इसलिए सैकड़ों नियंत्रण सभी को एक रूप में मिश्रित करने की बजाय , प्रत्येक उपयोगकर्ता नियंत्रण के अपने नियंत्रण और सत्यापन तर्क होते हैं, और आप फ़ॉर्म में केवल छह नियंत्रण के साथ समाप्त होते हैं: टैबcontrol और 5 उपयोगकर्ता नियंत्रण।

यह यूआई कोड को एप्लिकेशन तर्क से अलग करने में मदद नहीं करता है, लेकिन यह आपको हजारों लाइनों के कोड के बजाय छोटे, संरचित इकाइयां बनाने में सक्षम बनाता है।

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