Настроить WCF без использования файла конфигурации и создания прокси-клиента с конструктором по умолчанию - PullRequest
0 голосов
/ 01 июля 2011

Я не уверен, что это даже возможно, если честно,

Мне интересно, есть ли способ отменить использование конфигурационного файла без необходимости отмены создания клиентского прокси. Позвольте мне привести пример:

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

public MyObject GetMyObject(int id)
{
    using(var service = new MyObjectDataServiceClient())
    {
         return service.GetMyOBject(id);
    }
}

Это создаст вызов к серверу и вернет объект. Если клиентское приложение не имеет привязок и конечных точек, оно взорвется. Мы можем изменить каждое создание клиента службы данных, чтобы создать привязку и конечную точку, или создать собственный канал, чтобы сделать это для нас, но это означает изменение текущего кода уровня WCF DAL.

Моя цель состоит в том, чтобы попытаться создать способ вставки процесса в слой DAL WCF, который будет обрабатывать привязки и конечные точки без необходимости изменения кода потребления, одновременно устраняя необходимость в файле конфигурации.

До сих пор я думал о том, чтобы попытаться использовать файл TT, чтобы он создал частичный класс клиента службы данных и переопределил часть фабрики каналов. Это не удалось из-за того, что вызов конструктора для клиента службы данных переходит прямо в абстрактный класс (System.ServiceModel.ClientBase ) и пытается вывести содержимое конфигурации. Я не смог найти способ остановить его, глядя в конфигурации через этот частичный класс и не меняя уровень сервиса WCF DAL.

1 Ответ

1 голос
/ 01 июля 2011

Если у вас есть привязка и конечная точка в DAL, вы можете использовать другой конструктор класса клиента (тот, который принимает адрес привязки + адрес конечной точки). Этот конструктор полностью обходит конфигурацию, поэтому вам не нужно ничего настраивать.

...