बाइनरी प्रोटोकॉल के साथ सीधे टीसीपी / आईपी पर जेएसईएन का उपयोग करने के बारे में निश्चित रूप से पेशेवरों / विपक्ष हैं और मुझे लगता है कि आप पहले से ही संदेह कर रहे हैं कि बाइनरी प्रोटोकॉल तेज होगा। मैं आपको ठीक-ठीक नहीं बता सकता कि कितना तेज (और यह बहुत सारे कारकों पर निर्भर करेगा), लेकिन मुझे लगता है कि शायद अंतर के 1-2 आदेशों में अंतर है।
पहली नज़र में अगर कोई चीज़ किसी चीज़ की तुलना में 10-100 गुना धीमी है, तो आपको घुटने में झटका लग सकता है और "तेज़ बात" हो सकती है। हालांकि, यह गति अंतर केवल प्रोटोकॉल में ही है। यदि सर्वर की तरफ डेटाबेस / फ़ाइल का उपयोग होता है, तो यह ट्रांसफर लेयर की आपकी पसंद से प्रभावित नहीं होगा। कुछ मामलों में, यह आपकी स्थानांतरण परत की गति को बहुत कम महत्वपूर्ण बना सकता है।
HTTP REST और JSON कई कारणों से अच्छे हैं:
- वे आसानी से किसी के बारे में आसानी से उपभोज्य हैं। आप अपना वेब ऐप लिख सकते हैं, फिर बाकी दुनिया के उपयोग के लिए अपने एपीआई को प्रकाशित करें और प्रकाशित करें। अब कोई भी एक ही एंड-पॉइंट्स को हिट कर सकता है और अपनी सेवाओं में लग सकता है
- वे आसानी से डीबग करने योग्य हैं, आप एक पैकेट स्निफर खोल सकते हैं या बस आने वाली अनुरोधों को पाठ फ़ाइलों में डंप कर सकते हैं और देख सकते हैं कि क्या चल रहा है। आप बाइनरी प्रोटोकॉल के साथ ऐसा नहीं कर सकते
- वे आसानी से विस्तार योग्य हैं। आप बाद के समय में अधिक विशेषताएँ और डेटा जोड़ सकते हैं और पुराने ग्राहकों के साथ संगतता नहीं तोड़ सकते।
- जावास्क्रिप्ट क्लाइंट द्वारा उपभोग्य (यकीन नहीं है कि उनके पास प्रोटॉफ जेएस पार्सर है, फिर भी विश्वास नहीं है कि एक है)
टीसीपी / आईपी पर प्रोटॉफ्यूज़:
अगर यह मेरी पसंद थी, तो मैं HTTP REST और JSON के साथ काम करूंगा। वहाँ एक कारण है कि इतनी सारी अन्य कंपनियां और वेबसाइटें उस मार्ग पर गईं। यह भी ध्यान रखें कि भविष्य में आप हमेशा 2 अंतिम बिंदुओं का समर्थन कर सकते हैं। यदि आपका डिज़ाइन सही है, तो आपके सर्वर-साइड बिजनेस लॉजिक या डेटाबेस से आपकी एंड-पॉइंट चॉइस पूरी तरह से डिकॉउंड होनी चाहिए। इसलिए यदि आपको बाद में पता चलता है कि आपको सभी / कुछ अनुरोधों के लिए अधिक गति की आवश्यकता है, तो आपको न्यूनतम उपद्रव के साथ प्रोटोबोफ़्स जोड़ने में सक्षम होना चाहिए। हालांकि बल्ले से राइट, REST / JSON आपको तेज़ी से मैदान से बाहर ले जाएगा और आपको आगे ले जाएगा।
जहाँ तक नेट्टी बनाम स्प्रिंग जाता है। मैंने सीधे नेट्टी का उपयोग नहीं किया है, लेकिन मेरा मानना है कि यह सिर्फ एक हल्के वजन वाला वेब सर्वर है, जहां स्प्रिंग एक ऐसा ढांचा है जो आपके लिए बहुत कुछ प्रदान करता है। इसमें डेटा एक्सेस लेयर, बैकग्राउंड जॉब शेड्यूलिंग और (मुझे लगता है) MVC मॉडल है, इसलिए यह बहुत अधिक हैवीवेट है। कौन सा चुनना है? यदि आपने HTTP रास्ता तय किया है, तो अगला सवाल संभव है कि आपका ऐप कितना मानक है? यदि आप कुछ पागल कस्टम तर्क लिखने वाले हैं जो मानक मोल्ड में फिट नहीं होते हैं और आपको केवल एक HTTP सर्वर परत की आवश्यकता है, तो Netty के साथ जाएं।
हालाँकि, मुझे संदेह है कि ऐप आपके लिए विशेष नहीं है और यह संभवतः बहुत सी चीजों से लाभान्वित हो सकता है जो स्प्रिंग को प्रदान करना है। लेकिन इसका मतलब है कि आपको अपने ऐप को स्प्रिंग के ढांचे के आसपास बनाना चाहिए और उन चीजों को करना चाहिए जो वे आपसे करने की उम्मीद करते हैं, जिसका मतलब होगा कि आपके उत्पाद में गोता लगाने से पहले स्प्रिंग के बारे में अधिक सीखना। सामान्य तौर पर फ्रेमवर्क बहुत अच्छे होते हैं क्योंकि फिर से वे आपको तेजी से जमीन से दूर कर देते हैं, लेकिन नकारात्मक पक्ष यह है कि आपको अपना डिज़ाइन करने के बजाय उनके सांचे में फिट होना होगा और फिर फ्रेमवर्क को बस काम करने की उम्मीद करनी चाहिए।
(*) - अतीत में यह बताया गया था कि मेरी पोस्टें पूरी दुनिया की राय को प्रतिबिंबित नहीं करती हैं, इसलिए मैं रिकॉर्ड पर जाऊंगा और बस यह जोड़ दूंगा कि मुझे या तो नेट्टी के साथ सीमित अनुभव है (मैंने पहले प्ले फ्रेमवर्क का उपयोग किया है) जो कि नेट्टी पर आधारित है) या स्प्रिंग (मैंने केवल इसके बारे में पढ़ा है)। इसलिए जो मैं नमक के दाने के साथ कहता हूं वह ले लो।