2013-04-14 4 views
6

रॉबर्ट सी मार्टिन स्वच्छ वास्तुकला के बारे में उनकी एक वार्ता में खुले तौर पर चीजों को करने के काफी मानक तरीके की आलोचना करते हैं। Robert C. Martin - Clean Architecture and Designशीर्ष स्तर की निर्देशिका संरचना एप्लिकेशन के उद्देश्य को कैसे प्रकट कर सकती है?

क्या मैं standard way के रूप में समझ में कुछ इस तरह है:

solution 
    - UI project 
     - Models 
     - Views 
     - Controllers 
     - Assets 
    - Logic project 
    - Data project 

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

उत्तर

2

जो मैं आपके उदाहरण में देखता हूं उससे मैं केवल अनुमान लगा सकता हूं कि यह एक एएसपी.नेट एमवीसी एप्लीकेशन है, हमें यह समझने के लिए Logic या Data परियोजनाओं को देखने की आवश्यकता है।

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

अब, रॉबर्ट सी मार्टिन हमें क्या बताता है कि हमारी शीर्ष स्तर की निर्देशिका संरचना को यह दर्शाता है कि एप्लिकेशन क्या करता है और यह कैसे बनाया गया है। मुझे यकीन नहीं है कि समाधान स्तर पर ऐसा करना एक अच्छा विचार है। हालांकि, मैं हमेशा Domain प्रोजेक्ट रखने की अनुशंसा करता हूं कि हम Domain Driver Design सिद्धांतों को लागू कर सकें।

ऐसे डोमेन परियोजना में आप रूट स्तर पर निम्न फ़ोल्डरों को देखते हैं:

Clients 
Orders 
Billing 
Shipping 
Promotions 
... 

आप अनुमान लगा सकता है यह ई-कॉमर्स आवेदन किसी तरह का है। यदि आपको मिले फ़ोल्डर्स Models, DTOs या Exceptions जैसे निर्देशिका फ़ोल्डर में आपको गहराई से जाना होगा।

मुझे अपने समाधान में बहुत अधिक परियोजनाएं नहीं हैं (यदि संभव हो तो 10 से कम) तो मैं नहीं जाता और अपने सिस्टम के प्रति डोमेन ऑब्जेक्ट को एक प्रोजेक्ट नहीं बनाता। यही कारण है कि मुझे लगता है कि परियोजनाओं का मूल स्तर समाधान नहीं है, हमें यह निर्धारित करने पर ध्यान देना चाहिए कि आवेदन क्या कर रहा है।

+0

हां, यह एक ऐसा उत्तर है जिसका मैं उम्मीद कर रहा था। धन्यवाद, निश्चित रूप से +1। – walther

0

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

+0

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

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