2010-05-23 10 views
14

मैं प्रोटोबफ-नेट के बारे में पढ़ रहा हूं और यह आश्चर्यजनक है!क्या प्रोटोबफ-नेट के लिए कोई ट्यूटोरियल है?

क्या कोई ट्यूटोरियल है जिसका मैं उपयोग कर सकता हूं? (अधिक विशेष रूप से Dictionary<TKey,TValue> और जेनरिक के लिए अनुबंध के लिए)

वहाँ इससे जुड़ी किसी भी सुझाव दिए गए हैं?

मैं बस मेरे वर्तमान codebase में प्लग या किसी भी परिवर्तन मैं क्या करने की जरूरत नहीं है सकते हैं?

+0

क्या आप वर्तमान में अपना कोडबेस वर्तमान में क्या कर रहे हैं इसके बारे में कुछ और कह सकते हैं? – Carlos

उत्तर

14

Dictionary<TKey,TValue> काफी हद तक सिर्फ काम करना चाहिए (कम से कम "वी 1" में, मैं कि नहीं लिखा है अभी तक "वी 2" के लिए)।

मैं पूरी तरह से स्वीकार करता हूं कि दस्तावेज ... स्पैस है। चीजें हैं जो मन में छलांग:

  • Getting Started (और विकि में कुछ अन्य पृष्ठों देखते हैं)
  • trunk में चीजों के एक मेजबान हैं; "उदाहरण" परियोजना इकाई-परीक्षण के रूप में दोगुना हो जाता है, तो मदद मिल सकती है
  • my blog

मैं एक बहुत (मैं तो बस, रोजगार बदल दिया है आदि) इस समय हो रहा है, लेकिन मेरे प्राथमिकताएं हैं :

  • एक स्थिर "वी 2" बीटा जारी किया हो, कम से कम मूल सुविधा सेट
  • प्रलेखन
में सुधार 210

समय मेरा सबसे बड़ा दुश्मन है। लेकिन अगर आपके पास एक विशिष्ट परिदृश्य है, तो मुझे पिंग करने के लिए स्वतंत्र महसूस करें और मैं आपको वापस आने की कोशिश करूंगा।

पुन "क्या मैं इसे आसानी से प्लग कर सकता हूं"; जो आपके कोड पर निर्भर करता है ;-

इसे कुछ प्रत्येक सदस्य के लिए एक अद्वितीय संख्या निर्धारित करने का तरीका है जिसे आप क्रमबद्ध करना चाहते हैं।ऐसा करने का सबसे आसान तरीका गुणों के माध्यम से है; यह [XmlElement(Order=n)], [DataMember(Order=n)] या [ProtoMember(n)] में से किसी का भी समर्थन करता है। यदि आपके पास पहले से इनमें से कम से कम एक है (LINQ-to-SQL में [DataMember] शामिल है, उदाहरण के लिए) तो यह बस काम कर सकता है।

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

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

+0

अरे धन्यवाद मार्क। तो, शब्दकोश का उपयोग v1 और v1 में काम करता है क्या उत्पादन सही है? मैं नवीनतम संस्करण या कुछ भी उपयोग करने के लिए वास्तव में किसी भी बाधा पर नहीं हूँ। केवल एक चीज है, क्या यह .NET 4.0 में काम करता है? और यह कैसे धागा सुरक्षित है? – akshaykarthik

+0

@AKRamkumar "v1" वास्तव में एक precompiled डीएल के रूप में डाउनलोड के लिए संस्करण उपलब्ध है। यह पूरी तरह से थ्रेड-सुरक्षित होना चाहिए, और .NET 4.0 में ठीक काम करना चाहिए। "V2" रिलीज में कई फायदे हैं, लेकिन स्विच करना आवश्यक नहीं है - वे पूरी तरह तार-संगत हैं। –

+0

तो शब्दकोश का उपयोग v2 में काम करेगा? TKey या TValue काम के लिए कोई भी प्रकार होगा या मैं विशिष्ट प्रकारों तक ही सीमित रहूंगा। (क्षमा करें अगर मुझे कोई आवाज नहीं है, तो मैं अच्छा प्रोग्रामर नहीं हूं) – akshaykarthik

2

काफी मजेदार है, मैं तो बस एक और सवाल protobuf-net के लिंक के साथ जवाब दिया।

मुझे यह अपेक्षाकृत सरल लगता है, और मार्क ईमेल के माध्यम से बहुत ही संवेदनशील है। (हेहे, खेद अगर मैं लोगों को आमंत्रित कर रहा हूँ आप सवालों के साथ स्पैम करने के लिए!)

दस्तावेज़ीकरण के लिए, मुझे लगता है कि यह थोड़ा विरल था उल्लेख किया। लेकिन यहाँ है कि मैं क्या के लिए उपयोग किया गया था:

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

यह बहुत आसान था। मैं अपनी परियोजना के माध्यम से चला गया, [XmlInclude] और [ProtoInclude] के साथ समान गुणों को प्रतिस्थापित करता हूं, और मैंने निश्चित रूप से एक्सएमएल सीरिएलाइज़र को प्रोटो सीरियलाइज़र के साथ बदल दिया। एक या दो मुद्दों के बारे में एक या दो मुद्दों को धारावाहिक बनाया जा सकता है, मार्क की मदद से हल किया गया था, और बहुत अधिक कोड रिफैक्टरिंग नहीं किया गया था।

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