2010-08-26 3 views
1

Учитывая, что на нескольких веб-сайтах работает одинаковый исходный код, какой лучший/наиболее удобный способ организовать их в проектах в визуальной студии?Самый поддерживаемый способ совместного использования кода между несколькими проектами

Например, у нас есть веб-сайты Red, Blue и Green (и т.д.). Их HTML может отличаться, но они функционально одинаковы.

Ранее в одном из решений мы создали один проект Colour, который содержит общую версию проекта. Red, Blue и Green получите свой собственный проект, и каждая техническая страница настроена на использование C# в Colour. (То есть, для отдельных реализаций нет уникального C# - все файлы кода удаляются).

Однако этот подход приводит к тому, что мы заканчиваем работу с несколькими отдельными реализациями dll, которые практически ничего не делают, а также другие вещи, такие как javascript, css и общие изображения, дублируются по проектам.

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

Есть ли лучший способ?

Редактировать: забыл упомянуть, вся бизнес-логика/доступ к данным обрабатывается совместным проектом бизнес-уровня, поэтому весь код для этого является отдельным и общим.

ответ

2

Включите общий код в библиотеку классов. Это позаботится о слое данных, бизнес-логике и некоторых других вспомогательных подпрограммах. Мой опыт в том, что он очень помогает проектам, имеющим такой же фундамент.

Ваши проекты: Красный, Зеленый и Синий, если они разные, их нужно разделить. Вы не можете обойти это. Мой личный подход заключается в том, чтобы немедленно внести изменения, внесенные в один, во все остальные, прежде чем вы его забудете. Это сработало хорошо для меня.

+0

Спасибо за вход, забыл упомянуть, что они все имеют общий бизнес-уровень, так что весь бизнес-логика в одном месте - я обновлю вопрос немного. – RYFN

+0

Будет ли общий контент передаваться через WebResource.axd? – kdawg

1

Я бы порекомендовал вам использовать MVP pattern with ASP.NET. Таким образом, у вас может быть один проект библиотеки классов, содержащий модели и докладчиков, на которые будут ссылаться несколько приложений ASP.NET, содержащих представления и, конечно же, статические ресурсы, такие как JS, CSS, изображения, которые могут быть конкретными для каждого сайта. Конечно, если вы хотите делиться статическими ресурсами между веб-приложениями, вы можете разместить их в общем месте, чтобы на них ссылались (например, SO делает с sstatic.net).

Так что ваше решение может выглядеть следующим образом:

NameOfProject.sln 
    | 
    |-- NameOfProject.Presenters 
    | 
    |-- Web Application 1 
    | 
    |-- Web Application 2 
    ..... 
    |-- Web Application n 
Смежные вопросы