Я создаю сайт, который должен немного измениться на определенных рынках. Например, на британском рынке форма регистрации должна выполнять проверку адреса (уже есть эта работа), а на сайте в Бельгии нам нужно проверить человека с веб-службой (уже есть эта работа). В противном случае функции регистрации в основном одинаковы. У нас эти два сайта работают независимо, но мы хотели бы объединить их в одну кодовую базу, которая может поддерживать любую опцию на основе config.Архитектура сайта - контроль/загрузка объектов на основе конфигурации?
Моя первоначальная мысль заключалась в том, чтобы использовать значение конфигурации, чтобы сказать «Это сайт в Великобритании» или «Это сайт в Бельгии» и отобразить страницы на основе этой настройки.
Идеи:
- Dependency Injection для загрузки элементов управления динамически на основе конфигурации
- Factory шаблон для использования Reflection/Активатор и загрузки динамически на основе конфигурации
- Config трансформирует для загрузки различных пользовательских элементов управления, установив tagname/tagprefix
- Другое?
У кого-нибудь есть какие-то первые мысли о рекомендациях о том, где я могу найти вдохновение для такого типа дизайна?
Спасибо за ответ! Это имеет смысл для меня. Всего несколько вопросов: - Для каждого «рынка» обязательно потребуется новое развертывание. Моя мысль с помещением в Config заключается в том, что, когда он настроен на развертывание, он никогда не изменится. Этот сайт остается такой конкретной реализацией (Великобритания, Бельгия или другой) - Для configValue вы видите преимущество в том, что URL-адрес является значением? Например, "sitename.co.uk" против "sitename.be"? Это субъективно, но просто ищет мысли. :) – trnelson
Планируете ли вы использовать точно такой же код, но разворачиваете его в двух разных местах? если да, тогда я неправильно понял ваш вопрос :) в любом случае, если это так, то сохранение его в конфиге имеет немного больше смысла. вы можете использовать шаблон разработки стратегии здесь. каждая «стратегия» будет классом или набором классов, реализующих один и тот же интерфейс - точно так же, как в моем приведенном примере. Похоже, у вас будет больше «расколов» в потоке, чтобы вы могли придерживаться разных стратегий для всех из них в каком-то классе StrategyProvider. Это слишком расплывчато или вы поняли? –
Это определенно полезно. И да, одна и та же кодовая база с точным развертыванием во все производственные среды, но флаг конфигурации, чтобы обозначить, какую версию сайта использовать (также открыта для предложений по этому поводу, но, похоже, это предпочтительный подход для всех остальных здесь.) Я ' м, немного знакомый с шаблоном Стратегии, но не свойственный этому примеру. Мне придется рассмотреть немного больше. На самом деле просто пытаюсь понять, с чего начать. – trnelson