2010-05-28 18 views
5

मैंने पहले एक समान प्रश्न पूछा है और साथ ही एक ठोस जवाब भी मिला है?बेहतर क्या है: एमवीसी या एन-टायर आर्किटेक्चर में एक वेब प्रोजेक्ट का विकास?

What is difference of developing a website in MVC and 3-Tier or N-tier architecture?

इस सवाल के समापन के कारण मैं एन स्तरीय वास्तुकला में परियोजनाओं के विकास शुरू कर दिया।

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

What is the best design pattern to design the interface of an WebPage?

अब मैं उलझन में है, पहली पोस्ट मुझे सुझाव दिया गया है कि दोनों सिर्फ एक अंतर यह है कि एन स्तरीय में, स्तरीय शारीरिक रूप से और तार्किक अलग कर रहे हैं और एक परत के ऊपर और नीचे की पहुंच के समान हैं, लेकिन सभी परतें नहीं।

मुझे लगता है कि एएसपीनेट ने अनुप्रयोगों या वेब अनुप्रयोगों के विकास के दौरान 3 टायर आर्किटेक्चर का उपयोग किया था। जहां ज़ेंड, सिम्फनी जैसे ढांचे के रूप में वे एमवीसी का उपयोग करते हैं।

मैं बस ऐसे पैटर्न से चिपकना चाहता हूं जो वेबप्रोजेक्ट विकास के लिए सबसे उपयुक्त है? यह एक बहुत मूर्खतापूर्ण भ्रम हो सकता है? लेकिन अगर कोई इस भ्रम को दूर कर सकता है, तो यह बहुत ही शानदार होगा?

+1

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

+0

दरअसल, मुझे एमवीसी और एन-स्तरीय आर्किटेक्चर दोनों में बहुत अच्छी समझ नहीं है – Starx

+0

सबसे अच्छा डिजाइन पैटर्न शायद एक मिथक है क्योंकि सभी मामलों में आईएमओ बिल्कुल सही नहीं होगा। –

उत्तर

8

वे परस्पर अनन्य नहीं हैं। मॉडल-व्यू-कंट्रोलर पैटर्न वास्तव में एक उपयोगकर्ता इंटरफ़ेस डिज़ाइन पैटर्न है, और यह भौतिक स्तरों के बजाय तार्किक से संबंधित है।

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

इस विवरण क्योंकि 'आवेदन तर्क' कई चीजों मतलब हो सकता है विशेष रूप से भ्रमित हो सकते हैं: एक n स्तरीय प्रणाली में यह आम तौर पर मतलब है व्यापार तर्क - के रूप में उपयोगकर्ता इंटरफ़ेस तर्क (जो की तरह विगेट्स सक्षम किए गए हैं करने का विरोध किया जब उपयोगकर्ता एक विशेष चेकबॉक्स का चयन करता है)।

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

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

मैं किसी मौजूदा एमवीसी ढांचे के बारे में नहीं सोच सकता जो देखभाल करता है कि उनकी परतें अलग-अलग भौतिक प्रक्रियाओं में चलती हैं या नहीं।

3

मैं सिर्फ एक पैटर्न से चिपक कि WebProject विकास के लिए सबसे उपयुक्त है करना चाहते हैं? हो सकता है कि यह एक बहुत ही मूर्ख भ्रम है? लेकिन अगर कोई इस भ्रम को साफ़ कर सकता है, तो यह बहुत शानदार होगा?

1) धारणा हर समस्या के लिए एक समाधान उपलब्ध न हो:

मैं अपने भ्रम दो क्षेत्रों में निहित है लगता है।

आपकी परियोजना की आवश्यकता यह निर्धारित करेगी कि कौन सा समाधान सबसे अच्छा है।

2) वेब पर लागू होने पर एमवीसी की परिभाषा मूल रूप से डेस्कटॉप अनुप्रयोगों पर लागू होने की तुलना में अलग होती है।

कुछ लोग कहते हैं कि यदि दृश्य मॉडल से बात नहीं करता है, तो यह एमवीसी नहीं हो सकता है। खैर, अधिकांश वेब एमवीसी कार्यान्वयन में मॉडल के लिए दृश्य बात नहीं है, फिर भी इसे अभी भी एमवीसी कहा जाता है।

चूंकि आप एक आत्म-वर्णित शौकिया हैं, इसलिए आपको इस सिद्धांत को जल्दी से गले लगा देना चाहिए: प्रोग्रामिंग दुनिया हर समय हर किसी के लिए भ्रमित है।

