क्या वेब के लिए MVC को छोड़कर कोई डिज़ाइन पैटर्न है?


15

मैं जानना चाहता हूं कि MVC के अलावा वेब के लिए कोई डिज़ाइन पैटर्न हैं?

मुझे पता है कि डिजाइन पैटर्न इस प्रकार हैं: रजिस्ट्री, ऑब्जर्वर, फैक्ट्री, एक्टिवकार्ड, ... और एमवीसी अन्य डिजाइन पैटर्न और फ़ोल्डर संरचना का एक सेट।

क्या MVC जैसा डिज़ाइन पैटर्न अन्य डिज़ाइन पैटर्न का एक सेट है?

संपादित करें: मेरी प्रोग्रामिंग भाषा PHP है।



1
@ श्री-मुकादम, कृपया एक नज़र - meta.stackexchange.com/questions/5234/…
Yusubov

मेरा मानना ​​है कि नीचे दिए गए उत्तर आपके प्रश्न के सभी पहलुओं का जवाब देते हैं। आप सर्वश्रेष्ठ को स्वीकार कर सकते हैं और समुदाय की मदद कर सकते हैं।
अर्पित

एफबी के फ्लक्स पैटर्न के बारे में क्या।
मुहम्मद उमर

देखें पहले भी देखें
नौफल

जवाबों:


25

सॉफ्टवेयर विकास में विभिन्न पैटर्न हैं; MVP, MVVM, MVC, आदि कुछ प्रसिद्ध व्यक्ति हैं। हालाँकि, आपको उस विशिष्ट समस्या या तकनीक को परिभाषित करना होगा जिसे आप हल करने या उपयोग करने का इरादा कर रहे हैं।

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

इनमें से प्रत्येक पैटर्न समस्याओं के कुछ विशिष्ट सेटों को हल करने के लिए अच्छा है। उदाहरण के लिए, MVP (मॉडल व्यू प्रस्तोता) पैटर्न ASP.NET WebForms विकास में चिंताओं को अलग करने में मदद करता है। इसमें वेब पेज से डेटा को अलग-अलग ऑब्जेक्ट में इकट्ठा करने, प्रदर्शित करने और संग्रहीत करने के लिए जिम्मेदारियों को विभाजित करना शामिल है: एक मॉडल ऑब्जेक्ट, एक व्यू ऑब्जेक्ट, और एक प्रस्तोता वस्तु।

डिजाइन पैटर्न का सबसे प्रसिद्ध सामान्य रसोई की किताब गैंग ऑफ फोर (GoF) डिजाइन पैटर्न है

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

संपादित करें: मुझे लगता है कि आप .NET प्लेटफॉर्म पर डिजाइन पैटर्न को लागू करने में अधिक रुचि रखते हैं


1
+1 क्या हम एक पैटर्न के रूप में परिभाषित एमवीसी के साथ रहने वाले हैं, या एक तकनीक है जो जल्द ही या निकट देखेगा यह उत्तराधिकारी है?
स्वतंत्र

6
+1 लेकिन एमवीपी, एमवीवीएम और एमवीसी एक ही विषय के सभी रूपांतर हैं: मॉडल लॉजिक से अलग करना (छ) यूआई और उनके बीच कुछ तृतीय पक्ष (नियंत्रक, प्रस्तुतकर्ता) मध्यस्थता करना।
मार्जन वेनेमा

2
@ मिस्टर-मुकादम: एमवीसी पहले की तरह एक ओवरकिल और जटिल लगता है। यह वह करता है जो आपको करना चाहिए, UI, तर्क और डेटा को अलग करना। सॉफ़्टवेयर विकास में केवल एक चीज सुनिश्चित है, वह है बदलाव। और अंगूठे के एक नियम के रूप में; 20% विकास है, 80% रखरखाव है। उस दृष्टिकोण से, एमवीसी निश्चित रूप से प्रयास के लायक है। यह इसे प्राप्त करने के लिए सबसे बुनियादी पैटर्न भी है, मुझे लगता है।
ब्रूनो स्कैपर

3
@ मिस्टर-मुकादम: नहीं, यह आपकी बहुत मदद करता है, भले ही आप अकेले हों। और विशेष रूप से बड़ी परियोजनाओं में।
ब्रूनो शापेर

1
@ श्री-मोक्कदम जिन्होंने कभी कहा कि एमवीसी एक टीम विकास पैटर्न है? मैं लंबे समय से अकेले पीएचपी का उपयोग कर रहा हूं और एमवीसी मेरे लिए चीजों को बनाए रखने के लिए अनिवार्य है। क्या आपने किसी भी PHP फ्रेमवर्क का उपयोग करने की कोशिश की है?
सोंगो

7

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

अन्य पैटर्न, दूसरों द्वारा नामित, अच्छे विकल्प भी हैं।


मैंने सोचा कि MVC पतली नियंत्रकों का उपयोग कर पदोन्नत किया ?! आप "थिन कंट्रोलर्स एंड फैट मॉडल"
सांगो जूल

