.Net में कई अतिव्यापी समाधान / परियोजनाओं की संरचना कैसे करें?


16

मैंने हाल ही में एक नए क्लाइंट के लिए एक पुरानी विरासत कोडबेस के साथ काम करना शुरू किया है जिसमें कई .net समाधान हैं, प्रत्येक आमतौर पर उस समाधान के लिए कुछ परियोजनाओं को होस्ट करता है, लेकिन फिर "उधार" / "लिंक इन" (मौजूदा प्रोजेक्ट जोड़ें) कुछ अन्य प्रोजेक्ट्स जो तकनीकी रूप से अन्य समाधानों से संबंधित है (कम से कम यदि आप TFS में फ़ोल्डर संरचना द्वारा जाते हैं)

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

ऐसा लगता है कि डेवलपर आलस्य के लिए सब कुछ अनुकूलित किया गया है।

जब मैंने उनसे सामना किया कि उनके पास सीआई सर्वर क्यों नहीं है, तो उन्होंने जवाब दिया कि कोड को व्यवस्थित करना मुश्किल है जैसे यह है। (मैं इसे अभी स्थापित कर रहा हूं और इस कोड-संगठन को कोस रहा हूं)

समाधान तैनाती कलाकृतियों के आसपास आयोजित किए जाते हैं (सामान जिन्हें एक साथ तैनात करने की आवश्यकता होती है एक ही समाधान में हैं) जो मुझे लगता है कि एक बुद्धिमान निर्णय है, लेकिन उन समाधानों (प्रोजेक्ट) की सामग्री सभी जगह हैं।

क्या कई समाधानों / तैनाती कलाकृतियों में सामान्य वर्ग के पुस्तकालयों का पुन: उपयोग करते समय उपयोग करने के लिए एक सर्वोत्तम अभ्यास की सहमति है,

  • वीसीएस में कोड संरचना कैसे करें
  • कैसे अलग तैनाती कलाकृतियों के बीच व्यापार तर्क साझा करने की सुविधा के लिए

जवाबों:


9

मैं मौजूदा परियोजनाओं को शामिल करने का प्रशंसक नहीं हूं जो अन्य समाधानों से संबंधित हैं। ऐसे कई चर हैं जहां 1 समाधान के लिए उस परियोजना को संपादित करने से किसी अन्य समाधान में पूरी तरह से कुछ टूट जाता है। फिर उस समस्या को ठीक करके आप मूल समाधान को तोड़ते हैं। बल्कि, कुल्ला, दोहराएं।

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


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

@ टिप्पणी: उस को +1।
जोएल एथरटन

5

मैंने वास्तव में ऐसी टीएफएस संरचनाओं का आयोजन किया है जैसे कि आप जिसका उल्लेख कर रहे हैं और जब यह सीआई के लिए अद्वितीय चुनौतियां पेश करता है तो इसके कई लाभ हैं। एक स्पष्ट यह है कि यह अलग-अलग .NET प्रोजेक्ट में उचित घटकीकरण का समर्थन करता है और प्रोत्साहित करता है और इस प्रकार 100% परीक्षण कवरेज को प्रोत्साहित करके अच्छे TDD का समर्थन करता है। बल्ले से सही मैं कुछ समस्याओं को नोटिस करता हूं जिन्हें आप संबोधित कर सकते हैं।

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

अन्य निर्देशिकाओं के आउटपुट के लिए द्विआधारी संदर्भ एक अच्छा दृष्टिकोण नहीं है, और जब परियोजना संदर्भों के साथ भी अंतर होता है तो एक बुरा दृष्टिकोण बन जाता है। एक या दूसरे को करने की कोशिश करें, बहुत कम से कम स्थिरता के लिए प्रोजेक्ट रेफ़रेंस के लिए अपने बाइनरी संदर्भों को अधिमानतः बदल दें। इस बिंदु पर प्रत्येक समाधान एकल निर्माण योग्य एप्लिकेशन या एप्लिकेशन स्तरीय का प्रतिनिधित्व कर सकता है, (जैसे। SuperApp.sln, OtherAppServices.sln, OtherAppPresentationTier.sln)।

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

तैनाती तब एक साधारण बैच, शक्तियां या पर्ल स्क्रिप्ट के साथ की जा सकती है। यह अनिवार्य रूप से उपयुक्त समाधान या मास्टर समाधान का निर्माण करेगा और फिर उपयुक्त वातावरण में सब कुछ तैनात करेगा। अगर सही किया जाए तो इसे आसानी से किसी भी सीआई सर्वर में एकीकृत किया जा सकता है।

• अलग तैनाती कलाकृतियों के बीच व्यापार तर्क साझा करने की सुविधा कैसे प्रदान करें

सामान्य व्यावसायिक तर्क के लिए एक परियोजना बनाएं या अधिक वैश्विक या सार्वभौमिक व्यावसायिक तर्क के लिए चिंताओं का बेहतर पृथक्करण करें। सभी तैनाती योग्य समाधान जो इसे संदर्भित करना चाहते हैं, उन्हें परियोजना संदर्भ द्वारा ऐसा करना चाहिए।

TFS में अपने कोड को व्यवस्थित करने में, डायरेक्टरी ट्री में सामान्य या साझा प्रोजेक्ट्स को उच्च स्तर पर रखकर इसे प्राप्त करना आसान हो जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.