Шаблоны для неслоистых приложений

Мартин Фаулер в статье "Шаблоны архитектуры корпоративных приложений" пишет:

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

Какие существуют шаблоны для создания неуровневых приложений / частей приложения? Возьмите механизм статистического моделирования для финансового учреждения. Может быть слой для доступа к данным, но я ожидаю, что большая часть кода будет в одном слое. Вы все еще ожидаете увидеть паттерны Gang of Four в таком слое? Как насчет доменной модели? Вы бы использовали ОО вообще или это было бы чисто функционально?

Цитата упоминает трубы и фильтры как альтернативные модели слоям. Я легко могу представить себе такой движок, использующий каналы как способ сломать обработку данных. Какие еще модели существуют? Существуют ли общие шаблоны для таких областей, как планирование задач, агрегация результатов или распределение работы? Какие есть альтернативы MapReduce?

1 ответ

Решение

Я думаю, что Фаулер имеет в виду, что в многоуровневом приложении основное внимание уделяется организации "вертикальной" разобщенной связи между уровнями.

Другой архитектурой является SOA (Services Oriented), где основное внимание уделяется организации "горизонтальной" разобщенной связи между компонентами. (Внутри компонента реализация может использовать любую модель). В этом нет ничего нового. Другими примерами этого горизонтального шаблона являются COM/ COM+, CORBA, рабочие процессы, а теперь и архитектура обмена сообщениями или ESB.

Другие вопросы по тегам