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


13

हमारी कंपनी में, हमें एक एम्बेडेड लिनक्स प्लेटफॉर्म पर एक वेब इंटरफेस बनाने की आवश्यकता है। मुझे 2 तरह के विकल्प दिखाई देते हैं: आप एक ऐसी तकनीक का उपयोग करते हैं जहां HTML और जावास्क्रिप्ट सर्वर की ओर से उत्पन्न होता है (थिंक जेएसपी, ग्रेल्स, लेकिन कुछ ऐसा है जो C ++ का उपयोग कर रहा है और HTML / जावास्क्रिप्ट उत्पन्न करता है) या आप एक HTML5 'क्लाइंट' बनाते हैं JSON या XML जनरेट बैकएंड पर बात करता है कि आवेदन।

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


यदि डेवलपर HTML + JS के साथ C ++ से अधिक परिचित हैं, तो वे पूर्व समाधान के साथ क्यों गए? उत्तरार्द्ध उन्हें कम परेशानी देगा, खासकर अगर वे "HTML 5 क्लाइंट" को C ++ डेस्कटॉप एप्लिकेशन जैसे एक समृद्ध क्लाइंट या जावा एपलेट या JNLP के साथ डेस्कटॉप एप्लिकेशन परिनियोजित करते हैं ...?
शिवन ड्रैगन

जवाबों:


4

AJAX

मुझे लगता है कि आपका प्रश्न "मेरे वेब एप्लिकेशन को क्लाइंट साइड पर या सर्वर साइड पर HTML उत्पन्न करना चाहिए?" क्लाइंट-साइड जेनरेशन AJAX का उपयोग करके सर्वर से संपर्क करता है, हालांकि X (XML) को आमतौर पर JSON से बदल दिया गया है, लेकिन अधिकांश लोग अभी भी इसे AJAX कहते हैं क्योंकि यह बेहतर लगता है। सर्वर-साइड, सर्वर सिर्फ सर्वर पर HTML बनाता है।

मुझे XML के साथ बहुत अनुभव है और JSON के साथ लगभग कोई भी नहीं है। XML के बारे में मैं जो कुछ भी जानता हूं वह मुझे यह सुझाव देता है कि यदि संभव हो तो आप JSON का उपयोग करते हैं।

AJAX पेशेवरों:

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

AJAX विपक्ष:

  • जावास्क्रिप्ट डिबगिंग
  • जटिलता?
  • जावास्क्रिप्ट के साथ आप जो सामान कर सकते हैं वह अक्सर अंधे या विकलांग लोगों के उपयोग के लिए पूरी तरह से असंभव है।
  • अधिक कोड कुल (आपके एम्बेडेड डिवाइस पर बड़ा समग्र संग्रहण) की आवश्यकता हो सकती है

क्लाइंट सर्वर

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

सेवा बनाम ऐप।

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

सी / वेब

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

यदि आपको मेमोरी या फर्मवेयर कारणों के लिए C का उपयोग करने की आवश्यकता है, तो आपको यही करना होगा। बस थोड़ा सावधान रहें!

ब्राउज़र का समर्थन

वेब एप्लिकेशन बनाने का पहला चरण यह पता लगाना है कि आपके क्लाइंट द्वारा कौन से ब्राउज़र का उपयोग किया जाएगा ? W3Schools और विकिपीडिया दोनों सामान्य आँकड़ों के अच्छे स्रोत हैं, लेकिन YMMV।

जहां मैं अभी काम करता हूं, हम वर्तमान में मान्य करते हैं कि हमारा आवेदन केवल वैध XHTML 1.0 संक्रमणकालीन HTML बनाता है। हम IE में क्वर्क्स मोड से बचने के लिए आवश्यक विशिष्ट डॉक्टाइप और फ़ॉर्मेटिंग का भी उपयोग करते हैं, जो क्रॉस-ब्राउज़र HTML को लिखने में आसान बनाता है ( मेरे ब्लॉग पर सुझाव देखें )। हम आईई के नवीनतम 3 संस्करणों, प्लस फ़ायरफ़ॉक्स और क्रोम पर विंडोज और लिनक्स पर परीक्षण करते हैं (सफारी क्रोम के समान रेंडरिंग इंजन का उपयोग करता है)। उस सत्यापन और परीक्षण के साथ, हमारे आवेदन ब्लैकबेरी को छोड़कर हर जगह (विंडोज, मैक, लिनक्स, आईफोन, एंड्रॉइड, आदि) में बहुत काम करता है।