तो यह करता है, लेकिन वास्तव में नियंत्रकों में बहुत अधिक वसा होता है।
Jan_V

2
ऐसा इसलिए है क्योंकि आपने डोमेन लॉजिक को नियंत्रकों में डाल दिया है, जो मूल क्रैसनर और पोप प्रकार के एमवीसी का इरादा नहीं था। मूल फैशन में नियंत्रक इनपुट हैंडलिंग के बारे में हैं, जैसे। माउस क्लिक को कनेक्ट करना (X, Y) एक मॉडल ऑपरेशन में समन्वय (जैसे, थर्मोस्टैट ऐप में तापमान में वृद्धि)। उस ने कहा, एमवीसी अर्थों में अधिकांश नियंत्रक परत पूरी तरह से स्वचालित है, और इसलिए, एक रूपरेखा में एप्लिकेशन डेवलपर के लिए अदृश्य है।
आदम

यह फ्लक्स की तरह है
मुहम्मद उमर

4

स्थापित करने के लिए पहली बात यह है कि वास्तव में आपको क्या करने की आवश्यकता है, यह तय करने के लिए कि क्या एक ढांचा और / या एमवीसी (या अन्य डिजाइन पैटर्न) लाभ होगा।

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

PHP के लिए कम से कम MVC / HMVC डिज़ाइन पैटर्न उपलब्ध मुख्यधारा के ढांचे (जैसे Zend , CakePHP , CodeIgniter इत्यादि) पर हावी होने के लिए है , लेकिन कई अलग-अलग डिज़ाइन पैटर्न हैं जिनका कोई भी उपयोग कर सकता है।

एमवीसी इसलिए लोकप्रिय है क्योंकि यह डेटा मॉडलिंग और प्रोसेसिंग लॉजिक को व्यू / प्रेजेंटेशन लेयर से अलग करने का एक स्थापित और समझा तरीका प्रदान करता है (ऐसा कुछ जिसे मजबूत, स्केलेबल एप्लिकेशन के उत्पादन के लिए वांछनीय माना जाता है)।

यह नोट करना महत्वपूर्ण है (और जैसा कि @Marjan Venema द्वारा @ ElYusubov के उत्तर के लिए एक टिप्पणी में व्यक्त किया गया था) कि MVC, MVP, MVVM और अन्य MV x पैटर्न (मूल रूप से कम से कम) सभी एक ही 'डिजाइन पैटर्न' हैं।

आमतौर पर विभिन्न डिज़ाइन पैटर्न सभी अलग-अलग प्रयोजनों (कई बार सूक्ष्म रूप से) की सेवा करते हैं और कई मामलों में एक विशिष्ट भाषा को ध्यान में रखते हुए विकसित किए गए थे। हालाँकि, एक वास्तविक 'डिज़ाइन पैटर्न' प्रोग्रामिंग के लिए एक कठिन और तेज़ नियम नहीं है और वास्तव में कार्यक्रमों के कार्यान्वयन और डिज़ाइन आवश्यकताओं और तार्किक फ़ंक्शन (ओं) की एक दार्शनिक / विचारपरक समझ से अधिक है।

विभिन्न प्रोग्रामिंग प्राचार्यों और सर्वोत्तम प्रथाओं के बारे में जानने के लिए अनुसंधान सबसे अच्छा तरीका है, यहां कुछ विकिपीडिया लिंक आपको आरंभ करने के लिए दिए गए हैं:

व्यवहार में, आपको अपने स्वयं के 'पैटर्न' को लागू करने से कुछ भी नहीं रोक रहा है, IMO सबसे अच्छा तरीका यह है कि मुझे क्या करना है, मेरे लिए कम से कम मैं एमवीसी पैटर्न को पूरी तरह से समझ नहीं पाया जब तक कि मैं इसका उपयोग करके एक वेब साइट लिखने की कोशिश नहीं कर रहा।

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

यदि आपके पास हल करने के लिए समस्याओं का कोई विशिष्ट सेट नहीं है, तो सामान्य रूपरेखाओं में से एक सीखना आपका सबसे अच्छा दांव है।


3

सबसे प्रसिद्ध उदाहरणों में से एक नॉकआउट है। जो एक जावास्क्रिप्ट फ्रेमवर्क है जो एमवीवीएम डिजाइन पैटर्न का उपयोग करता है । MVC फ्रेमवर्क Backbone.js बनाम Knockout.js की तुलना में स्टैक ओवरफ्लो पर यहाँ एक शानदार लेख है ।

एक संकेत यह है कि एमवीवीएम डिज़ाइन पैटर्न माइक्रोसॉफ्ट से मार्टिन फॉवलर के पीएम डिज़ाइन पैटर्न की विशेषज्ञता के रूप में उत्पन्न हुआ। MVVM का उपयोग बड़े पैमाने पर WPF अनुप्रयोगों द्वारा किया जाता है।


पृष्ठ नहीं मिला!
मुहम्मद उमेर

