Вопрос проектирования - Обработка конфигурации приложения .NET на уровне DLL - PullRequest
6 голосов
/ 15 июня 2011

У меня есть существующая платформа на основе .NET 3.5, которая расширена с помощью пользовательских плагинов.В итоге плагины реализуют общий интерфейс, и базовая структура вызывает их через отражение.Фреймворк работает отлично, и все хорошо, однако ...

Теперь у меня есть требование, которое требует плагина, который связывается со службой WCF.На первый взгляд, это просто, добавьте сервисную ссылку на плагин, вызовите код прокси клиента и начнем.Однако ...

В связи с тем, как работает конфигурация .NET, конфигурация клиента службы WCF должна находиться в файле app.config исполняемого приложения.В данном случае это мое приложение-плагин invoker.Проблема в том, что он нарушает «модель» плагина, так как универсальное приложение invoker теперь должно иметь специфическую конфигурацию плагина внутри него.

Поэтому вопрос заключается в том, знает ли кто-нибудь об альтернативном механизме обработки сервиса WCFКонфигурация клиента, не помещая ее в конфигурацию приложения основного invoker?

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

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Конечная точка клиента WCF также может быть настроена программно .

Вот пример, показывающий, как вызывать службу WCF без необходимости в файле конфигурации:

var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("http://localhost/myservice");
var client = new MyServiceClient(myBinding, myEndpoint);

try
{
    client.MyServiceOperation();
    client.Close();
}
catch
{
    if (client != null)
    {
        client.Abort();
    }
}

Связанные ресурсы:

0 голосов
/ 15 июня 2011

Отвечая на мой собственный вопрос:

Кажется, я нашел решение проблемы здесь:

http://weblogs.asp.net/cibrax/archive/2007/10/19/loading-the-wcf-configuration-from-different-files-on-the-client-side.aspx

В итоге это позволяет вам указать пользовательскийфайл конфигурации, который содержит конфигурацию WCF в том виде, в котором она была сгенерирована Visual Studio - это означает, что конфигурация может быть легко поддержана.

После запуска нескольких быстрых тестов кажется, что она работает как надо (с несколькиминастройки здесь и там (см. комментарии на странице).

...