मुझे लगता है कि यह विशिष्ट परियोजना पर निर्भर करता है।
उदाहरण के लिए, यदि अलग-अलग व्यावसायिक डोमेन एक दूसरे से पूरी तरह से स्वतंत्र हैं, तो मैं व्यवसाय डोमेन द्वारा व्यवस्थित करूँगा।
लेकिन अगर व्यापार डोमेन के बीच साझा कोड है, या यों कहें, व्यापार डोमेन एक ही कोड आधार के विभिन्न संस्करण हैं , तो तकनीकी डोमेन द्वारा व्यवस्थित करना अधिक तर्कसंगत लगता है। और यदि आप किसी भी प्रकार की ऑब्जेक्ट ओरिएंटेड भाषा का उपयोग करते हैं, तो आप अपने जेनेरिक कंट्रोलर, मॉडल आदि को अपने व्यापार-विशिष्ट फाइलों में उन्हें पतला बनाने के लिए संभवत: उपवर्ग कर सकते हैं।
दो-स्ट्रिप आउट साझा कोड के बीच एक (सुनहरा) मध्य-मार्ग भी है, यह स्वयं का डोमेन है और अन्य डोमेन में इसका उपयोग करते हैं। यह आपको आपकी आंत की भावना से संचालित लेआउट देता है, लेकिन व्यापार डोमेन के बीच साझा कोड की अनुमति देता है।
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
पुनश्च। मुझे लगता है कि ज्यादातर फ्रेमवर्क तकनीकी डोमेन द्वारा व्यवस्थित होते हैं, क्योंकि वे यह अपेक्षा करते हैं कि आप अलग-अलग व्यावसायिक डोमेन को एकल प्रोजेक्ट में मिलाते हैं, यदि आपने कोड साझा किया है और अन्यथा अलग-अलग प्रोजेक्ट बनाएंगे।
संपादित करें:
उदाहरण के लिए, मान लीजिए कि एक वेब ऐप है जो किसी कंपनी के गोदाम को संभालती है। जेनेरिक रूप में यह कई कंपनियों के लिए लागू हो सकता है, लेकिन उनमें से प्रत्येक के पास कुछ बारीकियां हो सकती हैं जो पूरी नहीं हुई हैं और खरीदने के लिए मना किया है। जैसे उनमें से एक ने फोर्कलिफ्ट्स को टैबलेट तैनात किया है और उनके लिए विशेष दृश्य की आवश्यकता है, जबकि एक और चाहता है। दो के डिफ़ॉल्ट के बजाय तीन स्तरों में आइटम व्यवस्थित करने के लिए।
आप निश्चित रूप से इनमें से प्रत्येक कंपनी के लिए परियोजना को कांटा कर सकते हैं। लेकिन अगर फ्रेमवर्क / भाषा अनुमति देती है, तो आप प्रत्येक ग्राहक की जरूरतों के लिए जेनेरिक प्रोजेक्ट के बिट्स और टुकड़ों को कस्टमाइज़ करने के लिए सबक्लासिंग या प्लगइन्स आदि का उपयोग कर सकते हैं और उन्हें बिजनेस डोमेन लेआउट में व्यवस्थित कर सकते हैं।
उदाहरण के लिए, यदि जेनेरिक प्रोजेक्ट केवल आइटम JSON को ही निर्यात करता है, तो डोमेन 1 नियंत्रक को उप-वर्ग कर सकता है और इसे हाल ही में वितरण की समस्याओं को भी निर्यात कर सकता है।
और अगर आपको बाद में पता चलता है कि Domain1 में एक घटक है जो Domain2 के लिए भी मान्य है, तो आप इसके साझा संस्करण को साझा कर सकते हैं।
जैसा कि आपने कहा, तकनीकी डोमेन द्वारा कई रूपरेखाएं व्यवस्थित की जाती हैं और यही मैंने अभी के लिए उपयोग किया है, सिर्फ इसलिए कि मेरी पसंद का एफडब्ल्यू इसे आसान बनाता है। लेकिन कोहनी-ग्रीस के एक छोटे से (या बहुत) के साथ, मुझे लगता है कि मैं व्यापार पथ लेआउट का भी समर्थन करने के लिए शामिल पथों को फिर से लिख सकता हूं।