Поделиться через


Введение

 

Введение

Брент Проректор
Мудрая Сова Консалтинг

Октябрь 2003 г.

Содержимое

О чем эта книга
    Модель приложения Longhorn
    Надежные вычисления и безопасность
    Расширенное хранилище и доступ к данным
    Взаимодействие и совместная работа
    Форматированные презентации и мультимедиа
Что вы найдете в этой книге

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

На сегодняшний день microsoft® Windows® сама развивалась таким образом. Первоначально написание приложения Windows означало программирование для API Microsoft Win32®. (На самом деле, это был API Win16 в свое время, но они концептуально одинаковы.) Корпорация Майкрософт разработала API Win32 как плоский процедурный API, вызываемый программами C. В свое время книга Чарльза Петцольда Программирование Windows, которая представила этот API, была обязательно прочитана для любого разработчика приложений Windows.

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

Сама конструкция Windows на самом деле довольно объектно-ориентирована. Вы управляете объектами окна, используете графические ручки и т. д. Однако эти операции выполняются путем вызова правильных API (из тысяч доступных) в правильном порядке и передачи соответствующих типов данных, в основном без помощи компилятора, если вы ошибаетесь.

Когда корпорация Майкрософт впервые выпустила Windows и несколько лет спустя, разработчики программного обеспечения обычно писали монолитные изолированные приложения. У разработчиков не было компонентов, из которых можно было бы создавать приложения, и механизма, поддерживающего композицию; кроме того, приложения не пытались взаимодействовать с другими приложениями в той же системе, не говоря уже о приложении на другом компьютере.

В 1993 году корпорация Майкрософт представила компонентную объектную модель (COM). Корпорация Майкрософт разработала COM как попытку решить следующие две проблемы. В COM появился двоичный стандарт, благодаря которому компоненты, создаваемые компиляторами разных исходных языков, могли взаимодействовать с помощью неизменяемых определений интерфейсов. Распределенный сетевой протокол COM (DCOM) позволил этим компонентам взаимодействовать между процессами и компьютерами.

Многие api Windows, представленные корпорацией Майкрософт после 1993 года, являются ИНТЕРФЕЙСами API на основе COM. Двумя примерами являются API расширений Microsoft DirectX® и оболочки. В настоящее время Windows имеет более 10 000 API, разработанных различными разработчиками в разных командах с разными целями. В результате Windows предоставляет некоторые API в виде плоских точек входа на языке C в библиотеке динамической компоновки (DLL). Он предоставляет другие API в виде набора сложных взаимодействующих COM-интерфейсов. Существуют и другие API, к которым вы обращаетесь с помощью других технологий.

На практике вам, разработчику, требуется операционная система, чтобы оградить вас от большинства этих сложностей большую часть времени. Таким образом, многие различные команды, как в корпорации Майкрософт, так и за ее пределы, разработали различные библиотеки платформы для упрощения разработки приложений. Некоторые популярные библиотеки платформы — это Microsoft Foundation Classes (MFC), библиотека шаблонов Microsoft ActiveX (ATL), библиотека в Microsoft Visual Basic®, библиотека Объектов Windows (OWL) Борланда и многие другие.

Например, MFC пытается создать оболочку для различных идиосинхронразий API Win32 с согласованным и объектно-ориентированным набором классов C++. Если выбранный вами язык программирования — C++, а библиотеки MFC напрямую поддерживают то, что вы хотите сделать, ваша задача будет легкой. Тем не менее, когда вы хотите что-то немного за пределами основного, вы в основном в основном самостоятельно и, по сути, в худшей форме, чем раньше, потому что теперь вам нужно выяснить, как использовать API Win32, а также обеспечить взаимодействие вашей работы с существующими классами MFC.

ATL позволяет создавать чрезвычайно эффективные COM-объекты и, в меньшей степени, приложения Windows, использующие неясные и (для многих разработчиков) плохо понятные классы на основе шаблонов C++. Это не далеко отрезок, чтобы сказать, что вы можете легко в конечном итоге с высоко эффективными объектами, которые никто не мог понять.

Команда разработчиков Microsoft Visual Basic приняла другой подход. Они упаковали доступ к API Win32 в простой в изучении и использовании языка и библиотеки, но за счет удаления функциональных возможностей и параметров. Visual Basic упрощает создание компонентов для приложений и приложений, использующих такие компоненты. Однако Visual Basic не позволяет получить полный доступ ко всем предложениям API Win32. Иногда разработчик Visual Basic просто не может выполнить задачу из-за ограничений, накладываемых выбранной средой разработки.

В начале-середине 1990-х годов, World Wide Web взлетел. Компьютеры стали все более и более подключенными. Изначально в веб-браузере просто отображался статический HTML-код, и просмотр веб-страницы был очень похож на страницу журнала.