1
@MuhammadUmer धन्यवाद, मैंने लिंक अपडेट किया है। दुर्भाग्य से StackOverflow ने उस 1000+ बिंदु प्रश्न को हटा दिया। सौभाग्य से, वेकबैक मशीन में एक सख्त मॉडरेशन सिस्टम नहीं है।
dodgy_coder

बिल्कुल भी आश्चर्यचकित नहीं ... मुझे उम्मीद है कि सभी se साइट्स इस तरह की होंगी।
मुहम्मद उमर

0

जैसा कि एल्युसुबोव ने बताया, ASP.Net फ्रेमवर्क में लंबे समय तक MVP और MVVM पैटर्न हैं, यदि आप किसी भी मुख्य उदाहरण की तलाश कर रहे हैं। एमवीसी और एमवीवीएम के बीच मुख्य अंतर यह है कि आपकी इकाइयां कैसे अपडेट होती हैं; MVC वेब अनुप्रयोगों के पारंपरिक स्टेटलेस या सेमी-स्टेटलेस दृष्टिकोण के लिए बेहतर अनुकूल है। ASP.Net फ्रेमवर्क ने आपके राज्य को एक रूप में एम्बेडेड रखकर इसके चारों ओर काम करने की कोशिश की (इसलिए इसे प्रत्येक अनुरोध पर बहाल किया जा सकता है), जिससे एमवीपी और एमवीवीएम पैटर्न अधिक समझ में आता है।

HTML5 के साथ, एप्लिकेशन अधिक से अधिक जावास्क्रिप्ट-भारी होते जा रहे हैं, उनके अधिकांश राज्य क्लाइंट पर हैं। इससे MVVM चौखटे में पुनरुत्थान हो सकता है, और नॉकआउट JS एक उदाहरण है।


0

जंगल में अधिकांश पैटर्न MVC या MVC के कुछ स्वाद हैं। आखिरकार यह आपके डेटा (मॉडल), प्रतिनिधित्व (दृश्य) और इसके साथ सहभागिता (नियंत्रक) को विभाजित करने के लिए समझ में आता है। अगर आपकी नज़र एमवीसी पर है क्योंकि इसकी स्थापना 80 के दशक में हुई थी, तो आपको पता चलेगा कि इसका मतलब वेब फ्रेमवर्क नहीं था। इस प्रकार मैंने पाया कि यह वेब में बहुत अधिक है।

एक अन्य प्रसिद्ध पैटर्न सर्विस ओरिएंटेड आर्किटेक्चर (SOA) होगा। उस पर निर्मित, एक आधुनिक दृष्टिकोण आपके सर्वर पर एक एमवीसी (या स्वाद) होगा, केवल उस सेवा को उजागर करने के लिए जिसे आप काम कर सकते हैं। क्लाइंट पक्ष पर एक अन्य MVC स्टाइल एप्लिकेशन होगा, उदाहरण के लिए HTML5 और जावास्क्रिप्ट संचालित वेब एप्लिकेशन (उदाहरण के लिए ट्विटर या लिंक्ड इन)। क्लाइंट एप्लिकेशन आपके सर्वर साइड सेवा (सर्वर के "दृश्य") को उसके मॉडल के रूप में उपयोग करेगा। IMHO, यह कला की स्थिति होगी और संभवतः सर्वर साइड को केवल MVC को एक तरफ धकेल देगा।


0

मैं व्यक्तिगत रूप से एक ऐसी चीज को लागू करने पर विचार कर रहा हूं , जो रिसोर्स मेथड्स रिप्रेजेंटेशन के विचार का उपयोग करता है , हालांकि इस स्तर पर यह केवल कुछ और की तुलना में एक प्रयोग मात्र है। इसमें कुछ सम्मोहक बिंदु हैं कि यह MVC से बेहतर एक HTTP अनुरोध / प्रतिक्रिया को मॉडल करता है (जो कि लंबे समय तक चलने वाले अनुप्रयोगों के लिए है, जो किसी एकल कंप्यूटर पर चलने वाले अल्पकालिक अनुरोध / प्रतिक्रिया सत्र के विपरीत है)। हालाँकि, इसका दोष यह है कि यदि आप अपने संसाधनों को GET, POST, PUT, DELETE, इत्यादि से निपटने के तरीकों में लगाते हैं, तो आपके संसाधन सामने के छोर पर युग्मित हो जाते हैं। मैं सोच रहा हूँ कि मैं एक और परत में अलग करने जा रहा हूँ।


0

एमवीसी को छोड़कर 1000 से अधिक तरीके हैं जिनमें से कुछ एमवीसी के समान हैं और कुछ बिल्कुल अलग हैं

उदाहरण के लिए :

  1. मॉडल-टेम्पलेट-देखें - एमटीवी
  2. मॉडल-दृश्य-प्रस्तुतकर्ता - एमवीपी
  3. श्रेणीबद्ध मॉडल-दृश्य-नियंत्रक HMVC
  4. मॉडल दृश्य ViewModel- MVVM

आदि


1
इससे पहले किए गए 7 अंकों के बारे में कुछ भी बताने की जरूरत नहीं है और पहले 7 जवाबों में समझाया गया है
'13

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