2012-03-02 5 views
4

Созданы ли сгенерированные прокси-серверы Svcutil по сравнению с ChannelFactory, используемым во время выполнения? Прокси-сервер ChannelFactory по умолчанию?Производительность ChannelFactory <T> по сравнению с предварительно сгенерированным прокси-сервером с использованием Svcutil

Я использую .NET 4 с услугой, которая имеет более 100 операций и более 500 контрактов данных, участвующих в ней.

Когда я использую ChannelFactory<T>, мне требуется очень много времени, чтобы вернуть мне прокси. Можно ли предложить, какой из них лучше всего создать прокси?

Мой код выглядит следующим образом:

EndpointAddress endPoint = new EndpointAddress(url); 
// My own API which gives the custom binding I create programatically 
CustomBinding binding = BindingFactory.GetCustomBinding("WSECustomBinding"); 
ChannelFactory<T> factory = new ChannelFactory<T>(binding, endPoint); 

ответ

2

При генерации кода SvcUtil, вы получаете класс, расширяющий ClientBase, который является оболочкой для ChannelFactory.

Прокси-серверы Svcutil позволяют вам использовать службу как методы для объектов, а не напрямую взаимодействовать с ChannelFactories/Channels, и, кроме того, предлагайте некоторые дополнительные функции, такие как кэширующие каналы, но под капотом это the same engine.

С вашего кода неясно, что вы делаете, но создаете ChannelFactory при каждом вызове операции? Создание ChannelFactory является дорогостоящим, и вы обычно кешируете этот экземпляр, чтобы затем его использовать, чтобы открыть, использовать, а затем закрыть каналы для вызовов операций.

Смотрите следующие страницы для более детальных объяснений: