कैसे पूरी तरह से मॉड्यूलर वेब अनुप्रयोगों का निर्माण करने के लिए [बंद]


34

आने वाले महीनों में हम एक परियोजना शुरू करने जा रहे हैं, जहाँ हम एक प्रणाली लेते हैं जिसे हमने ग्राहक (v1) के लिए बनाया है और इसे स्क्रैच से फिर से बनाया है। V2 के साथ हमारा लक्ष्य इसे मॉड्यूलर बनाना है, ताकि इस विशिष्ट ग्राहक के पास उनके द्वारा उपयोग किए जाने वाले मॉड्यूल का अपना सेट हो, फिर एक अन्य ग्राहक पूरी तरह से मॉड्यूल के एक अलग सेट का उपयोग कर सकता है। यहां ट्रिक यह है कि कंपनी A में चेकआउट और उपयोगकर्ता मॉड्यूल की एक श्रृंखला हो सकती है जो यह बदलती है कि सिस्टम कैसे काम करता है। कंपनी बी मानक चेकआउट प्रक्रिया के साथ रह सकती है, लेकिन अनुकूलित करें कि उत्पाद कैसे ब्राउज़ किए जाते हैं।

एप्लिकेशन आर्किटेक्चर के लिए कुछ अच्छे दृष्टिकोण क्या हैं जब आप स्क्रैच से एक एप्लिकेशन का निर्माण कर रहे हैं जिसे आप Coreसभी ग्राहकों के बीच साझा करना चाहते हैं, जबकि अभी भी किसी भी क्लाइंट के लिए विशेष रूप से संशोधित होने के लिए लचीलेपन को बनाए रखना है?

मैंने CodeIgniter के हुक देखे हैं और ऐसा नहीं लगता कि यह एक अच्छा समाधान है क्योंकि हम 250 हुक के साथ समाप्त हो सकते हैं और यह अभी भी पर्याप्त लचीला नहीं है। कुछ अन्य उपाय क्या हैं? आदर्श रूप से हमें रेत में एक रेखा खींचने की आवश्यकता नहीं होगी।

जवाबों:


26

उच्च संगठित और विघटित मॉड्यूलरता प्राप्त करने के लिए, आप पदानुक्रमित MVC वास्तुशिल्प पैटर्न का अनुसरण कर सकते हैं , जिसे कभी-कभी प्रस्तुति-अमूर्त-नियंत्रण के रूप में जाना जाता है (हालांकि वे कड़ाई से समान पैटर्न नहीं हैं)। Kohana , मिश्र धातु , प्रवाह और FuelPHP समर्थन HMVC देशी रूप * और Kohana के HMVC दृष्टिकोण में चर्चा की है HMVC साथ स्केलिंग वेब अनुप्रयोग और प्रदर्शन के लिए अनुकूलित HMVC वेब अनुप्रयोग , द्वारा सैम डे Freyssinet

दुर्भाग्य से CodeIgniter मूल रूप से HMVC का समर्थन नहीं करता है। मैंने अपने स्वयं के पुस्तकालयों का निर्माण कोडइग्निटर पर एचएमवीसी समर्थन के कुछ प्रकार प्रदान करने के लिए किया है, जो वायर्डिग्ज़ के कोडिग्निटर-मॉड्यूलर-एक्सटेंशन-एचएमईवीसी से कुछ प्रेरणा ले रहा है । Nettus + पर HMVC के लेख का बहुत अच्छा परिचय है , जो CodeIgniter और wiredesignz के विस्तार पर चर्चा करता है। निम्नलिखित छवि और उद्धरण उस ट्यूटोरियल से हैं:

यहाँ छवि विवरण दर्ज करें

प्रत्येक त्रय एक दूसरे से स्वतंत्र रूप से कार्य करता है। एक ट्रायड अपने नियंत्रकों के माध्यम से दूसरे ट्रायड तक पहुंच का अनुरोध कर सकता है। यदि आवश्यक हो तो ये दोनों बिंदु कई स्थानों पर आवेदन को वितरित करने की अनुमति देते हैं। इसके अलावा, MVC ट्राइएड की लेयरिंग अधिक गहराई और मजबूत अनुप्रयोग विकास के लिए अनुमति देती है। इससे कई फायदे होते हैं जो हमें हमारे अगले बिंदु पर लाते हैं।