Когда корпорация Майкрософт выпустила Internet Обозреватель 4 в 1997 году, появились и другие возможности. Разработчики могут создавать HTML-файлы, содержащие скрипт и разметку. Объекты в объектной модели HTML получили поведение, и вы можете написать скрипт, который реагировал на события и предоставлял настраиваемое поведение. HTML-страницы теперь могут реагировать на события пользователя в клиенте и реагировать гораздо быстрее, чем предыдущие веб-приложения, которым требовалась повторная миграция на сервер для каждого обновления экрана.

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

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

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

К концу 1990-х разработчику Windows часто приходилось специализироваться. Вы были программистом API Win32 и могли медленно писать любое клиентское приложение. Кроме того, вы были разработчиком Visual Basic и могли быстро писать относительно многофункциональные приложения пользовательского интерфейса на основе форм, но не могли писать некоторые другие типы приложений. Разработчик MFC несколько развязал эти две крайности, хотя на практике вам нужно быть опытным разработчиком C++, который был знаком с API Win32, чтобы быть хорошим разработчиком MFC. Разработчики ATL и COM-объектов часто были водопроводчиками системы и предоставляли компоненты для повторного использования другими разработчиками.

В 2000 году корпорация Майкрософт представила .NET. Определение того, что именно является .NET , зависит от того, кого вы спрашиваете. На мой взгляд, .NET — это современная платформа разработки программного обеспечения для более быстрого создания, чем это было ранее, исправляющих и защищенных приложений Windows, использующих новейшие технологии, такие как XML и веб-службы, при этом обеспечивая доступ к коду наследия.

.NET в целом и управляемый код в частности предоставляет разработчикам программного обеспечения ряд преимуществ:

  • Объектно-ориентированная, не зависящая от языка, типобезопасная объектная модель.
  • Сокращение конфликтов между различными версиями компонентов.
  • Сокращение числа ошибок и бреш в системе безопасности из-за распространенных ошибок программирования. Например, больше нет переполнения буфера и ошибок управления памятью.
  • Единая платформа и набор библиотек, которые могут использовать все разработчики. Библиотеки классов платформа .NET Framework инкапсулируют наиболее часто используемые API Win32, а также множество дополнительных API, предоставляемых многими пакетами SDK в едином пакете.
  • Более высокие абстракции, чем было доступно ранее.

В некотором смысле .NET — это просто новая объектно-ориентированная, не зависящая от языка платформа, которая инкапсулирует многие аспекты API Win32. Лично я предпочитаю рассматривать .NET как замену интерфейсов API Win32, которые еще не завершены, но со временем становятся все более полными.

Например, .NET версии 1.0 предоставляет объектно-ориентированные классы клиентских приложений на основе форм. Их можно рассматривать как простые оболочки для базовых ИНТЕРФЕЙСов API win32 для управления окнами. Однако .NET также предоставляет ASP.NET классы, которые инкапсулируют разработку веб-приложений и СОЗДАНИЕ HTML и поведения. Эти классы по сути расширяют API Windows и на самом деле не являются оболочкой для чего-либо в API Win32. . Расширенная поддержка NET для веб-служб и XML в целом — это еще два примера новых функций, предоставляемых с помощью .NET, а не простых оболочек для существующих функций Win32.

О чем эта книга

В этой книге основное внимание уделяется функциям Microsoft Longhorn для разработчиков. С точки зрения разработчика longhorn предоставляет новые функциональные возможности, которые можно широко классифицировать в пяти областях:

Модель приложения Longhorn

Longhorn определяет приложения новыми, более мощными способами.

  • API Longhorn — это управляемые классы, которые обрабатывают большую часть обслуживания программирования и снижают рабочую нагрузку разработчика. Все сторонние компиляторы и средства разработчика, поддерживающие среду CLR .NET, автоматически поддерживают новые API Longhorn.
  • Модель приложений Longhorn поддерживает как традиционные приложения на основе форм, так и новые приложения навигации на основе страниц. Поддержка навигации на основе страниц приложения обеспечивается операционной системой.
  • Новая модель безопасности и конфиденциальности Longhorn, которая является результатом сочетания управляемых API и цифровых удостоверений, обеспечивает безопасность приложений с самого начала процесса разработки. Приложения и компоненты Longhorn являются доверенными из-за использования управляемого кода.
  • API Longhorn представляют собой лучшие концепции разработки из различных современных технологий. Во многих отношениях разработчика больше не ограничивают проектные решения, принятые более десяти лет назад.
  • Автоматическое управление состоянием приложений и их хранение для упрощения разработки приложений.
  • Технология развертывания ClickOnce поддерживает сложные функции развертывания, такие как установка в программных файлах, управление версиями, параллельная установка и загрузка Drizzle.
  • Индуктивные пользовательские интерфейсы ведут пользователей к выполнению задачи.
  • Специальные возможности и функции автоматизации встроены в платформу. Ваши приложения автоматически получают такую поддержку.

