2010-04-23 2 views
1

В настоящее время мы используем регистрацию прокси WCF-прокси в контейнере Windsor с использованием средства интеграции WCF. Например:Конфигурация XML Виджета Castle Windsor для WCF-прокси с использованием средства интеграции WCF

container.Register(
    Component.For<CalculatorSoap>() 
     .Named("calculatorSoap") 
     .LifeStyle.Transient 
     .ActAs(new DefaultClientModel 
     { 
     Endpoint = WcfEndpoint.FromConfiguration("CalculatorSoap").LogMessages() 
     } 
    ) 
    ); 

Есть ли способ сделать то же самое через конфигурационный файл XML Windsor. Я не могу найти какой-либо образец этого в google.

Заранее спасибо

+0

Почему вы хотите поместить это в .config? Код является рекомендуемым способом –

+0

Поскольку мы хотим изменить реализацию на основе среды: реализация в памяти для dev env и прокси-сервера WCF для создания env. IMHO, config - наиболее подходящий способ для этого. В настоящее время мы используем обходной путь - пользовательский WindsorInstaller, который выполняет логику if-else. –

+0

Я думаю, что подход 'IWindsorInstaller' лучше. Переместите имя среды в .config, а не на компоненты. –

ответ

2

Замок WCF интеграции хранилище Facility (http://github.com/castleproject/Castle.Facilities.Wcf) теперь содержит образец регистрации клиента WCF из файла конфигурации Windsor:

<?xml version='1.0' encoding='utf-8' ?> 
<configuration> 
<facilities> 
    <facility id='wcf' 
       type='Castle.Facilities.WcfIntegration.WcfFacility, 
        Castle.Facilities.WcfIntegration' /> 
</facilities> 

<components> 
    <component id='calculatorSoap' 
       type='Demo.CalculatorSoap, Demo.UnitTests' 
       wcfEndpointConfiguration='CalculatorSoap'> 
    </component> 
</components> 
</configuration> 

Это то, что я искал. Благодарим вас за помощь.

Примечание: обратите внимание на образ жизни. В общем случае, для прокси-сервера WCF должен быть закрыт переходный образ жизни при выпуске объекта. В то время как стиль жизни Windsor по умолчанию является одиночным, в этом случае прокси-сервер WCF будет закрыт при утилизации контейнеров.

С уважением, Андрей

1

Использование IWindsorInstaller и делать регистрацию через код является рекомендуемым способом. Конфигурация предназначена для конфигурации (и устаревших сценариев).

Я бы создал для этого два установщика и на основе флага компиляции использовал один или другой;

var installer = 
#if DEBUG 
new TestingServiceInstaller(); 
#elseif 
new ProductionServiceInstaller(); 
#endif 

container.Install(installer); 
Смежные вопросы