2009-08-17 8 views
5

यह पोस्ट in MVC/MVP/MVPC where do you put your business logic? के समान है, लेकिन मैं अधिक जानकारी के लिए देख रहा हूं। मैंने मॉडल में उस स्थान के रूप में खरीदा है जहां व्यापार तर्क का विशाल बहुमत निवास करना चाहिए। हालांकि, जहां तक ​​मैं समझता हूं, मॉडल में इसके अंदर बहुत कुछ चल रहा है: आवेदन राज्य प्रबंधन, डेटा दृढ़ता, भंडार, डेटा स्थानांतरण वस्तुओं, और संभवतः अन्य सामान।एमवीसी/एमवीपी/एमवीवीएम - व्यवसाय तर्क को व्यवस्थित करने के लिए कैसे करें

मेरे पास एक ऐसा एप्लिकेशन है जिसमें सुपर जटिल व्यवसाय नियम हैं। जब उपयोगकर्ता किसी दृश्य में एक निश्चित कार्रवाई करने का प्रयास करता है, तो लगभग 20 अलग-अलग नियम होते हैं जिन्हें सत्यापित करना चाहिए कि क्या कार्रवाई की अनुमति दी जानी चाहिए, या क्या उपयोगकर्ता को अतिरिक्त जानकारी के लिए संकेत दिया जाना चाहिए। मैं टेस्टेबिलिटी और दस्तावेज़ीकरण का समर्थन करने के लिए इन व्यवसाय नियमों को एक-प्रति-विधि कोड करना चाहता हूं। क्या ये नियम एक भंडार वर्ग में होना चाहिए? शायद भंडारों के ऊपर एक सेवा परत में? यह ध्यान में रखते हुए सबसे अच्छा अभ्यास क्या है कि मैं लिंक से SQL, EF, या nHibernate जैसे ओआरएम समाधान का उपयोग कर रहा हूं?

उत्तर

-2

यदि वे व्यवसाय नियम हैं, तो मैं उन्हें डेटाबेस तालिका में रखूंगा ताकि उन्हें बदलना आसान हो।

कोड स्वयं व्यापार-नियम बेवकूफ है और नियमों की सामग्री की परवाह नहीं करता है, केवल नियम कंटेनर की संरचना।

नीचे दी गई टिप्पणियों के बारे में, यदि आपको किसी अन्य कारण से कोड-केंद्रित एक के लिए अपना दृष्टिकोण सीमित करने की आवश्यकता है, तो यह ठीक है, यह परियोजना को और अधिक महंगा बनाता है।

नियम जितना अधिक जटिल हैं, उतना ही आपको हार्ड-कोडेड के बजाय टेबल-संचालित होने से लाभ होता है। यदि आप इसका उपयोग नहीं कर रहे हैं, तो कठिन भाग नियमों के लिए मॉडल के साथ आ सकता है। मॉडल के निर्माण के बाद, विकास सरल है।

+0

मैं जवाब की सराहना करते हैं, लेकिन मैं NUnit या किसी अन्य परीक्षण ढांचे, के साथ इन तरीकों का परीक्षण करने में सक्षम होना चाहते और नियमों डाल डेटाबेस में यह और अधिक कठिन बना देगा। – Andy

+3

साथ ही, इन नियमों की जटिलता के साथ, डेटाबेस में उन सभी को प्रबंधित करना बेहद मुश्किल हो जाएगा। – Andy

1

सबसे पहले, यह मत भूलना कि एमवीपी में, आपके पास दृश्य में राज्य को बनाए रखने की क्षमता है, इसलिए मॉडल में यह एक कम चीज है।

दोनों भंडार और सेवा परत दृष्टिकोण लागू हो सकते हैं। मुझे लगता है कि मैं दो परीक्षण ऐप्स का उपयोग करके समानांतर में दोनों का पता लगाने के लिए लुभाना चाहता हूं। जैसे ही आप जाते हैं, आपको शायद यह महसूस हो जाएगा कि एक दूसरे की तुलना में अधिक उपयुक्त है, जिस बिंदु पर आप सही दृष्टिकोण पर ध्यान केंद्रित कर सकते हैं।

यह बर्बाद प्रयास की तरह लग सकता है, लेकिन विकास शुरू होने के बाद यह दृष्टिकोण स्विच करने के प्रयास से बहुत कम होगा।

1

होने में कैसे CSLA.NET संभालती व्यापार के नियम दिलचस्प हो सकता है एक नज़र: http://www.lhotka.net/cslanet/

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