Надежные вычисления и безопасность

Longhorn основывает безопасность приложения на модели управления доступом к коду (CAS) среды CLR, но со значительными расширениями.

  • "Longhorn" признает, что некоторые приложения являются полностью доверенными, а другие имеют только частичное доверие. Приложения, которые полностью участвуют в модели безопасности Longhorn, будут иметь полный доступ к функциям Longhorn. Приложения, которые только частично участвуют в модели, будут иметь некоторые преимущества, хотя и с ограничениями.
  • Longhorn предоставляет сверхбезопасную среду выполнения с управляемым кодом, называемую безопасной средой выполнения (SEE), которая защищает пользователя от "плохого" поведения приложения.
  • Диспетчер доверия предоставляет систему оценки для приложений Longhorn, которая определяет предлагаемый уровень доверия, который пользователи могут предоставить приложению.
  • Longhorn предоставляет центр управления безопасностью, который позволяет пользователю управлять горячими исправлениями и получать доступ к обновлениям Windows. Кроме того, помощник по безопасности информирует пользователя о рисках и нарушениях безопасности.
  • Управление цифровыми правами является частью управляемого кода, обеспечивая надежную защиту интеллектуальной собственности. Это обеспечивает безопасное хранение и передачу ранее уязвимых объектов интеллектуальной собственности в среде Longhorn.
  • Longhorn однозначно идентифицирует пользователей и компьютеры с помощью цифровых подписей. В сочетании с центром подписывания для проверки longhorn может безопасно и надежно идентифицировать отдельных пользователей в вычислительных сценариях.

Расширенное хранилище и доступ к данным

Longhorn обеспечивает значительно улучшенное хранение данных приложения и доступ к нему через новую файловую систему.

  • Новая ADO.NET обеспечивает улучшенный доступ к данным.
  • Общие схемы для повседневной информации, такой как контакты, организации, адреса и многое другое, обеспечивают общий доступ к информации для приложений, операционной системы и оболочки. На самом деле, новый пользовательский интерфейс оболочки является одним из самых ресурсоемких пользователей новой системы хранения.
  • Приложение может присоединять дополнительные метаданные к объектам в файловой системе, что позволяет быстрее выполнять поиск и извлечение файловых объектов по сравнению с традиционной файловой системой.
  • Изменения в объектах в среде Longhorn автоматически распространяются на другие экземпляры этих объектов с помощью динамической привязки данных.

Взаимодействие и совместная работа

Приложения Longhorn теперь имеют широкий спектр возможностей связи и совместной работы.

  • Такие функции, как сеансы и каналы, предоставляют участникам широкие возможности совместной работы.
  • Функции связи и совместной работы могут безопасно работать через брандмауэры и преобразование сетевых адресов (NAT), что позволяет просматривать корпоративные границы.
  • Стандартизированное взаимодействие на основе веб-служб позволяет устаревшим и новым приложениям участвовать в совместной работе.
  • Функции связи на основе сервера или одноранговых узлов могут работать через централизованную инфраструктуру или напрямую с клиентами пользователей.
  • Поддержка виртуального присутствия позволяет пользователям совместно работать с другими пользователями с помощью таких функций, как обмен мгновенными сообщениями (общие уведомления, приглашения и т. д.).
  • Встроенная безопасность является неотъемлемой частью этих возможностей.
  • Поддержка расширяемости оболочки, например команды для совместной работы ** (использование клиента чата по умолчанию и т. д.), можно определить для использования знакомых средств при обмене данными в режиме реального времени Longhorn.
  • Общие элементы управления, такие как новый элемент управления Люди Picker, обеспечивают высокоуровневую поддержку приложений для взаимодействия.

