मैं रेलवे पर अपनी पहली बड़ी परियोजना के साथ शुरू करने वाला एक एएसपी.नेट एमवीसी डेवलपर हूं, हालांकि मैं उलझन में हूं कि आपके व्यवसाय तर्क कहां रखा जाए? एएसपी.नेट पर मैं एक पुस्तकालय बनाता हूं जिसमें सेवाएं (डोमेन संचालित डिज़ाइन) शामिल है जो व्यवसाय तर्क को संभालती है, मैंने सुना है कि रेल वसा मॉडल पतला नियंत्रक की अवधारणा का उपयोग करती हैं लेकिन मेरे पास एएसपी.नेट में कुछ परियोजनाएं हैं जो सभी तर्क जोड़ती हैं नियंत्रक एक बड़ी गड़बड़ी पैदा करेगा, क्या कोई और तरीका है?व्यापार तर्क रेल में कहां जाता है?
उत्तर
फैटमोडल्स और स्कीनीकंट्रोलर की अवधारणा के साथ जाएं। आपके मॉडल को पता होना चाहिए कि वे कैसे व्यवहार करते हैं और उन्हें क्या करना चाहिए।
जब आपके मॉडल बहुत मोटा हो जाते हैं, उन्हें फिर से उपयोग करने योग्य मॉड्यूल में निकालें और उन्हें अपने मॉड्यूल में शामिल करें।
- Example of taking a fat controller (with logic) and moving to a model
- Example of taking code from the views and moving into the model
आप आसानी से RSpec (या परीक्षा/इकाई या चाहिये) का उपयोग कर मॉडल के व्यवहार का परीक्षण कर सकते हैं। फिर आप परीक्षण कर सकते हैं कि एप्लिकेशन ककड़ी का उपयोग करके सही ढंग से व्यवहार करता है।
हाय भविष्य पाठक! उपर्युक्त समझ में आता है, बल्कि आपके मॉडल को फ़ैटन करना जारी रखें, http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ –
I देखें। https://github.com/orgsync/active_interaction बहुत ही आशाजनक खोजें। –
आप कहीं भी व्यवसाय तर्क डाल सकते हैं (यहां तक कि विचारों में! हालांकि यह एक बुरा विचार है)।
मैं कहूंगा कि तर्क वास्तविक दुनिया की वस्तु से जुड़ा हुआ है, फिर इसे मॉडल पर रखें। अन्यथा, नियंत्रक का उपयोग करें। लेकिन यह आपके लिए निर्भर है कि यह आपके ऐप के लिए कैसे करें। मॉडल मॉडलिंग चीजों के लिए हैं, और नियंत्रक चीजों को नियंत्रित करने के लिए हैं।
"व्यापार तर्क" या कुछ इसे "डोमेन तर्क" कह सकते हैं, रेल और/या आपके .NET MVC प्रोजेक्ट के पास कहीं भी नहीं है। रेल और एमवीसी आपके डोमेन पर अन्य तरीकों से निर्भर नहीं होना चाहिए। मैं जेफरी पालेर्मो से प्याज आर्किटेक्चर पर पढ़ने की सलाह दूंगा या रॉबर्ट मार्टिन द्वारा "आर्किटेक्चर द लॉस्ट इयर्स" देखें। (मुझे लगता है कि वैसे भी वह बात है)। इसके मुकाबले शायद अधिक संसाधन हैं, लेकिन आप बाद में तीसरे पक्ष के ढांचे की तरह रेल और .NET एमवीसी दोनों के इलाज के लिए धन्यवाद देंगे, न कि आपके आवेदन का मुख्य घर।
मैंने इस बात को देखा है और इस विचार को कई बार व्यक्त किया है, लेकिन मैंने कभी भी एक ठोस उदाहरण या प्रदर्शन को हासिल करने के तरीके को कभी नहीं देखा है। एक नौसिखिया के रूप में, यह सिद्धांत रूप में समझ में आता है, लेकिन मैं वास्तव में कल्पना नहीं कर सकता कि इसे अभ्यास में कैसे लाया जाए। क्या आपके पास रेल ऐप का एक उदाहरण है जो इस अभ्यास का पालन करता है जिसे मैं देख सकता हूं, या एक अधिक ठोस उदाहरण वाला आलेख? –
मुझे लगता है कि इस ब्लॉग लेख रेल ढांचे में साथ डोमेन संचालित डिजाइन को शामिल करने की एक रणनीति का एक अच्छा सिंहावलोकन प्रदान करता है: http://www.smashingboxes.com/domain-logic-in-rails/
टी एल; खजाने में अपने क्लासिक रेल मॉडल refactor, और एक का उपयोग डॉ
नियंत्रक में मुखौटा परत अपने डोमेन मॉडल के साथ बातचीत करने के लिए।
मैं इस छोटे से स्वयं के साथ संघर्ष कर रहा हूं, और जितना मोटा नियंत्रक पैटर्न प्रबल होता है, सॉफ़्टवेयर में "वसा" कुछ भी एक गंध प्रतीत होता है, जो एक जिम्मेदारी का उल्लंघन करता है।
"व्यापार तर्क" से आपका क्या मतलब है? – sethvargo
आप मॉड्यूल बनाने और उन्हें अपनी lib निर्देशिका में डालने का प्रयास भी कर सकते हैं – stephenmurdoch