Что такое <client>элемент app.config? - PullRequest
0 голосов
/ 23 августа 2009

Что такое <client> элемент app.config?

Почему это добавляется на стороне клиента, когда я добавляю сервисную ссылку?

Как я могу получить доступ к этому элементу программно?

Ответы [ 2 ]

0 голосов
/ 23 августа 2009

Добавляя ссылки на сборку System.Configuration, вы также можете при необходимости загрузить секцию <client> в память и просмотреть ее там:

using System.Configuration;
using System.ServiceModel.Configuration;

.....

ClientSection clientSection = 
   (ClientSection)ConfigurationManager.GetSection("system.serviceModel/client");

Но, как правило, вы бы использовали только подход, описанный Гэвином Шульцем - пусть ServiceModel обрабатывает чтение и интерпретацию этого раздела и предоставит вам прокси-клиент для использования при вызове вашей службы.

Марк

0 голосов
/ 23 августа 2009

Это аналог раздела <service> на стороне службы WCF. Он в основном используется для настройки конечных точек, используемых для соединения клиента и сервиса. Другими словами, в нем говорится, где подключаться к службе и какую привязку использовать.

Например, если у вас есть служба WCF, размещенная в IIS, у вас может быть такой раздел:

<system.serviceModel>
  <services>
    <service name="MyService">
      <endpoint address="http://localhost:8080/MEX" binding="mexHttpBinding" bindingConfiguration="" name="mex" contract="IMetadataExchange" />
      <endpoint address="http://localhost:8111" binding="wsHttpBinding" bindingConfiguration="WS_HTTP_Secure" name="WS_HTTP_Endpoint" contract="IMyService" />
    </service>
  </services>
</system.serviceModel>

Таким образом, на стороне клиента у вас будет соответствующий набор записей для раздела <client>, например,

<system.serviceModel>
  <client>
    <endpoint address="http://localhost:8111/" binding="wsHttpBinding" 
      bindingConfiguration="WS_HTTP_Endpoint_Binding" contract="MyService" name="WS_HTTP_Endpoint" />
  </client>
</system.serviceModel>

Как правило, нет необходимости обращаться к этому разделу программно. Добавление ссылки на службу в ваш проект добавило бы прокси-классы в ваш проект, и при использовании этих классов вы можете указать конечную точку для использования там. Например, скажем, вы назвали свои классы обслуживания «MyService», вы можете инициализировать его следующим образом:

MyServicesClient client = new MyServicesClient("WS_HTTP_Endpoint");

Нет необходимости указывать его в конструкторе, например, если у вас несколько конечных точек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...