расширить весь сайт в asp.net - PullRequest
0 голосов
/ 10 марта 2011

Я ищу лучшие практики и хорошие идеи, а не правильное решение.

сценарий : я работаю в веб-агентстве, и поэтому у нас множество веб-сайтов от нескольких клиентов.Они построены на основе созданного нами CMS, поэтому веб-сайты идентичны для 90% кода.Тем не менее, оставшиеся 10% испытывают трудности для меня и моей команды, так как они включают не только уровень представления, но и поведенческую логику (например: веб-сайт1 требует простой регистрации пользователя / прохода, в то время как веб-сайту 2 требуется больше данных, коннектор Facebook и т. Д. Но это очень легкопример).

Создание ad hoc разработки для наших клиентов становится болезненным, так как поддерживать каждую версию в соответствие становится очень сложно для нас

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

пример:
Предположим, я хочу, чтобы website2 имел собственный компонент входа, давайте представим, что у нас есть ситуациянапример:

/website_base
  |_ login.aspx

/website1

/website2
  |_ login.aspx

Итак, если я попрошу www.website1.com, я получу /website_base/login.aspx, но если я попрошу www.website2.com, я получу / website2 /login.aspx

Есть идеи?

Спасибо

PS: мы работаем с asp.net 3.5 framework.

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Есть несколько способов добиться этого.

Подход 1: 1. Разделите общую функциональность на модули и создайте подключаемую структуру.(например, DotNetNuke) Очевидно, что это поначалу будет занимать больше времени, но со временем он может стать продуктом.

Подход 2:

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

  2. Во-вторых - из моего основного решения,Я определю наиболее часто используемые артефакты для каждого слоя и перенесу их в сборку ядра.а.Например - В пользовательском интерфейсе вы можете использовать темы, чтобы по-разному выглядеть для каждого клиента.Имейте главную страницу по умолчанию, которая идет с основной структурой сайта.Все специфичные для клиента детали, такие как логотип, имя, контактные данные и т. Д., Могут быть настроены с использованием некоторых полей БД.б.В бизнес-уровне и уровне доступа к данным - основные функции, такие как членство, ведение журналов, объекты, связанные с CMS и т. Д., Я хотел бы иметь как dll i.Я выведу свою клиентскую логику из этих основных классов.

  3. Последнее, но не менее важное - как вы развертываете свой код и как выглядит ваша структура IIS VD ... Я считаю, что это будет полностью зависеть от того, как упаковано решение. Я бы создал пакет развертываниядля каждого клиента, который даст им возможность развернуть его на любом сервере, где бы он ни захотел, пока у вас не возникнут конкретные проблемы с хостингом проприетарного программного обеспечения.
0 голосов
/ 15 марта 2011

Я нашел умное решение здесь: http://www.codeproject.com/KB/aspnet/ASP2UserControlLibrary.aspx

Проверьте это

0 голосов
/ 10 марта 2011

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

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

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

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