हाइब्रिड में सर्वर-साइड बनाम क्लाइंट-साइड में वेब ऐप्स का निर्माण? [बन्द है]


27

वर्तमान में वेब अनुप्रयोगों के निर्माण के लिए कई दृष्टिकोण हैं:

1. सर्वर-साइड केवल

यह एक शास्त्रीय दृष्टिकोण है, जहां आप रूबी ऑन रेल्स, Django, एक्सप्रेस, प्ले जैसे वेब फ्रेमवर्क द्वारा सर्वर पर पृष्ठों को प्रस्तुत करते हैं! फ्रेमवर्क और आदि।

विशिष्ट वर्कफ़्लो : अपनी पसंद के ढांचे में सर्वर पर अपने सभी व्यावसायिक तर्क, मॉडल और व्यू टेम्प्लेट बनाएं।

2. क्लाइंट-साइड + REST API

अपेक्षाकृत बहुत पहले नहीं, वेब समुदाय ने कुल मिलाकर क्लाइंट-साइड एप्लिकेशन को एंगुलर, बैकबोन, एम्बर और कुछ दर्जन अन्य जावास्क्रिप्ट एमवी * फ्रेमवर्क के निर्माण के लिए शुरू किया था। और अब हमारे पास भी React.js पार्टी में शामिल हो गए हैं।

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

विशिष्ट वर्कफ़्लो : एंगुलर बनाम बैकबोन बनाम एम्बर बनाम एक्स पर निर्णय लेने में घंटे बिताएं। फिर आप क्लाइंट पर अपने मार्ग, मॉडल, विचार, नियंत्रक का निर्माण करते हैं। आपके द्वारा किए जाने के बाद, अब सर्वर पर मॉडल, कंट्रोलर, रूट बनाएं। एक तरह से आप दोगुना काम कर रहे हैं।

3. संकर

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

पर हाइब्रिड सामने Airbnb की है rendr कि माना जाता है कि रीढ़ की हड्डी को जोड़ती है और साथ में व्यक्त करते हैं।

एरिक फ्लोरेंजो ने आज अपने ब्लॉग पर पोस्ट किया है: प्रतिक्रिया: अंत में, एक महान सर्वर / क्लाइंट वेब स्टैक

वेब एप्लिकेशन बनाने के तरीकों की मात्रा बहुत अधिक है। और किसी ऐसे व्यक्ति के लिए जो वेब विकास सीख रहा है, यह एक समस्या बन सकता है। कोई कैसे तय करता है कि अपने अगले आवेदन के निर्माण के लिए किस दृष्टिकोण का उपयोग करना है?


1
"क्लाइंट साइड केवल: ... आपके द्वारा किए जाने के बाद, अब सर्वर पर मॉडल, कंट्रोलर, रूट बनाएं।" यह पार्स नहीं करता है।
user16764

@ user16764 ने मेरा प्रश्न अपडेट किया।
R R

दिलचस्प लिंक की एक जोड़ी: kreuzwerker.de/en/blog/posts/… , branchandbound.net/blog/web/2012/11//-
dagnelies

जवाबों:


13

मुझे लगता है कि आपने "क्लाइंट साइड ओनली" को पूरी तरह से गलत समझा है।

सबसे पहले इसे "क्लाइंट सेंट्रिक" लेबल किया जाना चाहिए। एंगुलर जैसे चौखटे की यह पूरी बात है कि एमवीसी के "वीसी" भागों को पूरी तरह से जावास्क्रिप्ट में ब्राउज़र में लागू किया जाता है। "M" भाग का "M" उच्च स्तर का तर्क - मॉडल - ब्राउज़र में लागू किया जाता है और निचले स्तर "CRUD" तर्क को सर्वर पर लागू किया जाता है।

व्यापार तर्क एक बार विकसित होता है। व्यू लॉजिक एक बार विकसित होता है। नियंत्रण तर्क को एक बार विकसित किया गया है - सभी को पसंद के जावास्क्रिप्ट ढांचे में। डेटा एक्सेस लॉजिक भी केवल एक बार ही विकसित किया गया है लेकिन इस बार आप सर्वर की तरफ से जो भी RESTy या SOAPy फ्रेमवर्क चुनेंगे।

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


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

@ और यही मेरी बात है। जब मैंने एक एम्बर ऐप बनाया, तो क्लाइंट पर बेसिक फॉर्म वैलिडेशन किया जाना था, लेकिन इसे सर्वर पर करने की भी जरूरत थी। मुझे सर्वर पर अपने डेटा को मान्य नहीं करने और क्लाइंट पर पूरी तरह से भरोसा करने के लिए एक बार गंभीर संकट में पड़ गया।
आर

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