ब्लैकबेरी का जावास्क्रिप्ट के साथ वास्तविक ब्राउज़र कभी नहीं था, इसलिए हम इसका समर्थन नहीं करते हैं। ब्लैकबेरी उपयोगकर्ताओं का उपयोग वास्तविक वेब ब्राउज़र न करने के लिए किया जाता है, इसलिए वे शिकायत नहीं करते हैं। शायद यह बदल रहा है? मैं कुछ ग्राहकों से पूछने की कोशिश करूंगा कि वे कौन से ब्राउज़र का उपयोग कर रहे हैं और उन ब्राउज़रों के साथ परीक्षण करना सुनिश्चित करें।

सारांश

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

आपको शायद सीएसएस के साथ सहज होने की भी आवश्यकता है, और कुछ ऐसा बनाने के लिए छवि संपीड़न जो कि सभ्य दिखता है और जल्दी से प्रतिक्रिया करता है। जावास्क्रिप्ट, वेब-सर्वर और ब्राउज़र ज्ञान के अतिरिक्त क्षेत्र हैं जिनकी आपको अंततः आवश्यकता होगी।

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

जहां मैं अब काम करता हूं, हम एक हाइब्रिड दृष्टिकोण का उपयोग करते हैं जिसमें कभी-कभी जावा कोड शामिल होता है जो जावास्क्रिप्ट उत्पन्न करता है जो HTML उत्पन्न करता है। यदि आप लोग वेब विकास के लिए नए हैं, तो यह शुरू करने की जगह नहीं है। मुझे लगता है कि मुझे यह कहना होगा कि जब तक आपके पास AJAX मॉडल का उपयोग करने के लिए बाध्यकारी कारण नहीं होंगे, मैं पुराने सर्वर-साइड- HTML- पीढ़ी मॉडल के साथ शुरू करूंगा और देखूंगा कि यह आपको कितनी दूर जाता है।


"मैं एक ब्राउज़र के भीतर जावास्क्रिप्ट द्वारा उत्पन्न HTML कोड को मान्य करने या यहां तक ​​कि देखने के लिए बहुत सारे टूल से अवगत नहीं हूं" यही है फायरबग (या किसी अन्य वेब डेवलपर ब्राउज़र एक्सटेंशन, जैसे कि क्रोम के वेब डेवलपर टूल)।
sleske

13

उत्तरार्द्ध का लाभ है कि यह आपके "बैक एंड" को एक सामान्य "डेटा सेवा" बनाता है (जो भी आपके संदर्भ में मतलब हो सकता है)।

आपका HTML क्लाइंट तब उस डेटा के कई संभावित उपभोक्ताओं में से एक है। अन्य उपभोक्ताओं की तरह iOS ऐप, एंड्रायड ऐप, विंडोज 8 ऐप, एपीआई आदि के बारे में सोचें।


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

6

एक वेब एप्लिकेशन का एक आम तरीका दोनों का मिश्रण है, जो एक या दूसरे पक्ष में है।

पहले दृष्टिकोण और अधिक परंपरागत है, साल के लिए किया गया है और इसके साथ-साथ, दस्तावेज (हालांकि c ++ आम तौर पर उस के लिए लोकप्रिय एक भाषा नहीं है)।

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

सब सब में, जो अन्य बाधाओं पर निर्भर करता है, जैसे टीम परिचित, और व्यावसायिक मामला।

कुछ प्रश्न जो आपके विकल्पों का आकलन करने में आपकी मदद कर सकते हैं:

  1. क्या टीम के पास भाषा और मंच का अनुभव है?
  2. क्या टीम नए दृष्टिकोण और प्रौद्योगिकियों को सीखने के लिए तैयार है?
  3. क्या एप्लिकेशन अन्य उपकरणों (iPhone, एंड्रॉइड, विंडोज़ 8, आदि) के लिए अधिक आसानी से प्रोग्राम होने के फायदे लेता है
  4. क्या अन्य, आंतरिक या बाहरी ऐप सेवाओं के साथ एकीकृत होंगे या आवेदन के लिए डेटा उपलब्ध होंगे?

5

ऐसे "इंट्रानेट" अनुप्रयोगों के लिए, मैं एक्सटीजेएस 4 के साथ वसा-ग्राहक (जावास्क्रिप्ट / एचटीएमएल 5-ऐप + जेएसएन) दृष्टिकोण का उपयोग करता हूं।

सामान्य "इंटरनेट" वेबसाइटों के लिए मैं अधिक "शास्त्रीय" दृष्टिकोण का उपयोग करूंगा।

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

क्लाइंट-कोड एचटीटीपी के साथ दिया जाता है, फिर भी आप बिना किसी अस्पष्ट अद्यतन तंत्र के आसानी से उपयोगकर्ताओं को नए संस्करण भेज सकते हैं। (एचएमटीएल / जेएस / सीएसएस की जगह)

सामान्य वेबसाइटों पर मैं शास्त्रीय दृष्टिकोण का एकमात्र कारण होगा, खोज इंजन हैं।

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