Форматированные презентации и мультимедиа

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

  • Longhorn предоставляет разработчику многофункциональные классы графики, обеспечивающие анимацию, эффекты и визуально захватывающие изображения, использующие аппаратное ускорение.
  • Мощная декларативная и динамическая векторная графика обеспечивают гибкое представление и масштабирование для устройств вывода с высоким разрешением, сохраняя при этом ресурсы, так как графики создаются на языке описания.
  • Легко применяемые анимации повышают удобство использования и непрерывность пользовательского интерфейса.
  • Поддержка графики использует видеоадаптеры DirectX/3D с аппаратным ускорением для создания более иммерсивной и гибкой среды.
  • Приложение может легко интегрировать все формы пользовательского интерфейса: изображения, видео, звук, векторную графику, элементы управления, текст и т. д.
  • Новая модель макета позволяет отображать форматированный текст и мультимедиа благодаря платформе, которая автоматически настраивает разбиение на страницы, положение и т. д. в соответствии с размером экрана.
  • Новые текстовые службы, такие как включение отрисовки подпиксели (ClearType), обеспечивают визуально привлекательный графический графический интерфейс на любом компьютере с трехмерным ускорителем независимо от возможных разрешений экрана.
  • Вы можете объединять разрозненные фрагменты данных в контейнеры, которые можно перемещать по пользовательскому интерфейсу.
  • Условные преобразования данных на основе типа, значения или других правил позволяют средствам разработчика создать более простой пользовательский интерфейс.
  • Обширная мультимедийная платформа позволяет воспроизводить аудио и видео без сбоев; распределенное взаимодействие с A/V между компьютерами и устройствами бытовой электроники; высококачественные аудио- и видеокодеки; высокая производительность для записи и редактирования содержимого в режиме реального времени; службы метаданных компакт-дисков, DVD-дисков и телевидения.

Что вы найдете в этой книге

Каждая из этих тем может легко заполнить книгу самостоятельно. Поэтому я не собираюсь описывать все различные API в "Longhorn". Я также не собираюсь углубляться в подробное описание каждой технологии. Это не API или справочник. Я уверен, что это не будет долго, пока вы сможете найти много слегка отредактированных и перерисованных копий документации, доступных в книжных магазинах.

То, что я собираюсь сделать, это показать вам, как начать разработку для "Longhorn". Как минимум, следует прочитать главы 1 и 2, так как они охватывают абсолютные основы, которые необходимо знать для разработки приложений для платформы Longhorn.

В главе 1 рассматривается новая модель приложения. Не проходите Go. Не собирайте $200. Вам действительно нужно прочитать главу 1, или вы получите в тюрьму карта в почте. Я также познакомлю вас с новым языком разметки и программирования в главе 1. Независимо от того, являетесь ли вы разработчиком VB.NET, разработчиком C# или одним из мифических разработчиков COBOL.NET, вам потребуется изучить этот новый язык разметки и программирования. Ознакомьтесь с главой 1. Модель приложения Longhorn. Я не шучу. На самом деле, пойти сделать это сейчас и вернуться. Я подожду.

Итак, теперь, когда вы ознакомились с главой 1 и готовы создавать собственные приложения, вам, вероятно, следует прочитать главу 2. В ней я покажем, как скомпилировать, развернуть и запустить приложение Longhorn. Так что глава 2 также важна, но нет необходимости бросаться к ней. Это очень терпеливая глава и будет ждать, пока вы закончите это введение.

В остальных главах представлены различные технологии, на которые я ссылался во введении. Глава 3 представляет собой фантастическое введение в создание пользовательских интерфейсов с помощью нового языка разметки и дает вам представление о его возможностях. В главе 4 представлены новые API файловой системы, которые, скорее всего, приведут к отказу от API файловой системы Win32.

В главе 5 показано, как использовать привязку данных для перемещения данных практически из любого объекта .NET в пользовательский интерфейс и обратно без написания процедурного кода. Я покажу вам, как создавать мощные, безопасные и надежные приложения для связи в главе 6. И, наконец, в последней главе рассматриваются некоторые рекомендации по созданию современных подключенных мобильных приложений.

Спасибо, что болтаются до конца этого длинного введения. Теперь пришло время прочитать главу 2. (Вы читали главу 1 ранее, не так ли?) Получайте удовольствие с "Лонгхорн". У меня, конечно, есть!

Перейдите к главе 1. Модель приложения Longhorn

Брент Проректор

Брент Проректор является президентом и основателем Wise Owl Consulting (www.wiseowl.com), и имеет более трех десятилетий опыт разработки программного обеспечения. Компания Brent разработала и реализовала операционные системы, а также новые языки программирования и их компиляторы. Brent начал разработку приложений windows с использованием Windows 1x бета-версии в 1985 году и с тех пор участвует в разработке Windows. Он является автором и соавтором многочисленных книг по программированию для Windows, в том числе ATL Internals и Win32 Programming. Брент также является автором Demeanor для .NET — маскатора кода premier для приложений .NET.

© Корпорация Майкрософт, 2003 г. Все права защищены.

IntelliSense, Microsoft, MSDN, MS-DOS, Visual Basic .NET и Visual Studio .NET являются зарегистрированными товарными знаками или товарными знаками корпорации Майкрософт в США и (или) других странах. Другие названия продуктов и компаний, упомянутые здесь, могут быть товарными знаками соответствующих владельцев.