अंत में, आप हुक के साथ सही रास्ते पर हैं, भले ही आप HMVC आर्किटेक्चर को अपनाते हैं, कुछ समस्याएं होने वाली हैं जो आपको अभी भी हुक के साथ हल करने की आवश्यकता होगी, आपके कार्यान्वयन और स्वचालन के स्तर के आधार पर जिसे आप खोज रहे हैं । हुक का एक अच्छा उपयोग एक pre_controllerहुक होगा जो सुनिश्चित करेगा कि स्थापित मॉड्यूल के लिए सभी निर्भरताएं मौजूद हैं, उदाहरण के लिए।

* ऐसे अन्य लोग भी हो सकते हैं जिन्हें मैं नहीं जानता।


1
क्या ASP.NET MVC के पास इसके लिए समर्थन है?
रॉबर्ट हार्वे

@ रोबर्टहरिवे का मुझे कोई पता नहीं है ...
yannis

@ रॉबर्ट हार्वे मेरे लिए ऐसा लगता है कि एक फ्रेमवर्क की तुलना में अधिक पैटर्न है। शायद मुझे कुछ याद आ रहा है, लेकिन मैं यह नहीं देख सकता कि मैं ASP.NET MVC में विरासत के साथ ऐसा क्यों नहीं कर सकता।
जेरेमी

3
@ जेरेमी: यह विचारों में मुश्किल हो जाता है, खासकर यदि आप विचारों के कुछ हिस्सों का फिर से उपयोग करना चाहते हैं। यह पेचीदा लग रहा है, लेकिन मुझे नट और बोल्ट स्तर पर कल्पना करना मुश्किल हो रहा है।
रॉबर्ट हार्वे

ऊपर दिए गए आरेख में, ऐसा लगता है कि ऊपरी-स्तरीय विचारों को पदानुक्रम में नीचे स्थित छोटे विचारों से बनाया जा रहा है। वह पहले से ही एक निश्चित सीमा तक किया जा सकता हैRenderAction()
रॉबर्ट हार्वे

5

मैं एक PHP आदमी नहीं हूं, लेकिन जावा-स्क्रिप्ट की तरफ अगर आपके पास बहुत सारे मॉड्यूल हैं, जिन्हें आप यथासंभव स्वतंत्र रखना चाहते हैं, तो इसके लिए कई प्रणालियां हैं, जैसे कि आवश्यकताएँ , जिनके पास जावा-स्क्रिप्ट है मॉड्यूल जो अन्य मॉड्यूल पर निर्भरता की घोषणा करते हैं, और ढांचा यह सुनिश्चित करता है कि वे जरूरत पड़ने पर लोड किए जाते हैं।

बाहर की विभिन्न रूपरेखाएँ इस बात पर निर्भर करती हैं कि निर्भरताएँ कैसे घोषित की जाती हैं, सर्वर पर पेज लोड पर या रिक्वेस्ट पर डायनेमिक रूप से कितना निर्भरता हैंडलिंग किया जाता है, और आपको अपने जावा लिखने के तरीके में कितना बदलाव करना है स्क्रिप्ट।

यदि आपके सर्वर साइड फ्रेमवर्क यह संभाल रहे हैं या आपके लिए आपके जावा-स्क्रिप्ट को उत्पन्न कर रहे हैं तो ये फ्रेमवर्क (या शायद बिल्कुल भी) लागू नहीं होते हैं, लेकिन आप संभवतः अपने जावा-स्क्रिप्ट को अपने सर्वर साइड फ्रेमवर्क से स्वतंत्र होना चाहते हैं।

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


0

यहां मॉड्यूलर डिज़ाइन करने के कुछ निर्देश दिए गए हैं: https://class.coursera.org/saas/lecture/preview/9

यह भी: " SOA एक संगति में देखा जा सकता है, वितरित कंप्यूटिंग और मॉड्यूलर प्रोग्रामिंग की पुरानी अवधारणाओं से , SOA के माध्यम से, और मैशअप की वर्तमान प्रथाओं पर, सास , ..."

HMVC कोड संगठन अपने आप में, जरूरी नहीं कि प्रतिरूपकता को जन्म दे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.