8

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

मैं इस संरचना के बारे में सोच रहा हूँ:

Application(s) structure

तो मैं क्या चाहते घिरा प्रसंग 2 पर काम करते हैं और विस्तार है कि नई कार्यक्षमता का एक बहुत के साथ आने वाले महीने के लिए/वर्ष है, जबकि सक्षम होने के लिए है बाउंड संदर्भ 1 जैसा है। मैं यूआई पर भी काम करूंगा, विशेष रूप से बोल्ड कंटेक्स्ट 2 से संबंधित भागों। मैं उपयोगकर्ताओं को अन्य उपकरणों से बाध्य संदर्भ 2 के साथ काम करने की क्षमता भी देना चाहूंगा।

पसंदीदा रूप से भी बाध्य संदर्भ 2 के यूआई में उपयोग की जाने वाली वेब प्रौद्योगिकियों को अपडेट किया जाएगा क्योंकि यह हमारा मुख्य क्षेत्र फोकस है और इसका सबसे अधिक उपयोग किया जाता है, इसलिए वेब के लिए अपने यूआई प्रोजेक्ट में इसे रखना भी स्मार्ट हो सकता है और एक "लैंडिंग" साइट है जो उपयोगकर्ताओं को प्रबंधित करने और उपयोगकर्ताओं को लॉग इन करने जैसी सामान्य कार्यक्षमता देती है।

अभी मैं प्रबंधन को आसान बनाने के लिए विजुअल स्टूडियो में अलग-अलग समाधानों में सेपरेट करने के बारे में सोच रहा हूं। लेकिन मैं एक समाधान में प्रत्येक के लिए एक फ़ोल्डर बना सकता था और वहां सब कुछ डाल सकता था।

मेरा प्रश्न यह है कि ऐसा करने का अनुशंसित तरीका क्या है, और अलग-अलग समाधान में अलग होने से पहले मुझे क्या विचार करना चाहिए?

क्या इसका प्रबंधन करने का कोई सर्वोत्तम अभ्यास है? क्या काम करता है और नहीं के अनुभव के साथ कोई भी?

Btw: के बाद से इस घिरे संदर्भों से विभाजित है वहाँ प्रणाली के कुछ हिस्सों के बीच संचार हो सकता है, हालांकि कोई सीधा निर्भरता की आवश्यकता होगी (यानी संदर्भ 1 का प्रबंधन और कर्मचारियों है कि फिर से संदर्भ में की जरूरत है पंजीकरण के लिए व्यापार तर्क का कहना है 2) ।

अद्यतन मुझे एहसास है कि कुछ और जानकारी की आवश्यकता है।

इन दोनों की तुलना में अधिक बाध्य संदर्भ हैं। उनमें से कोई भी वास्तव में एक विभाग की तरह नहीं है, यानी कर्मचारी प्रबंधन, संदर्भ प्रबंधक हैं जब उन्हें दूसरों के प्रबंधन से संबंधित जानकारी व्यवस्थित/संग्रहित करने की आवश्यकता होती है, और महत्वपूर्ण घटनाओं पर अनुस्मारक भी प्राप्त होते हैं। खरीद यह है कि संदर्भ कर्मचारी तब होते हैं जब वे एक विभाग के लिए सामान खरीदते हैं और सूची करते हैं, वहां 20-40 संगठनात्मक विभाग हो सकते हैं जो इसका उपयोग करते हैं। मैं विचार कर रहा हूं कि "रिपोर्टिंग" एक अलग बाध्य संदर्भ है (हालांकि बहुत अधिक रोचक तर्क और व्यवहार के बिना)। ये बुनियादी कार्यक्षमता प्रदान करने के लिए छोटे से शुरू होते हैं, फिर समय के साथ बढ़ते हैं क्योंकि अधिक कार्यक्षमता जोड़ दी जाती है और लोग नई ज़रूरतों को "खोजते हैं"। उन्हें अलग से अपडेट किया जाता है, और मुझे उम्मीद है कि उनमें से कुछ समय के साथ बड़े सिस्टम में बढ़ेगी, भले ही वे बुनियादी जरूरतों को हल करना शुरू करें।

