2009-03-30 9 views
7

मेरी कंपनी में बहस चल रही है। कुछविभिन्न असेंबली में आवेदन परतों को विभाजित करना

  • डिस्कवरिबिलिटी उद्देश्यों के लिए एक असेंबली में व्यवसाय, डेटा और व्यावसायिक संस्थाओं को आगे बढ़ाने की वकालत कर रहे हैं। जो भी आप ढूंढ रहे हैं उसे ढूंढना आसान बनाएं।
  • dll की संख्या हम

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

कृपया ध्यान दें कि

  • हमारा व्यापार और डेटा परतों दोनों कॉम + घटकों से मिलकर बनता है।
  • हमारे वर्तमान हार्डवेयर आर्किटेक्चर में एक ही बॉक्स पर वेब, व्यवसाय और डेटा है।
  • एसक्यूएल एक अलग बॉक्स पर।
  • हम वर्तमान में डीएलएल संस्करण का उपयोग नहीं कर रहे हैं क्योंकि यह ज्यादातर कॉम + वैसे भी बेकार है।

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

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

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

क्या मुझे इस आम मुद्दे पर कुछ बाहरी परिप्रेक्ष्य मिल सकता है?

धन्यवाद!

उत्तर

4

डीएलएल या असेंबली वितरण की इकाइयां हैं।

  1. यदि किसी विशेष नामस्थान या कक्षा में कोड किसी अन्य नामस्थान या कक्षा के साथ इतना कसकर जोड़ता है तो यह वितरण की एक ही इकाई में होना चाहिए। यदि foo। * फ़ाइल में कोड बार में कोड की आवश्यकता के बिना कभी भी उपयोग नहीं किया जाएगा। * फ़ाइल तो आप उन्हें वितरण की एक ही इकाई में भी बना सकते हैं।
  2. यदि कक्षाओं का नामस्थान या समूह एक पुन: प्रयोज्य घटक का प्रतिनिधित्व करता है (यानी वह कोड दो या दो से अधिक उत्पादों/अनुप्रयोगों में उपयोग किया जा रहा है) तो यह अलग-अलग संस्करण होने और वितरण की अपनी इकाई होने का एक अच्छा उम्मीदवार है।

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

1

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

हम उस असेंबली में कोड को फेंकने के हमारे रास्ते से बाहर नहीं जाते हैं, जिसमें यह शामिल नहीं है। लेकिन हम निश्चित रूप से ऐसा करने के ठोस कारण के बिना एक नई असेंबली नहीं बनाते हैं। आम तौर पर हमारे पास एप्लिकेशन के साझा तर्क (व्यावसायिक वस्तुएं, आदि) और उपयोगकर्ता इंटरफ़ेस (वेब ​​असेंबली, WinForms असेंबली, आदि) के लिए एक असेंबली के लिए एक असेंबली है। हम एक नई असेंबली बनाने से बचने के लिए असेंबली के बीच कोड/कक्षाओं को डुप्लिकेट नहीं करते हैं।

2

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

वहां से, असेंबली को उन चीज़ों को कम करने का प्रयास करें जो स्वतंत्र रूप से संस्करण को समझते हैं। यदि आपको हमेशा 10 से अधिक असेंबली एक साथ कॉपी करना है, तो शायद उन्हें एक के रूप में बनाया जाना चाहिए।

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