मैं अपने पहले Grails एप्लिकेशन पर काम कर रहा हूं, जिसमें पुराने स्ट्रैट्स वेब एप्लिकेशंस पर पोर्टिंग शामिल है। बहुत सारी मौजूदा कार्यक्षमताएं हैं, और जैसे-जैसे मैं चीजों को स्थानांतरित करता हूं, मुझे वास्तव में कठिन समय लगता है कि सेवा में क्या जाना चाहिए और मॉडल पर सीधे क्या शामिल किया जाना चाहिए?डोमेन क्लास में कौन सा तर्क जाना चाहिए और Grails में किसी सेवा में क्या जाना चाहिए?
रेल विकास पर ज्यादातर रूबी की पृष्ठभूमि से आ रहा है, मुझे लगता है कि यह डोमेन वर्ग में लगभग हर चीज डालने के लिए दृढ़ता से इच्छुक है। लेकिन, एक आवेदन के साथ जितना बड़ा मैं पोर्टिंग कर रहा हूं, कुछ वर्ग हजारों लाइनों पर लंबे समय तक खत्म हो जाएंगे।
आप कैसे तय करते हैं कि डोमेन में क्या होना चाहिए इसके विपरीत सेवा में क्या जाना चाहिए? क्या कोई स्थापित सर्वोत्तम प्रथाएं हैं? मैंने कुछ देखा है, लेकिन ज्यादातर लोग इस मुद्दे को स्वीकार करते हैं।
डोमेन पर होने वाली विधियों को स्पॉट करने का एक अच्छा तरीका यह है कि यदि आपके पास एक डोमेन क्लास को एकमात्र तर्क के रूप में पारित किया गया है तो वह विधि शायद डोमेन पर संबंधित है। मैं @ cdeszaq के उत्तर पर भी विस्तार करूंगा और यह भी कहूंगा कि यदि आप किसी डोमेन क्लास के एक से अधिक 'इंस्टेंस' से निपट रहे हैं, तो इसे एक सेवा में रखें। उदाहरण के लिए यदि आप एक विशिष्ट वर्ग के कई उदाहरणों को बदल रहे हैं तो मैं इसे एक सेवा में डाल दूंगा। आम तौर पर, अपने सर्वोत्तम निर्णय का उपयोग करें, अपनी टीम से उन तरीकों के बारे में बात करें जिनके बारे में आप अनिश्चित हैं कि वे कहां हैं। –
उनमें से दोनों बहुत अच्छे अंक हैं। – cdeszaq
बस इसमें जोड़ना है कि सेवा विधियां डिफ़ॉल्ट लेनदेन से हैं: http://grails.org/doc/latest/guide/services.html#transactionsRollbackAndTheession – Steve