2009-08-05 4 views
3

В моей компании мы разрабатываем готовые веб-приложения. Хотя наши приложения работают как есть - во многих случаях, часто мы получаем сложные запросы на настройку. У нас возникла проблема в попытке выполнить это структурированным образом. Индивидуальные функции не должны зависеть от настроек. На данный момент мы смотрим на Spring Web Flow, и похоже, что он может обрабатывать часть того, что нам нужно.Настраиваемые веб-приложения

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

  • , чтобы иметь конкретную версию представления для каждого клиента. Это, очевидно, приводит к взрыву реализации
  • сделать приложение настраивается в зависимости от параметра (если multipleCurrency то), что приводит к коду взрыва - ряд условий конфигурации, которые должны быть проверены на каждой странице

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

ответ

1

Каждая точка настройки подразумевает некоторый уровень условности.

По возможности люди склонны использовать таблицы стилей для управления некоторыми аспектами. Например, отображение выбора валюты может быть сделано так.

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