К основному содержимому
#BookCube

Patterns of Enterprise Application Architecture (Шаблоны корпоративных приложений)

#BookCube

Классическая книга начала века (2002 год) от Мартина Фаулера, которую есть смысл почитать и в наши дни:) Она появилась через 8 лет после книги "Design Patterns" и обобщила подход к паттернам на уровень архитектуры целых приложений. Сама книга про паттерны корпоративных приложений состоит из двух частей: the narratives и the patterns.

  1. 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 и это звучит приветом из прошлого.

Продолжение в следующем посте.