ebook img

Руководство Microsoft по проектированию архитектуры приложений PDF

529 Pages·6.748 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Руководство Microsoft по проектированию архитектуры приложений

Сообщение об авторском праве Все сведения, представленные в данном документе, включая URL и другие ссылки на Веб- сайты, могут изменяться без уведомления. Если не указано обратное, все компании, организации, продукты, доменные имена, адреса электронной почты, логотипы, люди и события, используемые здесь для примера, являются вымышленными и не имеют никакого отношения к реальным компаниями, организациями, продуктам, доменным именам, адресам электронной почты, логотипам, людям, ситуациям или событиям. Пользователь несет ответственность за соблюдение всех применимых законов об авторском праве. Без ограничения прав, защищенных авторским правом, ни одна часть этого документа не может быть воспроизведена, сохранена или представлена в поисковой системе или передана в любой форме или любыми средствами (электронными, механическими, фотокопированием, звукозаписью или др.) для любых целей без письменного разрешения Microsoft Corporation. Microsoft может обладать патентами, заявками на патенты, товарными знаками, авторскими или другими правами интеллектуальной собственности, относящимися к предмету этого документа. За исключением случаев, оговоренных лицензионным соглашением Microsoft, предоставление этого документа не дает каких-либо лицензий на эти патенты, товарные знаки, авторские права или другую интеллектуальную собственность. © 2009 Корпорация Майкрософт. Все права защищены. Microsoft, MS-DOS, Windows, Windows NT, Windows Server, Active Directory, MSDN, Visual Basic, Visual C++, Visual C#, Visual Studio и Win32 являются либо зарегистрированными торговыми марками, либо торговыми марками корпорации Майкрософт в Соединенных Штатах Америки и/или других странах. Все упоминаемые в данном руководстве имена реально существующих компаний и продуктов могут быть зарегистрированными торговыми марками их владельцев. Предисловие С. Сомасегара Данное практическое руководство стало результатом использования собственных технологий для создания продуктов Microsoft и ежедневной работы с заказчиками и партнерами. В нем собраны рекомендации по применению лучших практик для проектирования архитектуры приложения, а также шаблоны и принципы проектирования с использованием наших технологий. Это руководство представляет большую ценность как для разработчиков, так и для архитекторов решений. «Руководство Microsoft по проектированию архитектуры приложений» объединило в себе весь опыт, накопленный нами внутри компании, все рекомендации независимых специалистов, пользователей и всего сообщества разработчиков. Задача этого руководства – помочь архитекторам решений и разработчикам проектировать и создавать более эффективные приложения на платформе Microsoft, обеспечить возможность принятия ключевых решений на ранних этапах создания проекта. В руководстве также рассматриваются конкретные темы, что поможет архитекторам и разработчикам улучшить существующие решения. В создании руководства принимали участие более 25 независимых специалистов и заказчиков. Продумывая решения в категориях архитектурных шаблонов и принципов построения архитектуры, показателей качества и сквозной функциональности, вы очень быстро придете к базовой архитектуре приложения и правильному выбору необходимых технологий, шаблонов и ресурсов. После этого руководство поможет определить ключевые области архитектуры приложения, доработка которых обеспечит реализацию конкретного сценария. Данное руководство включает примеры архитектур для общих типов приложений, таких как Веб-приложения, насыщенные клиентские приложения, RIA, мобильные и сервисные приложения; рекомендации по проектированию показателей качества и сквозной функциональности; подходы к проектированию, которые помогут при создании и доработке архитектуры решений. Мы уверены, что «Руководство Microsoft по проектированию архитектуры приложений. 2е издание» поможет правильно выбрать архитектуру, технологии и шаблоны проектирования, что обеспечит создание более эффективных проектных решений. С уважением, С. Сомасегар (S. Somasegar) Старший вице-президент подразделения разработки Microsoft Предисловие Скотта Гатри Проектирование архитектуры приложения является очень сложной задачей. Доказательство тому – огромное количество книг, статей и документации, посвященных данному вопросу. Понимание архитектуры и лучших практик проектирования для платформы Microsoft по- прежнему вызывает сложности у разработчиков и архитекторов. Руководство «Application Architecture for .NET: Designing Applications and Services» (Архитектура приложений для .NET: проектирование приложений и сервисов) сделало огромный вклад в дело раскрытия этой темы, но оно было выпущено в 2002 году. За это время появилось множество новых технологий. Дж. Д. Мейер (J. D. Meier), Давид Хилл (David Hill) и их команда из группы Microsoft patterns & practices собрали все подробные рекомендации по проектированию приложений и сервисов на платформе Microsoft с использованием передовых практик и технологий. В результате получилось «Руководство Microsoft по проектированию архитектуры приложений. 2е издание», руководство, основной целью которого является помочь архитекторам решений и разработчикам создавать эффективные приложения на платформе Microsoft. В руководстве дается обзор .NET Framework, платформы Microsoft, их основных технологий и возможностей, а также приводятся не зависящие от платформы, ориентированные на применение шаблонов и основанные на общих принципах рекомендации, которые обеспечат прочную базу создаваемым приложениям. В основу данного руководства легли базовые принципы архитектуры и дизайна. Оно включает рекомендации по принятию и проработке ключевых технических решений, дает разъяснения по показателям качества, сквозной функциональности и характеристикам (таким как производительность, безопасность, масштабируемость, удобство и простота обслуживания, развертывание, сетевое взаимодействие и многое другое), которые определяют архитектуру приложения. Руководство также описывает слои и уровни, которые могут присутствовать в приложении. Каждый уровень/слой рассматривается с точки зрения его основного назначения, функций, возможностей, общих шаблонов проектирования и технологий. Для каждого уровня/слоя предлагаются соответствующие принципы, шаблоны и практики. Наконец, приводятся канонические архетипы приложений для иллюстрации общих типов приложений. Для каждого архетипа приводятся целевые сценарии, технологии, шаблоны и инфраструктура, которую он включает. Руководство в целом основывается на совокупном опыте и знании специалистов Microsoft, партнеров Microsoft, заказчиков и участников сообщества разработчиков для платформы Microsoft. Оно поможет понять нашу платформу, правильно выбрать архитектуру и технологии и использовать проверенные практики при создании приложений. С уважением, Скотт Гатри (Scott Guthrie) Вице-президент по платформе разработки .NET Microsoft Предисловие Девида Хилла Среди разработчиков популярна старая шутка о том, что чтобы считаться архитектором, надо просто отвечать на все технические вопросы: «ну, зависит от… ». – Вопрос: Как лучше всего реализовать аутентификацию и авторизацию в моем решении? – Ответ: Ну, зависит от… – Вопрос: Как реализовать слой доступа к данным? – Ответ: Ну, зависит от… – Вопрос: Какую технологию необходимо применить для UI моего решения? – Ответ: Ну, зависит от… – Вопрос: Как сделать приложение масштабируемым? – Ответ: Ну, зависит от… И так далее, суть ясна. Но основная идея в том, что ведь на самом деле зависит. В конечном счете, каждое решение уникально, и существует множество факторов, как технических, так и не технических, которые могут существенно влиять на архитектуру и дизайн решения любых масштабов. Задача разработчика и архитектора решения – найти равновесие между (зачастую противоречащими друг другу) требованиями и ограничениями, налагаемыми бизнесом, конечным пользователем, ИТ-средой и инфраструктурой управления организации, экономической ситуацией и, конечно же, технологиями и инструментальными средствами, используемыми для создания решения. И, чтобы было уж совсем интересно, эти требования и ограничения постоянно меняются по мере появления новых возможностей или выдвижения новых требований к системе. Изменения бизнес-правил или возникновение новых прикладных областей оказывает влияние как на новые, так и на уже существующие приложения. Пользователи хотят получать все более насыщенные, единообразные и высокоинтегрированные пользовательские интерфейсы. Могут появляться новые требования к совместимости, или возникать новые технологии ИТ- инфраструктуры, которые сократят затраты или повысят доступность и масштабируемость. И, конечно же, постоянно выпускаются новые технологии, инфраструктуры и инструменты, которые обещают сократить затраты на разработку или сделать возможными сценарии, которые было трудно реализовать до этого. Несомненно, разобраться во всем этом и в то же время обеспечить создание эффективного решения, вложившись в предусмотренный бюджет и отведенные сроки, задача не из легких. Она требует от разработчика или архитектора решения учесть все противоречащие и дополняющие друг друга факторы (в том числе и не технические) и найти эффективный баланс между ними. Попытки включения в рассмотрение слишком большого числа факторов может привести к очень сложным решениям. На их создание ушло бы слишком много времени, а результат все равно не обеспечил бы ожидаемой долговечности или гибкости. С другой стороны, если взять слишком мало факторов, получаются слишком ограниченные негибкие наспех скроенные решения, которые не поддаются доработке или плохо масштабируются. Другими словами, разработчикам и архитекторам решений часто приходится балансировать между «идеальным решением» с одной стороны и «решением на данный момент» с другой. В этом, по моему мнению, и заключается суть проектирования архитектуры приложения – использовать инструменты и технологии сегодняшнего дня для получения максимальной выгоды, учитывая требования и ограничения, налагаемые бизнесом сегодня, при этом заглядывая в будущее для обеспечения максимальной прибыли через масштабируемость, гибкость и обслуживание. Знание архитектурных принципов и шаблонов позволяет разработчику и архитектору решения понимать и учитывать в процессе проектирования важные аспекты, которые могут иметь огромное влияние на успех решения в целом. Вооруженные этим знанием они могут принимать более осознанные решения, лучше соотносить противоречащие и дополняющие друг друга требования и ограничения и создавать решения, которые не просто отвечают всем бизнес-целям, но при этом обеспечивают экономическую эффективность, масштабируемость, гибкость, а также удобство и простоту обслуживания. Как можно заметить, я обращаюсь и к разработчикам, и к архитекторам решений. Я глубоко уверен, что и тем, и другим чрезвычайно важно иметь твердое понимание шаблонов и принципов, обозначенных в этом руководстве. Мне могут возразить, что детали реализации не так важны, как общий дизайн. Из своего опыта утверждаю, что это далеко не так. Мелкие решения имеют свойство накапливаться со временем. Детали реализации могут иметь очень большое влияние на архитектуру решения в целом, его масштабируемость, удобство обслуживания и гибкость. Поэтому понимание основополагающих принципов и разработчиками, и архитекторами имеет жизненно важное значение. Кроме того, общее знание приводит к тому, что разработчики и архитекторы начинают лучше понимать друг друга, что также имеет огромный положительный эффект. Цель этого руководства – предоставить обзор архитектуры приложений, принципов и шаблонов проектирования, что поможет делать правильный выбор и создавать более успешные решения. Руководство структурировано таким образом, чтобы его можно использовать и как учебник, и как справочник. Первая часть руководства посвящена общим вопросам построения архитектуры и принципам проектирования и применима к любому типу решения. Во второй части основное внимание направлено на общие типы приложений (такие как Веб-приложения, насыщенные клиентские приложения или мобильные приложения), для каждого из них описывается типовая архитектура и рассматриваются основные вопросы проектирования. Приводимые здесь решения, безусловно, не будут полностью соответствовать реальным задачам, но могут использоваться как базовые архитектуры. Данное руководство содержит советы относительно того, как определять основные элементы архитектуры, чтобы иметь возможность дорабатывать их со временем. Повсеместно в руководстве особое внимание уделяется разработке решений на платформе Microsoft с применением .NET Framework. В него включены ссылки на статьи и ресурсы, в которых подробно рассматриваются соответствующие технологии и инструменты. Однако, как вы увидите, базовые принципы и шаблоны применимы ко всем платформам. Следует отметить, что данное руководство не является полным и исчерпывающим справочником по каждому аспекту архитектуры и дизайна приложений, оно представляет лишь практический обзор наиболее важных тем и дает ссылки на более подробные руководства или материалы, в которых соответствующие вопросы проработаны более детально. В области архитектуры и дизайна приложений постоянно происходят изменения, она не стоит на месте. Основные принципы, на которых строились успешные решения в прошлом, будут хорошо служить и в обозримом будущем, но мы также должны быть готовыми к тому, что темпы инноваций, как в технологиях, так и к в новых подходах к проектированию, не будут снижаться. Платформа Microsoft и .NET Framework, а также огромное количество технологий и сценариев, ими поддерживаемые, обширны и глубоки и будут только расширяться и углубляться со временем. С другой стороны, нам не надо ожидать того, что может случиться. Мы можем создавать превосходные решения уже сегодня, и, надеюсь, это руководство поможет в этом. Девид Хилл (David Hill) patterns and practices Сентябрь 2009 Введение Цель данного руководства – помочь разработчикам и архитекторам решений создавать эффективные высококачественные приложения на платформе Microsoft и .NET Framework в более сжатые сроки и с меньшими рисками благодаря использованию проверенных и снискавших доверие архитектурных принципов и шаблонов проектирования. В руководстве предлагается обзор основных принципов и шаблонов, которые обеспечивают прочную базу для создания хорошей архитектуры и дизайна приложения. В дополнение к этой базе даются общеприменимые рекомендации по разделению функциональности приложения на слои, компоненты и сервисы. Далее приводятся советы по определению и реализации ключевых характеристик дизайна, основных атрибутов качества (таких как производительность, безопасность и масштабируемость) и сквозной функциональности (такой как кэширование и протоколирование). В завершение руководство предлагает рекомендации по архитектуре и дизайну наиболее общих типов приложений, таких как Веб-приложения, насыщенные Интернет-приложения (RIA), насыщенные клиентские приложения, сервисы и мобильные приложения. Руководство разделено на части соответственно основным аспектам архитектуры и дизайна. Оно скомпоновано таким образом, чтобы могло использоваться и как справочник, и как учебное пособие. Данное руководство поможет:  Понять базовые принципы и шаблоны построения архитектуры и дизайна для разработки успешных решений на платформе Microsoft.  Правильно выбрать стратегии и шаблоны проектирования, которые помогут при проектировании слоев, компонентов и сервисов решения.  Определить и реализовать ключевые технические решения.  Определить и реализовать основные показатели качества и сквозные функции для решения.  Правильно выбрать технологии для реализации решения.  Создать возможный вариант базовой архитектуры решения.  Правильно выбрать предлагаемые группой patterns & practices решения и руководства, которые помогут в реализации решения. Это руководство является развернутым, но его нельзя считать полным и исчерпывающим учебником по архитектуре и дизайну приложений. Оно предназначено для использования в качестве практического и удобного обзора и справочника по общим принципам проектирования архитектуры и дизайна приложений на платформе Microsoft и .NET Framework. В частности, данное руководство не пытается предложить определенное или официальное архитектурное решение ни для одного конкретного сценария. Скорее, в нем дается краткий обзор принципов и шаблонов, которые обеспечивают создание хорошей архитектуры и дизайна, и предлагаются рекомендации по некоторым наиболее важным проблемам, которые могут возникнуть. Основная масса представленного в руководстве материала не ориентирована ни на одну из технологий и может применяться к любой платформе или технологии. Но там, где мы посчитали это необходимым для обеспечения правильного выбора технологий или для использования их с максимальной пользой, мы ввели специальные рекомендации, касающиеся технологий Microsoft и .NET Framework. Целевая аудитория Данное руководство ориентировано, главным образом, на разработчиков и архитекторов решений, которые нуждаются в руководстве по разработке архитектуры и проектированию приложений на платформе Microsoft и в .NET Framework. Однако это руководство будет полезным любому специалисту, который интересуется архитектурой и дизайном приложений, желает разобраться в базовых шаблонах и принципах, стоящих за хорошим дизайном приложений на платформе Microsoft или .NET Framework, а также для новичков, которые только начинают работать с платформой Microsoft или .NET Framework. Как работать с данным руководством Данное руководство не является учебником по архитектуре и дизайну приложений, рассматривающим все вопросы шаг за шагом. Скорее, это обзор и справочник. Данное руководство разделено на четыре основных части, каждая из которых включает в себя ряд глав:  В первом разделе руководства, «Архитектура и дизайн программного обеспечения», дается обзор базовых принципов и шаблонов, которые являются основой для создания хорошей архитектуры и дизайна приложений, и предлагается подход к созданию дизайна приложения. Те, кто использует это руководство для изучения основ архитектуры приложений, должны начинать с этого раздела и затем переходить к остальным частям, чтобы познакомиться с многослойным дизайном, компонентами, показателями качества, сквозной функциональностью, сетевым взаимодействием, развертыванием и общими типами приложений.  Во второй части, «Основы проектирования», предлагается общее практическое руководство по проектированию слоев, компонентов и сервисов решения, а также рекомендации по реализации показателей качества и сквозной функциональности. Также затрагиваются вопросы сетевого взаимодействия и развертывания. Те, кто желает изучить многослойный подход к проектированию архитектуры и дизайна

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.