क्या एक कंट्रोलर फंक्शन को दूसरे कंट्रोलर से कॉल करना अच्छा है?


23

मेरे पास एक मामला है जहां मैं एक नियंत्रक में खोज के तर्क को संभाल रहा हूं और मैं खोज के आधार पर कुछ डेटा उत्पन्न कर रहा हूं और आंकड़े के रूप में वापस आ रहा हूं।

क्या एक अच्छा अभ्यास एक नियंत्रक फ़ंक्शन को दूसरे नियंत्रक से कॉल करना है? या दो नियंत्रकों को कभी 'बात' नहीं करनी चाहिए?

जवाबों:


24

यह बल्कि अजीब है, हालांकि उत्तर उस भाषा / रूपरेखा पर निर्भर करता है जिसका आप उपयोग करते हैं, क्योंकि विभिन्न भाषाओं / रूपरेखाओं में MVC के अलग-अलग दृष्टिकोण हैं।

सामान्य तौर पर, आप एक से एक नियंत्रक का उपयोग नहीं करेंगे:

  • नियंत्रक आमतौर पर MVC फ्रेमवर्क द्वारा उपयोग किए जाने वाले एक प्रकार का परिणाम देते हैं। इस परिणाम में आपको एक कॉल करने वाले के रूप में बहुत सी जानकारी होती है, ज़रूरत नहीं है (जैसे कि देखने का नाम), और हमेशा उस जानकारी को प्राप्त करना आसान नहीं है जिसे आप रुचि रखते हैं (आपके मामले में) मॉडल, अगर मुझे सही लगता है)।

  • नियंत्रकों को व्यवसाय कोड से प्रारंभ करना आसान नहीं है, क्योंकि उन्हें अक्सर HTTP अनुरोध और संदर्भ के बारे में कुछ मात्रा में जानकारी की आवश्यकता होती है। यह सभी जानकारी एमवीसी ढांचे द्वारा पारित होने की उम्मीद है।

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

MVC में नियंत्रक की भूमिका, प्रक्रिया को ऑर्केस्ट्रेट करना है:

  • अनुरोध से संबंधित इनपुट प्राप्त करें,
  • सत्यापनकर्ताओं को इनपुट को मान्य / स्वीकृत करने के कार्य के लिए प्रतिनिधि,
  • व्यापार परत के प्रासंगिक तरीकों को बुलाओ,
  • परिणामस्वरूप मॉडल और दृश्य को MVC फ्रेमवर्क दें।

नियंत्रक की भूमिका व्यावसायिक तर्क से निपटने के लिए नहीं है।

एक बार कोड व्यावसायिक स्तर पर चला गया, तो आप एक खोज इंटरफ़ेस प्रदान कर सकते हैं जो एक स्पष्ट, सीधे तरीके से पुन: प्रयोज्य हो सकता है, एक नियंत्रक दूसरे से उपयोग किए जाने के विपरीत।


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

दुर्भाग्य से, मैंने लारवेल का उपयोग कभी नहीं किया है। इसके अलावा, मुझे लगता है कि उत्तर रूपरेखा के बजाय आपके आवेदन की वास्तुकला पर अधिक निर्भर करेगा।
आर्सेनी मौरज़ेंको

मान लें कि आप http फ़ोल्डर में अपने रूट प्रोजेक्ट के साथ एक स्तर पर हैं। आप यहां अनुबंध नाम की फोल्डर बना सकते हैं और आपकी सभी फाइलें जो कि आप यहां रख सकते हैं, इंटरफ़ेस के रूप में कार्य करती हैं
फारिस रेहान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.