1

वेब-आधारित एमवीसी पारंपरिक डेस्कटॉप एमवीसी से काफी अलग है। मॉडल को दृश्य को अपडेट करने का कोई तरीका नहीं है, क्योंकि वेब (अधिकांश भाग के लिए) स्टेटलेस है।

भले ही आपने मॉडल अपडेट के लिए सर्वर को हर दो सेकंड में मतदान करने के लिए AJAX का उपयोग किया हो, फिर भी यह "सत्य" एमवीसी नहीं होगा क्योंकि यह दृश्य को सूचित करने वाला मॉडल नहीं है, यह नियंत्रक लगातार मॉडलों को "पूछताछ" करता है ।

सबक सीखा है कि यह वास्तव में कोई फर्क नहीं पड़ता कि आप अपनी वास्तुकला को लेबल करते हैं। एमवीसी/3 स्तर के इतने सारे रूप हैं कि आमतौर पर लोग उन्हें "एमवीसी" कंबल के नीचे ढेर करते हैं। और ये सभी वेब विकास के लिए उपयुक्त हैं। मैं मॉडल को वास्तव में सर्वर-साइड प्रोग्रामिंग (कम से कम PHP में नहीं) के माध्यम से दृश्य को सूचित करने के किसी भी व्यावहारिक तरीके से नहीं सोच सकता। अगर आपको इस तरह के व्यवहार की ज़रूरत है, तो आपको डेस्कटॉप एप्लिकेशन लिखना चाहिए। बस लिखें कि आपके लिए प्राकृतिक क्या है और शब्दावली बहस में पकड़ा नहीं जाता है। कोडइग्निटर, कोहाना, सिम्फनी, केकेपीएचपी, और ज़ेंड डू जैसे कुछ प्रसिद्ध ढांचे को देखें और चुनें और चुनें कि कौन सी फीचर्स या डिज़ाइन पैटर्न आपको पसंद हैं।

2

आप Microsoft Application Architecture Guide. की समीक्षा करना चाहेंगे, यह एक आर्किटेक्चर दृष्टिकोण से उपलब्ध माइक्रोसॉफ्ट प्रौद्योगिकियों का एक अच्छा अवलोकन है। अध्याय है कि आप अपनी रुचि के हो सकता है:

  • सीपीएच 21 डिजाइनिंग वेब अनुप्रयोग
  • परिशिष्ट बी: प्रस्तुति प्रौद्योगिकी मैट्रिक्स
  • परिशिष्ट C: डेटा एक्सेस प्रौद्योगिकी मैट्रिक्स

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

0

क्यों दोनों का उपयोग नहीं करते? फिलहाल मैं एमवीपी पैटर्न और एन-स्तरीय वास्तुकला में एक परियोजना विकसित करने में व्यस्त हूं। मैं उपयोगकर्ता इंटरफ़ेस प्रोजेक्ट में एमवीपी पैटर्न का उपयोग कर रहा हूं, यानी। वेबसाइट। वेबसाइट में दिखाए जाने और उपयोग किए जाने वाले सभी डेटा को webservice से पास किया जाता है। यह webservice एक व्यापार परत (बीएलएल) से जुड़ा हुआ है, जो डेटा एक्सेस लेयर (डीएएल) से जुड़ा हुआ है। डीएएल इकाई फ्रेमवर्क का उपयोग कर डेटाबेस से जुड़ा हुआ है।

तो इस परियोजना में मैं दोनों का उपयोग कर रहा हूं। हालांकि एमवीसी के बजाय एमवीपी का उपयोग करना। इस तरह इंटरफ़ेस प्रोजेक्ट (वेबसाइट) को हार्ड सामान नहीं करना है, केवल webservice से प्राप्त कुछ डेटा से गुजरना है। मुझे स्थापित करने के लिए थोड़ी देर लग गई, लेकिन यह काफी अद्भुत काम करता है।

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

0

कोई भी बेहतर नहीं है। एमवीसी और एन-स्तरीय या तो चीजें नहीं हैं। एक ऑब्जेक्ट/एपीआई डिज़ाइन है, एक सिस्टम आर्किटेक्चर है। सवाल दोनों के बीच अंतर करने के लिए कहा और यहाँ उत्तर दिया गया है:

MVC Vs n-tier architecture

+0

+1 आपके मूल उत्तर में +1। –