Google प्रोटोकॉल बफ़र्स: जावास्क्रिप्ट उदाहरण


80

क्या जावास्क्रिप्ट में Google प्रोटोकॉल बफ़र्स का उपयोग करना एक अच्छा विकल्प है या क्या JSON के साथ ऐसा करना बेहतर है?

यह भी बहुत अच्छा होगा अगर कोई मुझे जावास्क्रिप्ट में प्रोटोकॉल बफ़र्स कार्यान्वयन के बारे में एक सरल उदाहरण दे सकता है। Google की साइट पर प्रलेखन दुर्लभ है।


4
इस SO थ्रेड में विषय के बारे में अधिक जानकारी है: stackoverflow.com/questions/7074147/…
alavrik

जवाबों:


74

[संपादित करें] गूगल के प्रोटोकॉल बफ़र्स का ओपन सोर्स कार्यान्वयन जीथब पर उपलब्ध है


आधिकारिक प्रोटोबॉफ परियोजना केवल जावा, सी ++ और पायथन का समर्थन करती है। जावास्क्रिप्ट नहीं।

परियोजना के विकी के अनुसार, जावास्क्रिप्ट के लिए प्रोटोकॉल बफ़र्स को पोर्ट करने वाली तीन परियोजनाएं हैं।

Protobuf.js अद्यतित है। प्रोटोबॉफ़-जेएस को दो साल से अपडेट नहीं किया गया है, इसलिए मैं प्रोटोबॉफ़.जैस का समर्थन करूंगा।

सवाल अभी भी "क्यों" है ?: प्रोटोबॉफ़ थोड़ा छोटा हो सकता है, खासकर जब बहुत सारे संख्यात्मक मान स्थानांतरित किए जाते हैं, लेकिन जेएसएन जेएस अंतरिक्ष में बस अधिक सामान्य प्रोटोकॉल है और शायद अन्य उपकरणों में एकीकृत करने के लिए बेहतर समर्थित और आसान है।


11
अधिकांश मामलों में JSON के अधिक फिट होने के बारे में कोई संदेह नहीं है। हालाँकि मेरे मामले में संदेश भेजने वाला मेरे नियंत्रण में नहीं है, और यह प्रोटोबुफ़ संदेशों को प्रसारित करता है, इस प्रकार हमें जावास्क्रिप्ट से संदेशों को पार्स करने की आवश्यकता है।
Jan Segre

21
@Hy: क्योंकि आप एक संदेश और सेवा विधियों को प्रोटो के रूप में लिखते हैं और आपको मुफ्त में कोड का कंकाल मिलता है? दोनों क्लाइंट / सर्वर साइड पर सीरियललाइज़ेशन और डिसरलाइज़ेशन।
पवेल सजगुर

13
क्यों: किसी भी अन्य स्थिति में प्रोटोबॉफ़ का उपयोग करने का समान कारण। अब यह मत भूलिए कि ब्राउज़र में अब WebSocket है। इसके अलावा, डेस्कटॉप अनुप्रयोगों को विंडोज 8 के लिए जेएस में लिखा जा सकता है, और एप्लिकेशन, जिसमें सर्वर भी शामिल हैं, नोड में।
अंकुर

4
कोड जलवायु में JSON
जॉर्डन

5
यदि आपके सिस्टम के एपीआई में पहले से ही अन्य बाइनरी / प्रोटोबॉफ़ क्लाइंट हैं, जैसे कि एंड्रॉइड या आईओएस डिवाइस, तो जावास्क्रिप्ट वेब क्लाइंट के लिए मौजूदा प्रोटो एपीआई का उपयोग करना अधिक स्वाभाविक है, केवल JSON की पेशकश करने वाले एपीआई की दूसरी प्रति बनाने के लिए। एक वेब पेज।
जीरो ट्रिक पोनी

36

अद्यतन (28/7/2016): रिलीज़ 3.0.0 प्रकाशित किया गया था - जावास्क्रिप्ट और अन्य भाषाओं के साथ-साथ कुछ अन्य विशेषताओं का समर्थन करते हुए।

Google ने हाल ही में JS के लिए अल्फा सपोर्ट्स को protobufs में जोड़ा है: https://github.com/google/protobuf/releases/tag/v3.0.0-beta-2

उपयोग:

protoc -I=$SRC_DIR --js_out=$DST_DIR $SRC_DIR/addressbook.proto

रिलीज के दस्तावेज से स्क्रीनशॉट:

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

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


कमांड से ऊपर चलने के दौरान, मुझे "गुम इनपुट फ़ाइल" त्रुटि मिल रही है।
जीशान अजमल


-1

प्रोटोस्टफ की कोशिश करो !

मुझे थोड़ा मुश्किल समय मिला, लेकिन मुझे यकीन है कि यह मेरे मुद्दे से अधिक था। आप JSON से / के लिए एक प्रोटोबफ / प्रोटॉस्टफ संदेश को सीरियल / डिसेर्बलाइज कर सकते हैं। मैं इसे इस्तेमाल करने के शुरुआती चरणों में हूं लेकिन यह अब तक आशाजनक है।


1
जिज्ञासु। यह मतदान क्यों किया गया (मेरा प्रोटेस्टफ के बारे में कोई राय नहीं है)?
पीमिन कोन्स्टेंटिन केफालकोस

9
@ शायद इसलिए कि प्रोटॉस्टफ जावा है और सवाल जावास्क्रिप्ट है?
मार्क Gravell

1
@PiminKonstantinKefaloukos व्यक्ति जावास्क्रिप्ट
प्रोटोबुफ़

2
प्रोटॉस्टफ का उपयोग करके GWT के लिए जावास्क्रिप्ट वस्तुओं का निर्माण: code.google.com/p/protostuff/wiki/GwtJsonOverlays । विषय पर पूरी तरह से।
फजी एनालिसिस

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