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>
AR
سلام
خیلی عالیه .. ممنون
اسماعیلشیدایی
خواهش می کنم، لطف دارید