3
@JamesAnderson Google डॉक्स एक ऑनलाइन स्टोर कहने से काफी अलग है। आप अपने स्वयं के दस्तावेज़ का संपादन कर रहे हैं, यह डेटा का एक बूँद है जिसे वे वास्तव में परवाह किए बिना सहेजते हैं कि डेटा का क्या अर्थ है। लेकिन क्या आपको वास्तव में लगता है कि आदेश सत्यापन केवल ग्राहक पर किया जाना चाहिए? आप बस लोगों से खुद को मुफ्त उत्पाद देने के लिए कह रहे हैं यदि आप इस तरह के ऐप का निर्माण करते हैं। ऐसा लगता है कि आप यह भी मान रहे हैं कि Google वास्तव में सर्वर के अंत में कोई डेटा सत्यापन नहीं कर रहा है। वास्तव में हमारे लिए यह जानने का कोई तरीका नहीं है कि क्या हो रहा है।
एंडी

9

प्रश्न का उत्तर यह है कि यह आवश्यकताओं पर निर्भर करता है। "वेब" के विकास के इतिहास में कम से कम सरसरी नज़र एक चरवाहे संस्कृति को इंगित करती है जहां हितधारकों, ग्राहकों, आवश्यकताओं को इकट्ठा करने के लिए बात की जाती है, अक्सर अनदेखी की जाती है।

मैं कुछ साल पहले एक बात में भाग लेने के लिए पर्याप्त भाग्यशाली था, जहां मैंने कुछ ऐसा सुना जो वास्तव में मेरे साथ अटक गया: "आप आवश्यकताओं को पूरा करने के लिए डिजाइन चुनते हैं, न कि डिजाइन को पूरा करने के लिए आवश्यकताएं"। इसलिए जब इस तरह के प्रश्न का सामना करना पड़ता है, तो आपको यह पता लगाने की जरूरत है कि वास्तव में उन लोगों की क्या जरूरत है जो आपको इस सॉफ़्टवेयर का निर्माण करने के लिए कह रहे हैं।

आपका काम प्रत्येक दृष्टिकोण के पीछे के पेशेवरों और विपक्षों को समझाना है।


1
धन्यवाद। आप जो कह रहे हैं वह समझ में आता है। मैं उम्मीद कर रहा था कि "चांदी की गोली" थी, चीजों को करने का एक सही तरीका। मैंने 2011 में Django नामक पायथन वेब फ्रेमवर्क के साथ शुरुआत की। इसके तुरंत बाद बैकबोन, कोणीय, एम्बर जैसे क्लाइंट-साइड एमवी * फ्रेमवर्क की ओर एक बड़ा धक्का लगा। और अचानक वेब ऐप्स बनाने का रेल और Django तरीका पुराना हो गया है। लेकिन आज ऐसा लगता है कि हम बेहतर प्रदर्शन प्राप्त करने के लिए एक बार फिर से सर्वर-साइड के साथ एक कदम पीछे ले जा रहे हैं और क्लाइंट-साइड को मिला रहे हैं।
आर

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

1
यह ठीक है और सभी लेकिन कभी-कभी दोनों दृष्टिकोण व्यवहार्य होते हैं और इस मामले में आपको निर्णय लेने के लिए आवश्यकता की तुलना में कुछ और की आवश्यकता होती है।
सीएसएस

5

मुझे लगता है कि नए दृष्टिकोण और रूपरेखा के प्रमुख बिंदुओं में से एक यह है कि फ्रंट एंड टेक्नोलॉजी और बैक एंड टेक्नोलॉजी के बीच कम युग्मन है।

विचार यह है कि आप क्लाइंट पर जो भी फ्रेमवर्क का उपयोग कर सकते हैं और सर्वर साइड फ्रेमवर्क की परवाह किए बिना किसी भी स्रोत से डेटा और / या दृश्य खींच सकते हैं।

यह हमें काम पाने के लिए सर्वोत्तम उपकरण चुनने देता है और हमारी पसंद स्वतंत्र रूप से विकसित हो सकती है।

बेशक, मैंने कोणीय या रीढ़ की हड्डी का उपयोग नहीं किया है इसलिए मैं कोई अनुभवी सिफारिश नहीं कर सकता। मेरे वर्तमान बेस स्टैक में स्लिममैस्ट सर्वर साइड एमएक्स या बाकी सेवाएं हैं जो मुझे मिल सकती हैं। ज्यादातर टेम्प्लेट और डेटा डिलीवर करते हैं। डेटा का प्रतिपादन किया गया है और / या बाद के डेटा को केवल सादे ol 'जावास्क्रिप्ट, jquery, और css का उपयोग करके ग्राहक पक्ष को पुनः प्राप्त किया गया है।

मैं यहां से शुरू करता हूं और उस पर निर्माण करता हूं जिसकी मुझे जरूरत थी। जब आप कई क्लाइंट प्लेटफ़ॉर्म, ब्राउज़र, मोबाइल आदि का समर्थन करने के बारे में सोचते हैं तो इस दृष्टिकोण के लाभ स्पष्ट हैं। यदि आपको क्लाइंट विशिष्ट रेंडरिंग की आवश्यकता है, तो आपको बड़े पैमाने पर परिवर्तन सर्वर साइड करने की आवश्यकता नहीं है।

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