2012-08-24 18 views
7

मैं निर्णय लेने की कोशिश कर रहा हूं, Grails सर्वोत्तम प्रथाओं और एमवीसी पैटर्न के अनुसार, सेवा शुरू करने का सही समय कब है और फ़ैटनिंग नियंत्रक नहीं रखता है। मुझे यह कुछ हद तक विरोधाभासी लगता है, जो मैंने सर्वोत्तम प्रथाओं के बारे में पढ़ा है और जो आम प्रथा प्रतीत होता है, इसलिए यह सुनना अच्छा लगेगा कि दूसरों के बारे में क्या सोचते हैं।Grails GORM कॉल सेवा में नहीं होना चाहिए और नियंत्रक परत नहीं होना चाहिए?

जीओआरएम के साथ दिमाग में कॉल करने के साथ, मुझे उम्मीद थी कि जीओआरएम के साथ कुछ भी करना वास्तव में एक सेवा में जाना चाहिए। हालांकि मैं इसे स्वयं नहीं मानता, खासकर जब show जैसे बहुत ही बुनियादी नियंत्रक विधियों को लिखते हैं जो डोमेन क्लास पर get() निष्पादित करते हैं और फिर पुनर्प्राप्त ऑब्जेक्ट का विवरण दिखाने के लिए दृश्य प्रस्तुत करते हैं।

हालांकि, 'स्वच्छ कोड' और इसी तरह की किताबों जैसी किताबों के बाद, अच्छी तरह से बनाए रखा कोड एकजुट होना चाहिए और विधियों को आदर्श रूप से केवल एक ही कार्य करना चाहिए। तो सही दुनिया में, क्या एक नियंत्रक में शो विधि केवल दृश्य प्रस्तुत करने से पहले प्रदर्शित करने के लिए ऑब्जेक्ट को निर्धारित करने के लिए ज़िम्मेदार होगी? डेटाबेस से पुनर्प्राप्ति डेटाबेस में एक विधि में जा सकती है, जिसका एकमात्र कार्य डीबी से पुनर्प्राप्त करना है और यदि नहीं मिला तो अपवाद फेंकना है।

लेकिन हां, यह कुछ हद तक अधिक लगता है।

तो चरण थोड़ा आगे लेना, create() या update() विधियां। फिर वर्तमान में Grails 'जेनरेट कोड सब कुछ नियंत्रक में डालता है, किसी भी सेवा का कोई उपयोग नहीं।

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

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

उत्तर

3

हम प्रश्नों को संपुटित करने के लिए डोमेन कक्षा में स्थिर तरीकों बना रहे हैं। सेवा केवल लेनदेन संबंधी परिचालनों या एकाधिक डोमेन इंटरैक्शन के साथ बहुत जटिल प्रश्नों के लिए उपयोग की जाती है। नियंत्रक बस डोमेन या सेवाओं के तरीकों को कॉल करते हैं।

+0

आपकी इनपुट के लिए धन्यवाद – Dave

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