Daniel
Хорошей практикой является использование фронтального контроллера, большинство людей не знают об этом шаблоне проектирования.
Это действительно хороший шаблон проектирования для использования, поскольку он обеспечивает доступ к приложению через единую точку входа. Вы можете отслеживать все, что приходит и уходит легко с меньшими настройками. Вы уменьшаете количество возможного дублирования кода, потому что существует одна точка входа. В дополнение к меньшему количеству кода для сопровождения, код должен быть проще для отслеживания, так как есть только один путь. Вы можете легко следить за ходом выполнения приложения.
К сожалению для Seam, на самом деле нет шаблона фронт-контроллера. Я не потратил столько времени, сколько хотел бы на разработку своего собственного, но безопасность и аудиторские способности - моя главная задача.
Что касается контроллеров страниц / приложений, в Seam у вас есть больше контекстов или областей действия. Событие, Страница, Разговор, Сессия, Приложение, чтобы назвать большинство из них.
Если вы разрабатываете контроллер или в Seam, действие страницы, в большинстве случаев, оно будет основано на событиях. Это самая короткая жизненная область. Если у вас есть потоки страниц, вы можете использовать компоненты с диалоговой областью действия.
Посмотрите на примеры в исходном коде. Вы можете многое сделать с очень небольшим количеством кода, это удивительно, но в то же время происходит много работы, на которую может потребоваться некоторое время.
n-уровневый дизайн, который следует большинству мест, не обязательно применяется здесь. Для большинства моих страниц я определяю запрос, который буду использовать в XML (запрос сущности), затем вставлю его в действие моей страницы и вызову его там. Таким образом, вместо того, чтобы иметь классы контроллера, службы, дао и сущности, вы в конечном итоге получаете просто действие страницы, запросы и классы сущностей. В большинстве случаев вы можете вырезать слои сервиса и дао.
Ваше полное определение службы также может измениться. Для меня услуга - это поставщик услуг, такой как уведомление, безопасность (аудит), обработка исключений и т. Д. Все эти службы работают в фоновом режиме и не привязаны к определенному HTTP-запросу.
Walter