+2

कुछ हद तक संबंधित है, लेकिन अगर आपके पास नहीं है पहले से ही आप में [प्रिज्म] (http://compositewpf.codeplex.com/) और/या [प्रबंधित तानाना फ्रेमवर्क] (http दिखना चाहिए: //mef.codeplex। com /) अच्छी तरह से decoupling की उच्च डिग्री के साथ आवेदन/पुस्तकालयों लिखने के लिए .NET ढांचे के लिए। वे समान हैं लेकिन सख्ती से उसी उद्देश्य की सेवा नहीं करते हैं। –

+0

अपनी समस्या डोमेन के बारे में कुछ और जानने के बिना, जवाब देना मुश्किल होगा। मेरे सिर के ऊपर से, मैं कहूंगा कि प्रत्येक बाध्य संदर्भ आपके संगठन में एक अलग * विभाग * का प्रतिनिधित्व करता है, जैसे लेखांकन। एक संपूर्ण समाधान के लिए एक पंजीकरण प्रक्रिया बहुत छोटी लगती है; यह एक परियोजना की तरह लगता है। इनपुट के लिए –

+0

@RobertHarvey धन्यवाद। मैंने इस प्रतिक्रिया के जवाब में कुछ और जानकारी के साथ पोस्ट को अद्यतन किया है। – cfs

उत्तर

2

तो, आपके पास कोड का गुच्छा है और प्रोजेक्ट अन्य भागों से संबंधित कोड लोड किए बिना कोड के कुछ हिस्सों पर काम करना चाहता है। फिर हाँ, आप प्रत्येक भाग को एक अलग दृश्य स्टूडियो समाधान के रूप में प्राप्त कर सकते हैं।

मुख्य बिंदु यह है कि वीएस समाधान सिर्फ एक [.sln] फ़ाइल है जो वर्णन करता है कि कौन सी परियोजनाओं को इस समाधान द्वारा समूहीकृत किया गया है। केवल इस उद्देश्य के लिए परियोजनाओं की अलग प्रतियां न बनाएं। आपको केवल एक बार सभी परियोजनाओं को बनाए रखना होगा (प्रत्येक के लिए एक प्रति), और फिर अलग-अलग समाधान बनाएं और उन परियोजनाओं को शामिल करें जो आपको लगता है कि इस समाधान से संबंधित हैं (कोड का यह हिस्सा)।

उदा। आप तय कर सकते हैं कि "कर्मचारी प्रबंधन" एक समाधान है जिसमें केवल 3 (40 के पूरे समूह) परियोजनाएं शामिल हैं। फिर आप आगे बढ़ें और एक समाधान बनाएं जिसमें उन तीन परियोजनाएं हों। शायद आप अलग-अलग छोटे समाधानों को समाप्त कर देंगे जो दूसरों से अलग होने में काम करने के लिए सुविधाजनक हैं।

आप सभी परियोजनाओं (फिर से, ) में एक बड़ा समाधान होने पर विचार कर सकते हैं, प्रत्येक प्रोजेक्ट में केवल एक उदाहरण है, लेकिन यह कई समाधानों का हिस्सा हो सकता है)। बिल्ड/रिलीज तैयारी जैसे प्रमुख संचालन के लिए इस प्रकार का बड़ा समाधान उपयोगी हो सकता है।

मुझे संदेह है कि आप समाधान के महत्व को अतिरंजित करने की कोशिश कर रहे हैं। हकीकत में, आपके पास जो भी कोड है, वह एक बड़ी एकता है क्योंकि वे एक-दूसरे का संदर्भ देते हैं और संभवत: अन्य लोगों को संकलित किए बिना बनाया जा सकता है।भले ही आप समाधान संरचना जो किसी भी तरह अपने व्यापार की जरूरत से मेल खाती है के साथ आने की कोशिश कर सकते हैं, फिर भी यह एक समस्या है जो समाधान से संबंधित नहीं है की एक और दिशा हो रहा है। यही कारण है कि

