Patterns of Enterprise Application Architecture (Шаблоны корпоративных приложений)
Классическая книга начала века (2002 год) от Мартина Фаулера, которую есть смысл почитать и в наши дни:) Она появилась через 8 лет после книги "Design Patterns" и обобщила подход к паттернам на уровень архитектуры целых приложений. Сама книга про паттерны корпоративных приложений состоит из двух частей: the narratives и the patterns.
- The Narratives - здесь рассматриваются общие темы
- Layering - здесь авторы рассказывают про разделение на уровнни для борьбы со сложностью программного обеспечения. Основная суть в том, чтобы каждый уровень предоставлял определенную абстракцию посредством интерфейса и уровни взаимодействовали друг с другом через эти интерфейсы. Тут как обычно идет отсылка к сетевой модели OSI и TCP/IP. Здесь же автор рассказывает про 3 принципиальных уровня в корпоративных приложениях: data source, domain, presentation.
- Organizing Domain Logic - здесь автор рассказывает про организацию доменной логики и спойлерит 3 паттерна из второй части: transaction script, domain model, table module. Дальше он их сравнивает между собой и показывает границы применимости. Дальше он рассказывает про service layer, который часто размещают поверх domain model или table module. Дальше уровень представления взаимодействует с доменным уровнем через этот service layer
- Mapping to Relational Databases - здесь речь идет про то, как быть с данными. И на сцену выходят паттерны навроде table data gateway, active record и data mapper. Здесь же обсуждаются вопросы как маппить структуры из реляционных баз данных на модель классов и объектов внутри приложения и как быть конкретно с наследованием
- Web Presentation - здесь автор рассказывает про паттерн MVC (model-view-controller), который был когда-то популярен. Сейчас эта глава выглядит как раритет:)
- Concurrency - краткий рассказ про проблемы конкурентности, execution context, изоляцию и иммутабельность, оптимистичные и пессимистичные блокировки, дедлоки, а также транзакции (и конечно же ACID).
- Session State - здесь речь идет про хранение сессионного состояния на сервере
- Distribution Strategies - про распределенные объекты (distributed object system), которые почили в бозе вместе с CORBA:) Но тут есть актуальные мысли про DTO (data transfer objects) и lazy load.
- Putting It All Together - авторы рассказывают как использовать все описанное выше: стартовать с domain layer, переходить к data source layer и дальше двигаться в сторону presentation layer. Дальше они говорят про конкретные технологии, навроде, J2EE и это звучит приветом из прошлого.
Продолжение в следующем посте.