В моей компании мы разрабатываем готовые веб-приложения. Хотя во многих случаях наши приложения работают как есть, часто мы получаем сложные запросы на настройку. У нас возникла проблема при попытке сделать это структурированным способом. Общие функциональные возможности не должны зависеть от настроек. В данный момент мы рассматриваем Spring Web Flow, и похоже, что он может справиться с частью того, что нам нужно.
Например, у нас есть онлайн-шоппинг, и у нас есть запрос от клиента, чтобы в момент проверки заказа на покупку корзины он был записан в частную систему регистрации.
С помощью SWF можно наследовать наш общий поток проверки с помощью ClientX Checkout Flow и расширять его состояниями, необходимыми для выполнения пользовательской записи журнала. Этот сценарий, кажется, обрабатывается хорошо. Это означает, что мы можем сохранить наш общий процесс оформления заказа как есть и расширить его с помощью пользовательских функций в соответствии с принципом «открыто / закрыто». Наша команда вовремя может добавить функциональность в общий процесс оформления заказа, который может быть передан клиенту без изменения расширения.
Однако иногда клиенты просят, чтобы наши страницы были настроены. Например, в нашем приложении для онлайн-покупок клиент запрашивает функцию нескольких валют. В этом случае вам нужно изменить представление, а также поток (контроллер). Есть ли технология, которая позволила бы мне расширить общий вид, а не изменять его? Пока что только два решения с большинством представлений на основе шаблонов (JSP, Struts, Velocity и т. Д.) Кажутся
- чтобы иметь конкретную версию представления для каждого клиента. Это явно приводит к реализации взрыва
- , чтобы сделать приложение настраиваемым в зависимости от параметра (если затем несколько валют), который приводит к взрыву кода - число условий конфигурации, которые необходимо проверить на каждой странице
Что было бы лучшим решением в этом случае? Вероятно, есть некоторые другие случаи настройки, которые я не могу вспомнить. Может быть, есть технология представления на основе компонентов, которая позволила бы мне расширить определенное базовое представление и имеет ли это смысл.
Каковы типичные решения проблемы настраиваемых веб-приложений?