Стоимость.net динамических прокси

Какова стоимость использования динамических прокси?

Я не хочу загромождать свой проект интерфейсными реализациями, поэтому я рассматриваю возможность использования динамических прокси-серверов, созданных некоторыми сторонними библиотеками, такими как LinFu, Castle, Unity и т. Д. Они генерируют один экземпляр для интерфейса или я получаю один для каждого вызова.

Это веб-приложение, так что проблема с производительностью в долгосрочной перспективе.

Я также использую EF 4.1 (CTP5 на данный момент), так что если он сам создает прокси-классы, это заставляет меня задуматься, могу ли я использовать собственные инструменты создания динамических прокси EF.

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

Все интерфейсы объявляют только некоторую часть POCO EF4.1. Так что просто добытчики и сеттеры.

2 ответа

Impromptu-Interface с открытым исходным кодом, требует C# 4.0, и создает облегченный тип прокси для каждой используемой комбинации интерфейса и типа реализации и сохраняет их в кэше.

Таким образом, создание прокси интерфейса вокруг данной реализации (ExpandoObject считается одним типом независимо от того, как вы его настроили) будет стоить единовременную стоимость создания типа прокси, Activator.CreateInstance за каждый раз, когда вы создаете прокси (который не является не плохо), и для каждого вызова будет статический вызов, который вы бы сделали без прокси + динамический вызов dlr, который очень оптимизирован благодаря Microsoft.

Похоже, вам нужно больше заглушки, а не динамического прокси. Возможно, вы захотите взглянуть на Мок. Насколько я знаю, каждый раз, когда вы создаете макет, создается новый экземпляр, но не знаю, хранит ли он внутри себя какой-то тип кеша. Имейте в виду, поскольку это библиотека, предназначенная для модульных тестов, так что такое использование будет, вероятно, неортодоксальным.

Другие вопросы по тегам