हम ASP.NET MVC में एक काफी बड़े मानव संसाधन आवेदन का निर्माण कर रहे हैं, और अब तक हमारे नियंत्रकों काफी बड़े होते जा रहे हैं। उदाहरण के लिए, हमारे पास कर्मचारी नियंत्रक है, और सभी कर्मचारी विचार शामिल हैं (व्यक्तिगत जानकारी, कर्मचारी कटौती, आश्रित, आदि)। इनमें से प्रत्येक विचार में कई क्रियाएं या सबव्यूव हो सकते हैं (उदा। सीआरयूडी)। प्रत्येक कार्रवाई अपेक्षाकृत छोटी है, लेकिन नियंत्रकों के दर्जनों कार्य हो सकते हैं।एमवीसी में विशाल नियंत्रक, या कई नियंत्रक होने के लिए बेहतर है?
वहाँ बंटवारे नियंत्रकों के लिए किसी भी सर्वोत्तम प्रथाओं हैं? इसके बजाय विचारों के दर्जनों के साथ एक कर्मचारी नियंत्रक होने के, यह बेहतर भी प्रत्येक उप-प्रकार (अर्थात EmployeePersonalInfoController, EmployeeDeductionController, EmployeeDependentController) के लिए एक नियंत्रक है हो सकता है?
और अंत में, यह और भी फर्क पड़ता है?
अपडेट किया गया स्पष्टीकरण
मेरी मूल चिंता CRUD कार्यों के साथ किया गया था। उदाहरण के लिए, EmployeeController में के बनाने और हटाने पर विचार करते हैं ...
वर्तमान कार्य:
CreateEmployee()
DeleteEmployee()
CreateEmployeeDeduction()
DeleteEmployeeDeduction()
CreateDependent()
DeleteDependent()
etc.
तो नियंत्रकों विभाजित किया गया:
EmployeeController
Create()
Delete()
EmployeeDeductionController
Create()
Delete()
EmployeeDependentController
Create()
Delete()
EmployeeBenefitController
Create()
Delete()
etc.
1 परिदृश्य में, हमारे ~ 100 स्क्रीन 8-10 बड़े नियंत्रकों में विभाजित हो जाते हैं। दूसरे में, शायद मेरे पास ~ 50 नियंत्रक होंगे।
सुनिश्चित नहीं है कि "उपप्रकार" मेरे हिस्से पर सबसे अच्छा शब्द था। मैं उन क्षेत्रों को लागू नहीं करूँगा (उन्हें फ़ोल्डर्स में समूहित करना), बस उनमें से अधिक बनाना। मैं स्पष्टीकरण के लिए कुछ प्रकार के उदाहरण के साथ प्रश्न अपडेट करूंगा। धन्यवाद। –
वास्तविकता, व्यावहारिक रूप से, यह है कि एमवीसी नियंत्रक केवल विचार प्रस्तुत करने से अधिक करते हैं। कम से कम, आपको प्रत्येक पृष्ठ के लिए अलग-अलग प्राप्त करने और पोस्ट हैंडलर की आवश्यकता होती है। प्रत्येक को अलग-अलग इनपुट की आवश्यकता होती है। यदि आप भाग्यशाली हैं, तो आपके द्वारा प्रस्तुत दृश्य मॉडल एक ही दृश्य मॉडल है जो वापस पोस्ट हो जाता है। एक पोस्ट में, आपके नियंत्रक को कम से कम अपने व्यापार तर्क परत को पास करने के लिए दृश्य मॉडल को डीटीओ में अनपैक करना होगा, और आपको शायद उस पर कुछ प्रकार का परिवर्तन करना होगा, क्योंकि उपयोगकर्ता से डेटा का तार्किक टूटना यह आवश्यक नहीं है कि व्यापार तर्क परत को क्या भेजा गया हो। – Triynko
प्रसंस्करण के लिए व्यवसाय परत पर डेटा पास करने के बाद, नियंत्रक को सफलता या विफलता की स्थिति को संसाधित करना होता है। विफलता पर, यदि आपके पास कस्टम डेटा मॉडल है (उदाहरण के लिए JSON स्ट्रिंग के रूप में डेटा प्रस्तुत करना), तो अंतर्निहित मॉडल स्थिति बेकार है, और आपको यह सुनिश्चित करने के लिए अन्य कदम उठाने होंगे कि उपयोगकर्ता द्वारा पोस्ट किया गया क्या है प्रदर्शन में प्रस्तुत किया। सफलता पर, आपको यह तय करने की आवश्यकता है कि उपयोगकर्ता को कहां भेजना है। यह सब गैर-तुच्छ है, और यह अभी भी आपके नियंत्रक में व्यावसायिक तर्क डालने के मूल नियम का पालन नहीं करता है। नियंत्रक उतना आसान नहीं हैं जितना लोग उन्हें बाहर कर रहे हैं। – Triynko