2009-11-25 11 views
14

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

क्या ऐसा कुछ है जिसे मुझे टालने का प्रयास करना चाहिए? क्या एक सादे डेटा धारक जैसे प्रोटोकॉल बफर ऑब्जेक्ट का इलाज करना सुरक्षित है, अच्छी सुविधा के साथ कि यह जल्दी और कुशलतापूर्वक बाइनरी में परिवर्तित हो सकता है?

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

उत्तर

9

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

यह सुरक्षित ऐसा करने के लिए है, लेकिन यह हमेशा डिज़ाइनों का सबसे अच्छा नहीं बनाता है। दूसरी तरफ, कभी-कभी डॉक्टर ने आदेश दिया है :)

मैं आपको प्रयोग का सुझाव देता हूं - यहां कोई भी "एक आकार सभी फिट बैठता है"।

+0

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

+0

यह निश्चित रूप से कुछ मामलों में मदद करता है, जब आप एक कार्यात्मक शैली में कोड लिख सकते हैं। यह आंशिक रूप से समस्या पर निर्भर करता है और आंशिक रूप से डेवलपर्स पर निर्भर करता है :) –

+0

अपरिवर्तनीय वास्तव में कुछ मामलों में मदद करता है, अज्ञात कारणों से वहां कुछ दर्जनों + या तो पैरामीटर के साथ कुछ सार्वजनिक निर्माण मौजूद हैं, जो सभी अंतिम फ़ील्ड को सौंपा गया है। एक निर्माता हर समय लिखने के लिए महान लेकिन थकाऊ और बॉयलरप्लेट है। आवश्यक बनाम वैकल्पिक अधिकार का तर्क प्राप्त करना भी मुश्किल है, जैसे कि आवश्यक फ़ील्ड छोड़े जाने पर बिल्ड() विधि उड़ाती है। –

0

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

यदि आपने तय किया है कि आप प्रोटोकॉल बफर का उपयोग परिवहन प्रतिनिधित्व के रूप में करना बंद करना चाहते हैं, तो कुछ और उपयोग करना कितना आसान होगा?

+0

यह वास्तव में बिल्कुल एक कदम है। अभी इंटरफेस का एक सेट हमारी डेटा लेयर, बैक एंड आरपीसी * और * को कुछ रीस्टफुल वेब सेवा परत का विस्तार करता है। *दर्द*। चरण # 1 प्रोटोकॉल बफर के साथ बैक एंड को प्रतिस्थापित करने के लिए बाकी से हटाना है। लेकिन यह एक उत्कृष्ट बिंदु है। अगर मैं बस सब कुछ प्रोटोबफ्स पर स्विच करता हूं, तो केवल एक चीज जो मैंने तय की है वह क्लाइंट और आरपीसी सेवाओं के बीच का लिंक है जबकि अन्य सभी परतें संदेश ऑब्जेक्ट्स पर निर्भर करती हैं ... बीएडी। –

संबंधित मुद्दे