निष्कर्ष विधानसभाओं, गतिशील लोड हो रहा है और तानाना में विभाजित की समस्या को हल करने की तरह कुछ, आदि हो सकता है: समाधान सुविधा आप जब स्रोत कोड के साथ काम हासिल करना चाहते हैं पर निर्भर करता है में विभाजित कोड, कि बस है, क्योंकि स्रोत को उप-भागों में विभाजित करना, और कुछ नहीं।

संपादित/जोड़:

साथ ही आप स्वतंत्र समाधान में समाधान विभाजित करने के लिए तय कर सकते हैं, लेकिन यह कुछ अलग है। इसका मतलब यह होगा कि समाधान परियोजनाएं अन्य समाधानों में अन्य परियोजनाओं के आउटपुट (डीएलएल, एक्सई) फ़ाइलों का संदर्भ दे सकती हैं। यह तब किया जा सकता है जब प्रत्येक समाधान किसी अन्य पक्ष के समान होता है जैसे कि 3-डी पार्टी कोड (कोई प्रत्यक्ष परियोजना संदर्भ नहीं, बल्कि केवल आउटपुट संदर्भ)।

+2

एकमात्र सही जवाब; मुझे संदेह है कि माइक्रोसॉफ्ट का इरादा समाधान के साथ परियोजनाओं के निर्माण को मिश्रण नहीं करना था, लेकिन दुर्भाग्यवश उस नियम को 'वेब साइट' प्रोजेक्ट प्रकार के साथ तोड़ दिया, जिसमें इसकी अपनी प्रोजेक्ट फ़ाइल नहीं है और इसकी सभी एमएसबिल्ड जानकारी की जरूरत है जो एसएलएन फाइल में है।'वेब साइट' प्रोजेक्ट के पक्ष में 'वेब साइट' प्रोजेक्ट बनाने के लिए कभी भी कम नहीं किया जाता है। तो तेंगीज़ द्वारा समझाए गए विचार पूरी तरह से सही और व्यावहारिक हैं – user1416420

+0

अंतर्दृष्टि के लिए धन्यवाद। आप सही हैं, मैंने लगता है कि सॉल्यूशंस के महत्व को अतिरंजित कर दिया गया है, शायद इसलिए कि मेरी पहली वीएस परियोजनाओं में से अधिकांश जहां वेब साइट दिन में वापस आती है। – cfs

1

मुझे लगता है कि यदि आपके पास एकाधिक समाधान हो, तो यह निर्णय लेने पर आपको लगता है कि वास्तव में आप असेंबली के एक (या अधिक) को कल्पना करते हैं जो आपके बाध्य संदर्भ को अन्य विभिन्न अनुप्रयोगों में उपयोग करने के लिए तैयार करता है, जो कि कुछ के बारे में बताएगा आपके बाध्य संदर्भ का सटीक वही उपयोग मामलों का प्रबंधन होता है। यदि ऐसा है, तो एक अलग समाधान समझ में आता है। लेकिन यदि आपके सभी यूआई परतें एक ही समय में एक ही एप्लीकेशन जारी की जाती हैं, तो मैं इसे एक समाधान में रखूंगा, जब तक कि आपके पास इतनी सारी परियोजनाएं न हों कि विजुअल स्टूडियो अनुपयोगी हो।

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

आपके प्लेटफॉर्म की तरह क्या लगता है, और उस प्लेटफ़ॉर्म के सभी टुकड़े (UI परतें) को सटीक उसी तर्क को चलाना चाहिए।

+0

आप सही हैं। एक ही घिरे संदर्भ के कई संस्करण नहीं होगी लेकिन ईसा पूर्व अलग से विकसित किया जाएगा, अपने स्वयं के परीक्षण परियोजनाओं है, अपने स्वयं के डीबी (लग रहा है कम से कम यह की तरह)। क्या मैं पूछ सकता हूं कि आप उन्हें विभिन्न समाधानों में रखने से दूर रहने का प्रयास क्यों करेंगे? – cfs

