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

Мне нужно создать множество сайтов, которые очень похожи, но не совсем одинаковые, используя ASP.NET 2.0.

Я пытаюсь найти лучший способ сделать создание этих сайтов быстрым и легким.

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

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

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

В настоящее время я думаю, что я помещу как можно больше бизнес-логики во внешнюю сборку, а затем напишу настраиваемый пользовательский веб-элемент управления для каждого шага для каждого сайта. Я включу эти пользовательские элементы управления в элемент управления Panel на главной странице.

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

Как я могу улучшить этот дизайн?

Главное препятствие в том, что сайты похожи, но достаточно разные.

Спасибо!

Алекс


person Bret Walker    schedule 24.09.2008    source источник


Ответы (4)


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

person YonahW    schedule 24.09.2008

Мы постоянно сталкиваемся с этой проблемой. Мы делаем общую библиотеку, которую используют все наши сайты, и хороним общие функции в классах или служебных модулях в этой библиотеке. Затем каждый сайт может использовать эти объекты или служебные функции как есть или расширять общие классы. Имейте в виду, что эти общие классы могут включать в себя все виды вещей, включая код программной части для страниц и пользовательские элементы управления, которые вы можете наследовать и расширять.

Однако решить, что входит в приложение, а что в общую библиотеку, - одна из самых сложных задач в нашем бизнесе. Поместите его в общую библиотеку, и вы потеряете гибкость; поместите его в приложение, и вы рискуете получить дублирующийся код для обслуживания.

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

person Herb Caudill    schedule 24.09.2008
comment
Спасибо за ваш вклад. У вас есть примеры наследования пользовательских элементов управления? Я вижу, как я могу наследовать и переопределять код, лежащий в основе, но я не вижу, как я могу изменить представление (программное добавление веб-элементов управления запутывает представление и логику). - person Bret Walker; 25.09.2008

Вы изучали Monorail (www.castleproject.org), это реализация шаблона VC, похожего на Ruby on rails с несколькими хорошими механизмами просмотра, я предпочитаю Nvelocity. из проекта Castle вы также можете использовать реализацию ActiveRecord, которая делает жизнь по-настоящему красивой. Если вы идете по этому пути, также посмотрите скринкасты Coln Rammsay.

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

person roundcrisis    schedule 24.09.2008
comment
Хотя монорельс выглядит великолепно, я боюсь, что бизнес требует, чтобы мы придерживались веб-форм ASP.NET для этого проекта. - person Bret Walker; 25.09.2008

Как насчет использования Application Framework, такого как DotNetNuke или mojoportal? Оба они обеспечивают гибкость и позволяют очень быстро разрабатывать веб-сайты с общими функциями. Оставляя вас разрабатывать собственные модули, в которых требуемые функции могут отличаться. Есть также тысячи других модулей, которые можно купить, которые обеспечивают отличную функциональность.

Однако мы решили использовать WCSF и усовершенствовать его.
Все вышеупомянутые проекты имеют открытый исходный код и несколько хороших примеров кода, на которых можно учиться.

Я знаю, что это может быть поздний ответ, но я надеюсь, что это поможет

person Gary Woodfine    schedule 05.02.2009