2009-12-06 15 views
15

क्या है, मैं विशेष रूप से विभिन्न विस्तारशीलता बिंदुओं पर प्रभाव और प्रभाव में डब्ल्यूसीएफ की प्रेषण प्रक्रिया की बेहतर समझ हासिल करने की कोशिश कर रहा हूं। नीचे सूचीबद्ध वेब पेजों से, ऐसा लगता है कि चैनल स्टैक द्वारा प्रेषक को संदेश भेजे जाने के बाद डब्ल्यूसीएफ निम्नलिखित अनुक्रम में निम्न कार्य करेगा।डब्ल्यूसीएफ प्रेषण पाइपलाइन संदेश प्रवाह

  1. संदेश इंस्पेक्टर
  2. ऑपरेशन चयनकर्ता
  3. संदेश का प्रारूपण
  4. पैरामीटर निरीक्षक
  5. ऑपरेशन Invoker।

मैं अपने पास किसी समस्या को हल करने के लिए कुछ विकल्प ढूंढने की कोशिश कर रहा हूं और एक तरह से मैं सोच रहा हूं कि संदेश निरीक्षक, ऑपरेशन चयनकर्ता, संदेश स्वरूपण और ऑपरेशन इनवॉकर के संयोजन का उपयोग करना है।

  1. ऑपरेशन चयनकर्ता
  2. संदेश इंस्पेक्टर
  3. ऑपरेशन Invoker (AllocateInputs())
  4. संदेश प्रारूपण: दुर्भाग्य से, मेरी अवलोकन इंगित करने के लिए निष्पादन के अनुक्रम है के रूप में इस प्रकार के बजाय लगता है
  5. पैरामीटर इंस्पेक्टर
  6. ओपेरा tion Invoker (आह्वान())

मैं मामूली अंतर को समझ सकते हैं, जहां एक कस्टम invoker AllocateInputs() विधि संदेश प्रारूपण खंड के रूप में संदेश स्वरूपण से पहले कहा जाता है अनिवार्य रूप से विधि तर्क के एक सेट में दिए गए संदेश deserialising है उचित संचालन के लिए पारित किया जाना चाहिए और आवेदक के आवंटन इनपुट() विधि निर्दिष्ट करता है कि कितने पैरामीटर अपेक्षित हैं।

जो भाग मुझे फेंकता है वह संदेश निरीक्षक और ऑपरेशन चयनकर्ता के बीच अनुक्रम का उलटा है। मैसेज इंस्पेक्टरों को संदेश पर कार्य करने के लिए पहली बार चलाने के लिए यह तार्किक लगता है जबकि ऑपरेशन चयनकर्ता यह निर्धारित करता है कि किस सेवा ऑपरेशन के लिए संदेश लक्षित किया गया है।

सवाल:

  • है कि विभिन्न संस्करणों या WCF के रिलीज की वजह से?
  • ऐसा इसलिए है क्योंकि डब्ल्यूसीएफ वास्तव में एक्स्टेंसिबिलिटी पॉइंट निष्पादन अनुक्रम निर्दिष्ट नहीं करता है?

संदर्भ पृष्ठों:
Extending WCF to support custom data formats - जुल्फिकार के वेबलॉग
Extending WCF with Custom Behaviours - MSDN सर्विस स्टेशन दिसंबर 2007
Message Flow Interception Points - निकोलस एलेन की इंडिगो ब्लॉग

नोट: लिंक प्रदान नहीं करने के लिए मेरे क्षमायाचना, कर सकते हैं ' टी एक से अधिक है क्योंकि मैं अभी भी एक नोब हूँ।=)

+1

वहां, मैंने आपकी कहानी को वोट दिया। आप अब एक से अधिक लिंक पोस्ट करने में सक्षम हो सकते हैं क्योंकि आपके पास 11 प्रतिनिधि होंगे ... शायद: पी –

+2

मैंने आपके लिए लिंक जोड़े, @hg। – bobbymcr

+0

आह ... मुझे नहीं पता था कि यह प्रतिनिधि के साथ क्या करना है। बहुत धन्यवाद, @ क्रोए। धन्यवाद @bobbymcr भी लिंक डालने के लिए। क्या कुछ जवाबों के लिए आशा करना बहुत अधिक होगा? =) –

उत्तर

5

कोड में निष्पादित वास्तविक आदेश निर्धारित करने के लिए मैं डब्ल्यूसीएफ के लिए ट्रेसिंग चालू करने और जेनरेट किए गए ट्रेस लॉग को देखने की सलाह दूंगा। यह कॉन्फ़िग फ़ाइल को यह जोड़कर सक्रिय किया जा सकता:

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
       <listeners> 
        <add name="traceListener" 
         type="System.Diagnostics.XmlWriterTraceListener" 
         initializeData= "c:\log\Traces.svclog" /> 
       </listeners> 
      </source> 
     </sources> 
    </system.diagnostics> 
</configuration> 

जहाँ तक WCF में तानाना अंक के रूप में, कार्लोस Figueira (माइक्रोसॉफ्ट पर WCF का इंजीनियरों में से एक) एक पोस्ट लगभग तानाना अंक के सभी का ब्यौरा है डब्ल्यूसीएफ में (http://blogs.msdn.com/b/carlosfigueira/archive/2011/03/14/wcf-extensibility.aspx)।

इस पोस्ट आदेश में इस तरह के रूप में सूचीबद्ध है की WCF रनटाइम अनुभाग में:

1.2. WCF Runtime 
    1.2.1. Message interception 
     1.2.1.1. I[Client/Dispatch]MessageInspector 
     1.2.1.2. IParameterInspector 
    1.2.2. Mapping between message and operation parameter 
     1.2.2.1. I[Client/Dispatch]MessageFormatter 
    1.2.3. Mapping between message and CLR operations 
     1.2.3.1. I[Client/Dispatch]OperationSelector 
     1.2.3.2. IOperationInvoker 
    1.2.4. Instance creation 
     1.2.4.1. IInstanceProvider 
     1.2.4.2. IInstanceContextProvider 
    1.2.5. Error handling 
     1.2.5.1. IErrorHandler 
    1.2.6. Others 
     1.2.6.1. ICallContextInitializer 
     1.2.6.2. IChannelInitializer 
     1.2.6.3. IInteractiveChannelInitializer 

मैं दो WCF में आपरेशन के आदेश स्पष्ट हो जाना चाहिए के बीच लगता है।

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