Каковы накладные расходы, связанные с контейнерами IoC, такими как StructureMap? - PullRequest
3 голосов
/ 12 сентября 2008

После посещения недавней группы Alt.NET по IoC, я задумался о доступных инструментах и ​​о том, как они могут работать. В частности, StructureMap использует как атрибуты, так и концепции загрузчика для сопоставления запросов от IThing до ConcreteThing. Атрибуты автоматически выдают мне флажки, что происходит отражение или IL-инъекция. Кто-нибудь знает точно, как это работает (для StructureMap или других инструментов IoC) и какие связанные с этим издержки могут быть во время выполнения или во время компиляции?

Ответы [ 4 ]

1 голос
/ 12 сентября 2008

Я использую Windsor из CastleProject и считаю его чрезвычайно полезным для уменьшения зависимостей. Я еще не заметил проблемы с производительностью, но я обнаружил, что конфигурация может стать немного громоздкой. Чтобы помочь в этом, я начинаю смотреть на Binsor, DSL для Windsor, написанный на boo.

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

1 голос
/ 12 сентября 2008

Я не могу много сказать о других наборах инструментов IoC, но я использую Spring.Net и обнаружил, что при запуске наблюдается одноразовое снижение производительности. После настройки контейнера приложение работает без изменений.

0 голосов
/ 09 октября 2008

Я построил очень легкий и простой МОК , здесь:

http://blogs.microsoft.co.il/blogs/shay/archive/2008/09/30/building-custom-object-mapper.aspx

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

Я не работаю с типами экземпляров (singleton, transient, thread, pool ...), все объекты будут создаваться как одиночные, вы называете это следующим образом:

IRepository _repository = ObjectFactory.BuildFactory<IRepository>();

Шей

0 голосов
/ 12 сентября 2008

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

...