Организация структуры проекта - CodeHelper

Организация структуры проекта

2

Встречалось мнение, что количество сборок, входящих в состав solution'a напрямую влияет на скорость билда. Также утверждалось, что один проект из 1000 файлов скомпилируется гораздо быстрее, чем 10 проектов из 100 файлов каждый. Кроме того, у автора этой точки зрения возникали серьезные сложности с реорганизацией структуры солюшена, состоящего из относительно большого количества проектов. Вследствие чего приводился довольно радикальный подход к организации ASP.NET MVC проекта. Выделялось всего 2 сборки:

  • UI контент, соответствующий структуре при развертывании (views, CSS, images, Global.asax, Web.config)
  • Весь остальной код (абсолютно весь (!) код, включая контроллеры, модели, модели вида, репозитории доступа к данным, определения для ORM мэппинга и т.д.)

Отсюда вопрос — как наиболее рационально подходить к разбиению solution'а на проекты?

Новые ответы


0

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

Что касается времени билда, то скорей всего 10 проектов по 100 файлов будут строиться несколько дольше чем 1 проект из 1000 файлов.

safonovea

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

alex.algel

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

0

С текущими мощностями компьютеров, по-моему, не стоит сильно беспокоиться о времени билда. Какая разница, билдица проект 2 секунды или 7 секунд? Если говорить о Visual Studio, то решение из 30 проектов строится довольно-таки быстро. То есть, я считаю, что при разбиении на проекты нужно в первую очередь руководствоваться принципами пакетирования, а не временем сборки. Вообще, все решение в виде одного-двух проектов — это очень радикально. В реальном проекте лучше найти компромисс. Так, можно начать проект, создавая столько проектов сколько кажется правильным (с точки зрения принципов пакетирования), а затем, если структура решения станет слишком запутанной, то объединить некоторые проекты в один.

Sane

2 секунды или 7 - действительно, разницы нет. А вот 2 минуты или 7 - разница огромная. Разбивать, по-моему, стоит по принципу независимости модулей. Такой способ разбиения существенно повышает скорость билда, а, значит, и скорость отладки.

Alexander

Интересная мысль.


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.