2011-03-12 20 views
8

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

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

एक त्वरित समाधान के लिए, मैं वर्तमान में BinaryFormatter का उपयोग करने और फिर GZipStream के साथ स्ट्रीम को संपीड़ित करने के बारे में सोच रहा हूं। क्या यह .NET 4.0 के लिए जाने का तरीका है?

+2

BinaryFormatter ठीक है, अपनी आवश्यकताओं और उपयोग करने के लिए अपने मृत-सरल के लिए एक 3 पार्टी समाधान के आसपास खींचें करने के लिए कोई जरूरत नहीं। GZipStream का उपयोग न करें, यह केवल ओवरहेड जोड़ता है। मेमोरी बैंडविड्थ इसे भुगतान करने के लिए बहुत अधिक है। –

+0

@ हंस: वह एक वैन पर डेटा भेजने के बारे में बात कर रहा है (जिसका शायद बैंडविड्थ 10 एमबीपीएस से कम है)। मुझे लगता है कि इस एप्लिकेशन के लिए 'GZipStream' लगभग अनिवार्य है। – Gabe

+0

@Gabe: याद किया कि, सहमत हो गया। –

उत्तर

5

यदि गति-विकास-विकास कुंजी है (विशेष रूप से जब आपके पास इंटरफेस आदि हैं, जिन्हें आपको कुछ धारावाहिकों के लिए उचित रूप से कॉन्फ़िगर करने की आवश्यकता है) तो हो सकता है। बस के रूप में किसी भी घटनाओं चिह्नित करने के लिए याद रखें:

[field:NonSerialized] 

हर दूसरे उपाय (CPU प्रदर्शन, बैंडविड्थ, मजबूती आप संस्करण, अंतर, रखरखाव की लागत, आदि) मैं चुनेंगे अन्य प्रारूपों :)

पर

यहाँ एक चयन प्रोफाइल है:

Performance Tests of Serializations used by WCF Bindings

शायद नहीं एक आश्चर्य (के बाद से मैं इसे लिखा था), लेकिन मैं Protobuf शुद्ध की ओर झुक ...

+0

'[nonSerialized] 'के साथ ईवेंट चिह्नित करने पर शानदार बिंदु। मैंने इसके बारे में नहीं सोचा था। – dewald

+0

प्रोटोबफ-नेट के पर्फ परीक्षण बहुत प्रभावशाली हैं। क्या आपकी लाइब्रेरी मेरे मामले के लिए काम करेगी? मुझे इंटरफेस की इंटरफेस और सूचियों को क्रमबद्ध करना है। इनमें से कुछ इंटरफेस अपरिवर्तनीय वस्तुओं का प्रतिनिधित्व करते हैं; यानी उनके पास केवल गेटर गुण हैं, और कार्यान्वयन वर्गों में निजी सेटर्स हैं। – dewald

+0

@ डेवाल्ड लगभग एक हफ्ते पहले यह उस के साथ संघर्ष कर रहा होगा; पिछले सप्ताहांत में मैंने एक फीचर जोड़ा जो * अंतर्निहित * प्रकार के विवरणों को संग्रहीत करके, एक बहुत ही सामान्य अनुरोध के बदसूरत जवाब को सक्षम करेगा। अधिक के लिए मेरे ब्लॉग देखें। –

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