+0

@ सीएफएस आप परीक्षण परियोजनाओं को एक ही समाधान में ठीक रख सकते हैं। कारण मैं उन्हें एक साथ रखना पसंद करूंगा चीजों को सरल बनाना। आधार पुस्तकालयों एक अलग समाधान में हैं और मैं एक जगह UI के उन से प्राप्त कर सकते हैं करने के लिए बीसी और ui मैं अलग समाधान में ऐसा करने की जरूरत में कुछ बदलने के लिए, और किसी भी तरह प्राप्त करने के लिए पुस्तकालयों की जरूरत है। एक समाधान में, बनाम मेरे लिए इसे संभाल सकता है। रिफैक्टरिंग आसान हो जाएगा जैसा हम करेंगे; संख्या बनाम फीचर बनाम के बारे में सोचें। – Andy

1

समाधान बिंदु दृश्य मुझे लगता है कि बड़ी समस्या नहीं है। मैं फ़ोल्डरों के भीतर अपनी परियोजनाओं को व्यवस्थित करना चुनूंगा। प्रत्येक बाध्य संदर्भ के लिए एक, और दूसरे यूआई में वेब यूआई (इसे किसी के बारे में सोचने पर इसे अपने आप के बाध्य संदर्भ के रूप में माना जा सकता है)।

आपके पास कुछ साझा कर्नेल हो सकता है, जो आपके सभी बीसी द्वारा साझा किया गया है जिसे आप एक अलग फ़ोल्डर में भी डाल सकते हैं।

आमतौर पर प्रत्येक बीसी स्वतंत्र होना चाहिए (साझा विधानसभाओं के लिए छोड़कर), और अपने यूआई उनके इंटरफेस के माध्यम से ही बीसी (उदाहरण के लिए WCF अनुबंध)

वैश्विक समाधान हो सकता है कि हर फ़ोल्डर और भीतर परियोजनाओं में शामिल है पता होना चाहिए (MyApplicationName.sln), लेकिन आप केवल समाधान के हिस्से पर काम करने के लिए समर्पित समाधान के बारे में सोच सकते हैं, जैसे MyApplication_BCName केवल बीसी फ़ोल्डर, साझा असेंबली और यूआई के साथ यदि यह आपकी आवश्यकताओं के अनुरूप है, और आप नहीं चाहते हैं सौदा करने के लिए भारी समाधान।

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

मैं प्रथम श्रेणी के प्रोग्रामर नहीं हूं, मुझे लगता है कि इस तरह की चीजें नवीनतम परियोजनाओं के लिए अच्छी तरह से दिख रही हैं, यह कुछ महीने (घंटों ..) में पूरी तरह से बदला जा सकता है? ?))

+0

धन्यवाद! मुझे वैसे ही लगता है। कुछ परियोजनाओं को अपने स्वयं के समाधान में खोलने के बारे में सोचा था, जहां वे एक अलग समाधान के रूप में काम करने में सक्षम थे। उन्हें सीपीरेट सॉल्यूशन फ़ोल्डर्स में व्यवस्थित करना और यूआई के रूपों के साथ समान चीजों को एक ही समाधान में रखना होगा, व्यवस्थित करना और तैनाती करना आसान होगा और अगर मैं भी चाहता हूं तो मौजूदा परियोजनाओं को एक अलग समाधान में खोलने की क्षमता दें। – cfs

+0

आपको फ़ाइल सिस्टम पर विभिन्न फ़ोल्डर के बारे में सोचना चाहिए। समाधान में, वही काम करें। फ़ाइल सिस्टम में फ़ोल्डर! = समाधान में फ़ोल्डर – Arthis

+0

MyApplicationName.BC1.restofthenamespace के बाद अपना नामस्थान रखने का विचार करें। बहुत सुविधाजनक अगर कुछ कारणों से आप बाद में दो घटकों पर फिर से समूह करना चाहते हैं। – Arthis

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

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