пятница, 9 октября 2009 г.

Идеальный менеджер пакетов для .Net

Буду собирать ссылки и мысли по поводу идеального менеджера пакетов для .Net

Преамбула

.Net разработка исторически была не очень “опен сорсовой”, то есть базировалась на проприетарных библиотеках.
Microsoft делает некоторые подвижки в этом направлении – открыл исходники .Net Framework, хостит opensource проекты на CodePlex, но до совершенства еще далеко – например, в VS нет удобного способа при отладке, к примеру, NHibernate, просматривать исходный код этой бибилиотеки.
При этом OpenSource проектов для .Net просто завались – например NHibernate, Spring.Net, майкрософтовские Pattern&Practices Building Blocks etc.
Есть еще и The Mono Project, который мало того, что  сам opensource, так еще и порождает множество проектов с открытым исходным кодом.

Зачем?

Если я подключаю внешнюю библиотеку (тот же NHibernate) то мне нужно руками следить за всеми зависимостями, котоые она тянет за собой, следить за их версиями, следить за конфликтом версий и тп.

Вместе с тем в Java мире это уже все давно пройденный этап – есть Maven, который поддерживается всеми основными IDE, есть Bulildr, есть opensource репозитории, которые подцепляются без проблем. Есть Ivy the package manager в конце концов.

В Java если ты хочешь разработать проект с использованием например Hibernate или Spring Framework, ты пишешь .pom файл из пяти строчек) – и тот же Maven скачивает тебе нужные версии всех нужных библиотек, со всеми их зависимостями, со всеми документациями и пр.

Что же делать?

Ну, есть NMaven (который суть плагин для Maven), есть Byldan, есть предложенный в Хабровской статье менеджер, но как-то оно все не складывается в единую картину.
Я вижу, что идеальный менеджер пакетов должен быть:
  • Клоном хорошо зарекомендовавшей себя Java-вской библиотеки (например, того же Maven);
  • Совместимым с Visual Studio (т.е иметь плагин, аналогичный Maven integration например в IntelliJ IDEA);
  • Использоваться как в .Net так и в Mono – технологии практически идентичные, надо дружить;
  • Иметь репозиторий проектов, куда любой уважаемый разработчик сможет залить свой проект для публичного доступа. CodeHaus и Sonatype Nexus – идеалы для подражания.
Но самое главное, как обычно, не технологии. Самое главное – показать .Net сообществу, что подход, принятый в Java мире, отлично подходит и для мира дотнетовского.
Вообщем, тема для размышлений богатейшая.

PS - Вот обсуждение на Хабре (комментарии тоже интересные)
http://habrahabr.ru/blogs/net/68453/
PS2 - Сравнение подходов Java/.Net на RSDN - http://rsdn.ru/forum/flame.comp/3275597.aspx
PS3 - посмотреть NPanday
PS4 - обсужение на stack overflow

Комментариев нет: