Binding and Behavior

Binding and Behavior

 بسم الله االرحمن الرحیم

آموزش WCF

Binding

 یک تعریف ساده برای Binding توصیف می کند چطور کلاینت با سرویس ارتباط بر قرار خواهد کرد. این مطلب را می توانیم با یک مثال متوجه شویم. این سناریو را در نظر بگیرید، می خواهیم سرویسی را بسازیم که دو نوع مختلف از کلاینت می بایست به آن متصل شوند. یکی از کلاینت ها می بایست به صورت SOAP و با استفاده از http و کلاینت دیگر به صورت Binary و از طریق TCP متصل خواهد شد. این کار چطور می تواند صورت پذیرد؟ با وب سرویس که خیلی سخت خواهد بود، اما در WCF فقط کافی است یک Endpoint ویژه به فایل پیکربندی اضافه کنیم.



<system.serviceModel>
    <services>
      <service name="MathService"
        behaviorConfiguration="MathServi

 بسم الله االرحمن الرحیم

آموزش WCF

Binding

 یک تعریف ساده برای Binding توصیف می کند چطور کلاینت با سرویس ارتباط بر قرار خواهد کرد. این مطلب را می توانیم با یک مثال متوجه شویم. این سناریو را در نظر بگیرید، می خواهیم سرویسی را بسازیم که دو نوع مختلف از کلاینت می بایست به آن متصل شوند. یکی از کلاینت ها می بایست به صورت SOAP و با استفاده از http و کلاینت دیگر به صورت Binary و از طریق TCP متصل خواهد شد. این کار چطور می تواند صورت پذیرد؟ با وب سرویس که خیلی سخت خواهد بود، اما در WCF فقط کافی است یک Endpoint ویژه به فایل پیکربندی اضافه کنیم.



<system.serviceModel>
    <services>
      <service name="MathService"
        behaviorConfiguration="MathServiceBehavior">
      <endpoint address="http://localhost:8090/MyService/MathService.svc"
        contract="IMathService"
          binding="wsHttpBinding"/>
<endpoint address="net.tcp://localhost:8080/MyService/MathService.svc"
contract="IMathService"
          binding="netTcpBinding"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MathServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

 

مشاهده می کنید که چقدر این کار در WCF ساده است. مایکروسافت همه چیز را ساده کرده است. رفتارهای یا behaviorهای  مشترک بر روی همه ی EndPoint ها سراسری تاثیر می گذارد.

service behaviors فقط بر روی سرویس های مرتبط تاثیر می گذارد. endpoint behaviors فقط بر روی پراپرتی های EndPoint های مرتبط تاثیر می گذارد. رفتارهای operation سطحی فقط بر روی operation خاص تاثیر می گذارد.

 

Example

در پیکربندی زیر، من رفتار را در سطح سرویس ذکر کرده ام.در  service behaviour من گره servieMetadata را با خصویت httGetEnabled='true' ذکر کردم. این خصوصیت انتشار سرویس metadata را مشخص خواهد کرد. به طور مشابه ما می توانیم خصوصیت های بیشتری را به سرویس اضافه کنیم:



system.serviceModel>
    <services>
      <service name="MathService"
        behaviorConfiguration="MathServiceBehavior">
        <endpoint address="" contract="IMathService"
          binding="wsHttpBinding"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MathServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

نظرات

  • Hannah Martinez
    AR
    دو شنبه 11 دی 1278 - 0:00

    سلام

    خیلی عالیه .. ممنون

    • Judith Bell
      پاسخ
      اسماعیلشیدایی
      دو شنبه 11 دی 1278 - 0:00

      خواهش می کنم، لطف دارید

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس