में व्यावसायिक तर्क कहां रखा जाए, मैं आसानी से रखरखाव योग्य और टेस्टेबल आर्किटेक्चर बनाने का सबसे अच्छा तरीका जानने की कोशिश कर रहा हूं। कई परियोजनाओं के माध्यम से जाने के बाद, मैंने कुछ बहुत खराब वास्तुकला देखी हैं और मैं अपनी परियोजनाओं पर भविष्य की गलतियों को टालना चाहता हूं।डीडीडी
मान लें कि मैं एक काफी जटिल तीन परत अनुप्रयोग का निर्माण कर रहा हूं और मैं डीडीडी का उपयोग करना चाहता हूं। मेरा सवाल है, मुझे अपना व्यवसाय तर्क कहां रखना चाहिए? कुछ लोग कहते हैं कि इसे सेवाओं (सेवा परत) में रखा जाना चाहिए और यह समझ में आता है। एकल जिम्मेदारी सिद्धांत का पालन करने वाली कई सेवाएं होने से समझ में आता है।
हालांकि, कुछ लोगों ने कहा कि यह एक विरोधी पैटर्न है और सेवा तर्क में व्यावसायिक तर्क लागू नहीं किया जाना चाहिए। ऐसा क्यों है?
मान लें कि हमारे पास IAuthenticationService
है जिसमें bool UsernameAvailable(string username)
हस्ताक्षर के साथ एक विधि है। विधि यह सुनिश्चित करने के लिए सभी आवश्यक तर्क लागू करेगी कि उपयोगकर्ता नाम उपलब्ध है या नहीं।
"यह एक एंटीपेटर्न" भीड़ के अनुसार समस्या क्या है?
मुझे अभी एक एमएसडीएन आलेख मिला है जो कहता है: "एक सेवा परत किसी एप्लिकेशन के डोमेन मॉडल के शीर्ष पर बैठती है और इसके संचालन का एक सेट प्रदान करती है जिसे इसके खिलाफ किया जा सकता है। यह आपको तर्कसंगत बनाने के लिए एक स्थान देता है जो संबंधित है आपका आवेदन लेकिन संभवतः डोमेन मॉडल-तर्क के अंदर नहीं है जो अन्यथा संभवतः नियंत्रक के तरीकों में लीक हो जाता। " ...... मुझे लगता है कि यह एक अलग शब्द में आपने लिखा है। फिर भी, आप कैसे निर्धारित करेंगे कि डोमेन मॉडल के अंदर क्या है और क्या नहीं? – Vex
@Vex: लोगों का मतलब 'सेवा परत' से कई अलग-अलग चीजें हैं, लेकिन यदि आप अपने सभी ** व्यवसाय तर्क ** को अपने डोमेन मॉडल में डालने का प्रयास करते हैं तो आप गलत नहीं जा सकते हैं। (** आवेदन तर्क के विपरीत ** - देखें [यह उत्तर] (http://stackoverflow.com/questions/2475136/how-useful-is-a-pure-mvc-implementation/2479207#2479207) इसके बारे में अधिक जानकारी के लिए वह भेद।) –