WCF - динамический вызов разных конечных точек веб-служб, реализующих один и тот же интерфейс - PullRequest
3 голосов
/ 07 января 2011

У меня есть несколько разных приложений, которые реализуют один и тот же контракт.В моем основном приложении я хотел бы иметь один прокси.Затем динамически, учитывая Uri для конкретного приложения, я бы создал запрос веб-службы и вызвал бы его.Как это можно сделать?Спасибо!

Ответы [ 2 ]

7 голосов
/ 08 января 2011

Выполните следующие действия:

  • создайте свой клиентский прокси на основе одной службы
  • это также сгенерирует классы C # / VB.NET для васкак app.config (или web.config, если ваш клиент - веб-приложение)

  • при вызове конечной точки службы по умолчанию, вы можете сделать что-то вроде:

    YourServiceClient client = new YourServiceClient();
    client.CallSomeMethod();
    

    При этом будут использоваться все настройки из конечной точки службы по умолчанию, определенные в вашем конфигурационном файле

  • , если вам нужно указать другую конечную точку, выполните следующие действия:

    YourServiceClient client = 
       new YourServiceClient("default", "http://server/YourOtherService.svc");
    client.CallSomeMethod();
    

    Существует перегрузка для конструктора клиента, который будет принимать два параметра: имя конфигурации конечной точки в файле конфигурации клиента (вы должны найти это после добавления ссылки на службу) и желаемый URL-адрес конечной точкидля подключения (которое может отличаться от того, что хранится в конфигурации).

Если все остальные параметры, такие как контракт на обслуживание, информация о привязке и т. д., остаются прежними, этот метод должен работать иэто шоуld позволяет вам подключаться к любому количеству различных конечных точек, используя эту перегрузку второго конструктора.

3 голосов
/ 08 января 2011

Когда вы создаете экземпляр клиента службы, вы можете установить uri

ReconcileSvc.ReconcileClient client = new ReconcileClient();
client.Endpoint.Address = new System.ServiceModel.EndpointAddress(uri);

Надеюсь, это поможет.

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