ارسال شده توسط administrator
23. جوان 2010 17:16
این مقاله، پنجمین مرحله از شش مرحله ای است که باید برای ایجاد یک سرویس Windows Communication Foundation یا (WCF) و یک client که سرویس را فراخوانی می کند، انجام داد.
این مقاله، فایل پیکربندی client را که با استفاده از ServiceModel Metadata Utility Tool (Svcutil.exe) ایجاد شده، به client project اضافه می کند و و محتویات عناصر پیکربندی client را توضیح می دهد. پیکربندی client، شامل تعیین یک endpoint است که client جهت دسترسی به سرویس استفاده می کند. یک endpoint، دارای یک آدرس، یک binding، و یک contract است، و هر یک اینها باید در فرآیند پیکربندی client معین شوند.
محتویات فایل پیکربندی که برای client ایجاد شده، در ادامه آورده شده است.
پیکربندی یک Windows Communication Foundation Client
- فایل پیکربندی App.config را که در مقاله قبلی generate شده، به client project در Visual Studio اضافه کنید. روی client project در Solution Explorer کلیک راست کنید، Add و سپس Existing Item را انتخاب کنید. بعداً، فایل پیکربندی App.config را از دایرکتوری که SvcUtil.exe را اجرا کردید، انتخاب کنید. OK کنید. به طور پیش فرض، پنجره Add Existing Item، همه فایل ها را با یک .config فیلتر می کند. برای دیدن این فایل ها، All Files (*.*) را از لیست گوشه سمت راست در پایین پنجره Add Existing Item، انتخاب کنید.
- فایل پیکربندی generate را باز کنید. Svcutil.exe، تعدادی value برای هر setting در binding ایجاد می کند. مثال زیر، یک view از فایل پیکربندی generate شده می باشد. در پایین بخش <system.serviceModel>، عنصر <endpoint> را پیدا کنید. فایل پیکربندی زیر، نسخه ساده شده ای از فایل generate شده است.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_ICalculator">
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint
address="http://localhost:8000/ServiceModelSamples/Service/CalculatorService"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_ICalculator"
contract="Microsoft.ServiceModel.Samples.ICalculator"
name="WSHttpBinding_ICalculator">
</endpoint>
</client>
</system.serviceModel>
</configuration>
این مثال، endpointیی را پیکربندی می کند که client برای دسترسی به سرویسی که در این آدرس
"http://localhost:8000/ServiceModelSamples/service" قرار گرفته، استفاده می کند.
عنصر endpoint، تعیین می کند که از کانترکت Microsoft.ServiceModel.Samples.Icalculator برای ارتباطی استفاده می شود که با WsHttpBinding، که توسط سیستم مهیا شده، پیکربندی می شود.
مثال
این مثال، محتویات فایل پیکربندی را که برای client ایجاد شده، نشان می دهد.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_ICalculator"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
bypassProxyOnLocal="false"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288"
maxReceivedMessageSize="65536"
messageEncoding="Text"
textEncoding="utf-8"
useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32"
maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true"
inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows"
proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default"
establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8000/ServiceModelSamples/Service/CalculatorService"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_ICalculator"
contract="ICalculator"
name="WSHttpBinding_ICalculator">
<identity>
<userPrincipalName value="user@contoso.com" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
الان client پیکر بندی شده است.