2009-04-25 15 views
16

मेरा एएसपीनेट वेब पेज आईआईएस वेब सर्वर पर हैं और यह बुनियादी HTTP बाध्यकारी का उपयोग कर डब्ल्यूसीएफ सेवाओं (विंडोज़ 2008 ऐप सर्वर पर बैठा) के साथ संचार करता है। मेरी डब्ल्यूसीएफ सेवाओं का प्रदर्शन इतना अच्छा प्रतीत नहीं होता है और मैं इसे सुधारना चाहता हूं। इसके अलावा, मुझे स्केलेबिलिटी पर संतुलन रखना होगा क्योंकि मेरी साइट पर बहुत अधिक ट्रैफिक होगा।डब्ल्यूसीएफ सेवाओं में प्रोटोबफ का उपयोग

HTTP संपीड़न, थ्रॉटलिंग तरीकों में से कुछ के बारे में पता कर रहा हूँ, लेकिन उनमें प्रयास नहीं किया है अभी तक कर रहे हैं .. मैं उपयोग कर सकते हैं protobuf एपीआई ... कृपया सुझाव है ...

उत्तर

27

संक्षिप्त उत्तर "हाँ" है ...

प्रोटोकॉल कल्पना बफ़र्स एक RPC ढेर प्रदान नहीं करता है, लेकिन कुछ कल्पना के बाहर जोड़ा गया है।

सबसे पहले, protobuf-net में डब्ल्यूसीएफ के लिए हुक है, जिससे आप अपने सेवा अनुबंध पर ProtoBehavior के रूप में संचालन को चिह्नित कर सकते हैं। यह प्रोटोबफ-नेट क्रमबद्धता का उपयोग करने के लिए नियमित DataContractSerializer को स्वैप करता है। (जैसे [ProtoMember(Order = 1)]), क्योंकि यह क्षेत्र पहचानकर्ता के रूप में इन नंबरों (प्रोटोकॉल बफ़र्स संख्यात्मक फ़ील्ड का उपयोग करता है)

  • यह विधानसभा के लिए सर्वाधिक कारगर उपयोग करता

    • अपने डेटा-सदस्यों स्पष्ट आदेश होना चाहिए: हालांकि, कुछ चेतावनियां हैं/वर्ग शेयरिंग (सेवा अनुबंध आदि की), के बाद से इस कस्टम व्यवहार "MEX"

    जब बुनियादी http परिवहन के साथ इस्तेमाल किया पर संपर्क में नहीं है, यह भी अधिकतम througput के लिए MTOM के साथ संगत (यदि सक्षम) है। गैर-तुच्छ संदेश का प्रदर्शन काफी हद तक उनके आकार के लिए आनुपातिक है; आप प्रोटोबफ-नेट के आकार here का विचार प्राप्त कर सकते हैं।

    वैकल्पिक रूप से, मैं एक bespoke RPC स्टैक पर भी काम कर रहा हूं। current build में http पर एक कार्यरत स्टैक है, लेकिन मुझे मौका मिलने पर कच्चे टीसीपी/आईपी पर इसे सक्षम करने की भी योजना है। मुझे अभी तक इसे लिखने का मौका नहीं मिला है, लेकिन मैं अनुरोध पर उदाहरण प्रदान कर सकता हूं। ध्यान दें कि इसे सबसे सुविधाजनक रूप से उपयोग करने के लिए, आप 3.5 "एक्सटेंशन" डीएल भी चाहते हैं।

    कोई प्रश्न, कोई टिप्पणी जोड़ें या मुझे ई-मेल करें (मेरी प्रोफ़ाइल देखें)।

  • +0

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

    0

    protobuf-net देखें।

    प्रोटोबफ-नेट इसका एक .NET कार्यान्वयन है, जिससे आप को अपने .NET ऑब्जेक्ट को कुशलतापूर्वक और आसानी से क्रमबद्ध कर सकते हैं। इसमें .NET परिवार के सबसे के साथ संगत , .NET 2.0 सहित है/3.0/3.5, .NET CF 2.0/3.5, मोनो 2.x, Silverlight 2, आदि

    +0

    आपके उत्तर के लिए धन्यवाद ... क्या मुझे पता है कि क्या आपने पहले ही प्रोटोबफ का उपयोग किया है और कितना प्रदर्शन सुधार देखा जाता है? –

    +0

    दरअसल मार्क, उस लाइब्रेरी का लेखक कहीं स्टैक ओवरफ्लो पर है। मैं उसे ईमेल करूंगा और उसे प्रश्न पर इंगित करूंगा :) – blowdart

    +5

    स्पष्टीकरण के लिए, मैं केवल "प्रोटोबफ-नेट" का लेखक हूं; "प्रोटोकॉल बफर" Google पर कुछ बहुत ही स्मार्ट लोगों को क्रेडिट है। –

    2

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

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