РЕЦЕНЗИИ
Фаулер Мартин и др. Архитектура корпоративных приложений. М.: ИД "Вильямс", 2004.
Когда консультируешь различные компании по вопросам создания корпоративных информационных систем, часто поражаешься стремлению людей игнорировать некоторые истины, правильность которых подтверждена полувековой историей программирования. Одно из таких правил сформулировал Дональд Кнут, известный классик в области теории разработки ПО, и вкратце его суть можно изложить так: если код, решающий прикладную задачу, когда-то кем-то уже написан, то стоит серьезно рассмотреть возможность использования именно его, прежде чем писать свой. В этом случае вы не натолкнетесь на подводные камни. В итоге издержки окажутся ниже, а сроки исполнения - короче.
Однако нередко специфика поставленной задачи оказывается такова, что пользоваться уже написанным кодом можно лишь как компонентом, а для решения всего комплекса проблем приходится писать и свои модули. По счастью, удается выделить общие черты подобных модулей и создать шаблоны для их построения. Изучение шаблонов делает труд бизнес-аналитика или программиста более продуктивным, так как им не приходится изобретать велосипед раз за разом.
В последние годы появилось несколько книг в области применения шаблонов. Например, в 2001-м вышла книга Дипака Алура, Джона Крупи и Дэна Малкса "Ключевые шаблоны J2EE" (Core J2EE patterns), но акцент в ней был сделан на проблемы использования Java. Работа Мартина Фаулера с соавторами имеет более общий характер, но также содержит конкретные примеры применения шаблонов при программировании на языке C# платформы .Net. Фактически это - своего рода "библия", которую стоит иметь под рукой современному разработчику.
В целом книга произвела на меня очень благоприятное впечатление: она написана относительно доступным языком, хотя и ориентированным исключительно на специалиста. В первой части дается общее описание архитектур, по которым можно строить корпоративные приложения. Автор рассказывает, какие критерии можно использовать, выбирая между теми или иными типовыми решениями, какие издержки и преимущества этот выбор может дать при развитии системы. И хотя он говорит, что эти сведения не претендуют на полноту, качество обзора настолько высоко, что его полезно прочитать специалисту любого уровня.
На последующих страницах излагаются описания конкретных шаблонов. Например, есть главы "Типовые решения распределенной обработки данных", "Архитектурные типовые решения источников данных", "Представление бизнес-логики" и т. п. Спектр проблем, охватываемых шаблонами, простирается по всем уровням многоуровневой модели вычислений - от данных до представления. Рассказ о каждом шаблоне сопровождается UML-диаграммами последовательности действий, поясняющими принцип работы заложенного алгоритма. Подобный подход делает книгу более универсальной, почти не привязанной к конкретному языку программирования. Стоит отметить, что рекомендуемые шаблоны были опробованы соавторами и рецензентами в практических условиях (по крайней мере так заявляется, и это похоже на истину, поскольку предлагаемые решения осмысленны), чем безусловно повышается их ценность.
Из того, что мне не понравилось в книге, могу заметить лишь недостаточно четкие названия самих шаблонов, но общий словарь терминов - это ахиллесова пята всей отрасли. В целом же рекомендую ее тем специалистам, которые так или иначе участвуют в создании корпоративных систем, причем не только на .Net, но и на Java.