DI или реестр
От: techgl  
Дата: 27.05.09 18:17
Оценка:
Как решается проблема зависимостей и компонентов-одиночек(необходимых в одном экземпляре) в клиентских (desktop) приложениях?
Использовать ли реестр, как типовое решение, или попробовать взять контейнер (какой?), реализующий IoC?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: DI или реестр
От: Stormblast http://www.myspace.com/stormblastblack
Дата: 27.05.09 19:39
Оценка:
Здравствуйте, techgl
используй Manager
Re: DI или реестр
От: baranovda Российская Империя  
Дата: 27.05.09 19:49
Оценка:
Здравствуйте, techgl, Вы писали:

T>Как решается проблема зависимостей и компонентов-одиночек(необходимых в одном экземпляре) в клиентских (desktop) приложениях?


Синглтон запихнуть в контейнер, а контейнер сделать синглтоном, при этом рекомендуется связывать контейнер-синглтон не с процессом, а с логическим или физическим изолирующим контекстом (плагином, потоком, AppDomain-ом в .NET).

T>Использовать ли реестр, как типовое решение, или попробовать взять контейнер (какой?), реализующий IoC?

Если речь идёт о .NET, осмелюсь порекомендовать Microsoft Unity.
Re: DI или реестр
От: Sinix  
Дата: 28.05.09 02:24
Оценка:
Здравствуйте, techgl

T>Как решается проблема зависимостей и компонентов-одиночек(необходимых в одном экземпляре) в клиентских (desktop) приложениях?


Я предпочитаю тупо выставлять синглтоны через статические свойства класса. Понадобится — прикручу сзади какой-нить service provider.
Re[2]: DI или реестр
От: Stormblast http://www.myspace.com/stormblastblack
Дата: 28.05.09 06:09
Оценка: 2 (1)
http://rsdn.ru/forum/design/3335534.1.aspx
Автор: Stormblast
Дата: 20.03.09
Re: DI или реестр
От: Ziaw Россия  
Дата: 28.05.09 06:11
Оценка: +1
Здравствуйте, techgl, Вы писали:

T>Как решается проблема зависимостей и компонентов-одиночек(необходимых в одном экземпляре) в клиентских (desktop) приложениях?

T>Использовать ли реестр, как типовое решение, или попробовать взять контейнер (какой?), реализующий IoC?

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

.Net? Порекомендую Spring.Net, тяжеловат, но в уже первом нашем приложении с его использованием в итоге был использовано более 80% функционала. Причем до использования этого не ожидалось вообще. Т.е. аппетит пришел во время еды.

То, что мне нравится больше всего в нем — внешний конфиг, т.е. код приложения почти не знает о спринге. Впрочем сейчас уже многие DI фреймворки это умеют. Но то, что не пробовал рекомендовать не буду.
... << RSDN@Home 1.2.0 alpha 4 rev. 1176>>
Re: DI или реестр
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 28.05.09 14:21
Оценка:
Здравствуйте, techgl, Вы писали:

T>Как решается проблема зависимостей и компонентов-одиночек(необходимых в одном экземпляре) в клиентских (desktop) приложениях?

T>Использовать ли реестр, как типовое решение, или попробовать взять контейнер (какой?), реализующий IoC?

Имеет смысл использовать Dependency Injection container. Зависимость типа от синглтона не видна "снаружи", снижается прозрачность контракта и снижается легкость изменения, тестируемость.

Например, в Web Client Software Factory в контейнере регистрируется HttpContext, который итак доступн через HttpContext.Current.

В Unity для этих целей есть ContainerControlledLifetimeManager.
Re[2]: DI или реестр
От: techgl  
Дата: 28.05.09 17:45
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Используйте контейнер, не пожалеете. К хорошему привыкаешь быстро, а не пользовавшимся шуруповертом всегда будет казаться, что нет никаких проблем закрутить десяток шурупов обычной отверткой.

Хочу попробовать вариант с типовым решением, сначала. Но контейнер уже присмотрел — PicoContainer. Почитал — DI нормально реализует.
Просто Spring — слишком тяжелое решение для нашего приложения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: DI или реестр
От: meowth  
Дата: 29.05.09 07:25
Оценка:
Здравствуйте, techgl, Вы писали:

T>Здравствуйте, Ziaw, Вы писали:


Z>>Используйте контейнер, не пожалеете. К хорошему привыкаешь быстро, а не пользовавшимся шуруповертом всегда будет казаться, что нет никаких проблем закрутить десяток шурупов обычной отверткой.

T>Хочу попробовать вариант с типовым решением, сначала. Но контейнер уже присмотрел — PicoContainer. Почитал — DI нормально реализует.
T>Просто Spring — слишком тяжелое решение для нашего приложения.

Попробуйте для начала NInject -- он чисто контейнер. Аппетит придет, встретитесь с проблемами, поглядите и в сторону Spring.NET -- там много чего может в жизни пригодиться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.