Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП / ООП / ры_приложений_полная_книга.pdf
Скачиваний:
500
Добавлен:
18.02.2017
Размер:
7.08 Mб
Скачать

Предисловие Девида Хилла

Среди разработчиков популярна старая шутка о том, что чтобы считаться архитектором, надо просто отвечать на все технические вопросы: «ну, зависит от… ». – Вопрос: Как лучше всего реализовать аутентификацию и авторизацию в моем решении? – Ответ: Ну, зависит от… – Вопрос: Как реализовать слой доступа к данным? – Ответ: Ну, зависит от… – Вопрос: Какую технологию необходимо применить для UI моего решения? – Ответ: Ну, зависит от… – Вопрос: Как сделать приложение масштабируемым? – Ответ: Ну, зависит от… И так далее, суть ясна.

Но основная идея в том, что ведь на самом деле зависит. В конечном счете, каждое решение уникально, и существует множество факторов, как технических, так и не технических, которые могут существенно влиять на архитектуру и дизайн решения любых масштабов. Задача разработчика и архитектора решения – найти равновесие между (зачастую противоречащими друг другу) требованиями и ограничениями, налагаемыми бизнесом, конечным пользователем, ИТ-средой и инфраструктурой управления организации, экономической ситуацией и, конечно же, технологиями и инструментальными средствами, используемыми для создания решения.

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

Несомненно, разобраться во всем этом и в то же время обеспечить создание эффективного решения, вложившись в предусмотренный бюджет и отведенные сроки, задача не из легких. Она требует от разработчика или архитектора решения учесть все противоречащие и дополняющие друг друга факторы (в том числе и не технические) и найти эффективный баланс между ними. Попытки включения в рассмотрение слишком большого числа факторов может привести к очень сложным решениям. На их создание ушло бы слишком много времени, а результат все равно не обеспечил бы ожидаемой долговечности или гибкости. С другой стороны, если взять слишком мало факторов, получаются слишком ограниченные негибкие наспех скроенные решения, которые не поддаются доработке или плохо масштабируются. Другими словами, разработчикам и архитекторам решений часто приходится балансировать между «идеальным решением» с одной стороны и «решением на данный момент» с другой.

В этом, по моему мнению, и заключается суть проектирования архитектуры приложения – использовать инструменты и технологии сегодняшнего дня для получения максимальной

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

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

Цель этого руководства – предоставить обзор архитектуры приложений, принципов и шаблонов проектирования, что поможет делать правильный выбор и создавать более успешные решения. Руководство структурировано таким образом, чтобы его можно использовать и как учебник, и как справочник. Первая часть руководства посвящена общим вопросам построения архитектуры и принципам проектирования и применима к любому типу решения. Во второй части основное внимание направлено на общие типы приложений (такие как Веб-приложения, насыщенные клиентские приложения или мобильные приложения), для каждого из них описывается типовая архитектура и рассматриваются основные вопросы проектирования. Приводимые здесь решения, безусловно, не будут полностью соответствовать реальным задачам, но могут использоваться как базовые архитектуры. Данное руководство содержит советы относительно того, как определять основные элементы архитектуры, чтобы иметь возможность дорабатывать их со временем.

Повсеместно в руководстве особое внимание уделяется разработке решений на платформе Microsoft с применением .NET Framework. В него включены ссылки на статьи и ресурсы, в которых подробно рассматриваются соответствующие технологии и инструменты. Однако, как вы увидите, базовые принципы и шаблоны применимы ко всем платформам. Следует отметить, что данное руководство не является полным и исчерпывающим справочником по каждому аспекту архитектуры и дизайна приложений, оно представляет лишь практический обзор наиболее важных тем и дает ссылки на более подробные руководства или материалы, в которых соответствующие вопросы проработаны более детально.

В области архитектуры и дизайна приложений постоянно происходят изменения, она не стоит на месте. Основные принципы, на которых строились успешные решения в прошлом, будут хорошо служить и в обозримом будущем, но мы также должны быть готовыми к тому, что

темпы инноваций, как в технологиях, так и к в новых подходах к проектированию, не будут снижаться. Платформа Microsoft и .NET Framework, а также огромное количество технологий и сценариев, ими поддерживаемые, обширны и глубоки и будут только расширяться и углубляться со временем. С другой стороны, нам не надо ожидать того, что может случиться. Мы можем создавать превосходные решения уже сегодня, и, надеюсь, это руководство поможет в этом.

Девид Хилл (David Hill)

patterns and practices

Сентябрь 2009

Введение

Цель данного руководства – помочь разработчикам и архитекторам решений создавать эффективные высококачественные приложения на платформе Microsoft и .NET Framework в более сжатые сроки и с меньшими рисками благодаря использованию проверенных и снискавших доверие архитектурных принципов и шаблонов проектирования.

В руководстве предлагается обзор основных принципов и шаблонов, которые обеспечивают прочную базу для создания хорошей архитектуры и дизайна приложения. В дополнение к этой базе даются общеприменимые рекомендации по разделению функциональности приложения на слои, компоненты и сервисы. Далее приводятся советы по определению и реализации ключевых характеристик дизайна, основных атрибутов качества (таких как производительность, безопасность и масштабируемость) и сквозной функциональности (такой как кэширование и протоколирование). В завершение руководство предлагает рекомендации по архитектуре и дизайну наиболее общих типов приложений, таких как Веб-приложения, насыщенные Интернет-приложения (RIA), насыщенные клиентские приложения, сервисы и мобильные приложения.

Руководство разделено на части соответственно основным аспектам архитектуры и дизайна. Оно скомпоновано таким образом, чтобы могло использоваться и как справочник, и как учебное пособие.

Данное руководство поможет:

Понять базовые принципы и шаблоны построения архитектуры и дизайна для разработки успешных решений на платформе Microsoft.

Правильно выбрать стратегии и шаблоны проектирования, которые помогут при проектировании слоев, компонентов и сервисов решения.

Определить и реализовать ключевые технические решения.

Определить и реализовать основные показатели качества и сквозные функции для решения.

Правильно выбрать технологии для реализации решения.

Создать возможный вариант базовой архитектуры решения.

Правильно выбрать предлагаемые группой patterns & practices решения и руководства, которые помогут в реализации решения.

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

Соседние файлы в папке ООП