Фреймворки IoC / DI с приложениями Smart Client Winform: как мне подходить к этому? - PullRequest
11 голосов
/ 29 марта 2009

Я запускаю новое приложение Winforms и намереваюсь использовать инфраструктуру IoC / DI (возможно, Ninject, но я также думаю о StructureMap и LinFu).

Кажется, что почти все, кто использует IoC / DI, делают это в веб-среде и практически ничего не нашли при использовании Winforms с ним.

Я хотел бы знать, использует ли кто-нибудь IoC / DI с Winforms и какие подходы вы использовали для решения проблем, связанных с Winforms (например, как вы делаете контейнер доступным в различных частях приложения, вы используете рамки для создания ваших форм и т.д ..)

Если кто-нибудь знает о каких-либо проектах на основе Winforms с открытым исходным кодом, использующих IoC / DI (не имеет значения, какую платформу, я должен быть в состоянии переводить концепции), я также хотел бы ссылки на них.

EDIT:

Люди больше не пишут Smart Clients?

EDIT:

Если бы вы могли указать мне на некоторый реальный код, который использует IoC / DI в Winforms или даже консольном приложении (то есть что-то, не основанное на Web), я был бы признателен.

EDIT:

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

Ответы [ 4 ]

6 голосов
/ 29 марта 2009

Группа Microsoft по шаблонам и практикам, которая поддерживает контейнер для инъекций Unity , также создала Smart Client - составной блок приложения пользовательского интерфейса для winforms, который, как я считаю, использует Unity. Я знаю новую версию WPF под названием Руководство по составному клиентскому приложению (кодовое название Prism) использует Unity

5 голосов
/ 29 марта 2009

Я только недавно начал писать новое приложение WinForms с нуля, используя StructureMap для IoC. Ранее я смотрел на SCSF и CAB, но нашел их слишком сложными.

Я написал несколько свободно распространяемых API поверх реестра StructureMaps, чтобы наши модули могли регистрировать команды, докладчиков и представления.

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

1 голос
/ 06 июня 2009

Я написал приложение для отображения карт из векторных данных OpenStreetMap (http://wiki.openstreetmap.org/index.php/Kosmos).. Я разработал собственную простую инфраструктуру MVP, которая использует Windsor Castle в качестве контейнера IoC. Вы можете скачать исходный код, если вам интересно , в настоящее время лицензирована BSD.

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

0 голосов
/ 25 сентября 2009

Если вам нужен контейнер Inversion of Control и вы хотите получить немного более низкий уровень, чем Unity, посмотрите ObjectBuilder из группы Microsoft Patterns and Practices. Unity - это слой абстракции поверх ObjectBuilder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...