Предисловие
На протяжении нескольких лет язык программирования Visual C++ от компании Microsoft используется как чрезвычайно мощное средство для создания программного обеспечения, работающего под управлением операционной системы Windows. Несмотря на то, что для приобретения необходимых навыков требуются существенные инвестиции, изучение Visual C++ вполне оправдано, ведь с его помощью можно делать некоторые такие вещи, которые просто немыслимо реализовать на каком-либо другом языке программирования. Сейчас, когда для нас открыт мир .NET, мы с радостью узнаем, что для реализации наших усилий, направленных на достижение максимальной мощности и производительности приложений, мы можем продолжать использовать Microsoft Visual C++ совместно с его новыми расширениями управляемого C++. Управляемый C++ может быть использован для построения сборок на платформе .NET, а также для создания новых удивительных настольных программ, Web-приложений и Web-сервисов. Неуправляемый C++ также может использоваться, например, при построении Web-узлов и Web-сервисов на основе сервера ATL Server.
Платформа .NET привносит радикальные изменения в технологию разработки приложений, работающих под управлением операционной системы Windows компании Microsoft. Кроме того, приобретение навыков, необходимых для построения приложений на платформе .NET, является серьезной задачей для программистов, пишущих Windows-приложения. В состав новой платформы входят новые расширения языка C++, а также громадная библиотека классов, .NET Framework.
Данная книга является практическим руководством, в ней содержится масса примеров. На конкретном примере, который рассматривается во многих главах этой книги, демонстрируются реальные возможности платформы .NET. Цель книги - снабдить вас всеми необходимыми знаниями, владея которыми, вы сможете начать самостоятельно писать серьезные приложения на Visual C++, использующие возможности библиотеки классов .NET Framework. Книга, которую вы держите в руках, одна из серии The Integrated .NET Series, выпускаемой издательствами Object Innovations и Prentice Hall PTR.
Структура книги
Книга состоит из пяти основных глав и организована так, что вы легко можете отыскать необходимый для изучения материал. В первой части книги, включающей главы 1 "Что такое Microsoft .NET?" и 2 "Основы технологии .NET", содержится обзорный материал, который должен быть прочитан каждым. Именно здесь содержится ответ на очень важный вопрос: "Что такое Microsoft .NET?". Тут также изложены основные идеи, лежащие в основе модели программирования, использующей библиотеку классов .NET Framework.
Во второй части книги, включающей главы с 3 "Программирование на управляемом C++" по 5 "Управляемый C++ в .NET Framework", рассматриваются приемы программирования, использующие управляемый C++. Даже если вы уже знакомы с обычным C++, вы все равно захотите прочесть эти главы. В главе 4 "Объектно-ориентированное программирование на управляемом C++" вводятся управляемые расширения языка C++. Рассмотрение конкретного примера, который затем прорабатывается в последующих главах книги, также начинается с главы 4 "Объектно-ориентированное программирование на управляемом C++". В главе 5 "Управляемый C++ в .NET Framework" рассматриваются такие важные понятия как интерфейсы, делегаты и события. В этой главе описываются также важные взаимодействия, возникающие между управляемым C++ и библиотекой классов .NET Framework.
В третьей части, включающей главы с 6 "Создание графических пользовательских интерфейсов" по 9 "Программирование в ADO.NET", рассматриваются важные фундаментальные понятия, касающиеся библиотеки классов .NET Framework. В главе 6 "Создание графических пользовательских интерфейсов" рассмотрено программирование пользовательского интерфейса с использованием классов Windows Forms. В главе 7 "Сборки и развертывание" обсуждается понятие сборки, а также вопросы, связанные с развертыванием приложений. Решения в этой области составляют главное достижение, результатом которого является простота и надежность развертывания Windows-приложений. Благодаря указанным достижениям положен конец печальной ситуации, известной как "ад DLL" (DLL hell). В главе 8 "Классы каркаса .NET Framework" вводятся важные классы библиотеки .NET Framework, кроме того, рассматриваются понятия метаданных, сериализации (преобразования в последовательную форму), поточной обработки данных, атрибутов, асинхронного программирования, удаленных вычислений, а также управление памятью. В главе 9 "Программирование в ADO.NET" изучается технология доступа к базам данных ADO.NET, которая предоставляет последовательный набор классов для доступа как к реляционным, так и XML-данным.
В четвертой части книги содержится основательное введение в Web-программирование на основе технологии ASP.NET и простого протокола доступа к объектам SOAP (Simple Object Access Protocol). Глава 10 "ASP.NET и Web-формы" дает представление об использовании технологии ASP.NET и Web-форм при разработке Web-узлов. В главе 11 "Web-службы" рассмотрены простой протокол доступа к объектам (Simple Object Access Protocol - SOAP) и Web-сервисы, при помощи которых реализован мощный и легкий в использовании механизм, обеспечивающий функциональную совместимость неоднородных (гетерогенных) систем. В главе 12 "Web-узлы и Web-службы, работающие на основе ATL Server" приводятся приемы программирования при помощи сервера библиотеки шаблонных классов ATL Server, используемые при разработке как Web-приложений, так и Web-сервисов.
В последней части книги рассмотрены важные дополнительные понятия библиотеки классов .NET Framework. В главе 13 "Защита" детально изучены вопросы безопасности, включающие безопасность доступа к коду (Code Access Security) и декларативную безопасность. Глава 14 "Трассировка и отладка в .NET" знакомит нас с классами, которые используются при отладке и трассировке и входят в состав платформы .NET. В главе 15 "Смешивание управляемого и неуправляемого кода" рассматриваются вопросы функциональной совместимости платформы .NET с традиционными COM-приложениями, а также приложениями, построенными на платформе Win32.
Примеры программ
Единственный способ приобретения надежных базовых знаний состоит в прочтении и написании большого количества программ. Причем некоторые из этих программ должны быть достаточно большого размера. В данной книге содержится много маленьких программ, при помощи которых отдельно иллюстрируется каждый из рассматриваемых аспектов платформы .NET. Такая подача материала облегчает его понимание. Программы четко выделены в тексте.
Основной рассматриваемый конкретный пример под названием Acme Travel Agency (Туристическое агентство Acme, или Бюро путешествий Acme), тщательно прорабатывается в большинстве глав (с 4 "Объектно-ориентированное программирование на управляемом C++" по 12 "Web-узлы и Web-службы, работающие на основе ATL Server"). На этом примере иллюстрируются многие особенности совместной работы управляемого C++ и платформы .NET, имеющие место в реальных приложениях.
Примеры программ представлены в виде самораспаковывающихся архивных файлов на Web-узле данной книги. При извлечении файлов из архива создается структура каталогов. По умолчанию корневой каталог находится по адресу c:\OI\NetCpp. Примеры программ, которые начинают появляться с главы 2 "Основы технологии .NET", находятся в каталогах Сhap02, Chap03, и так далее. Каждый пример, относящийся к определенной главе, находится в отдельной папке, которая хранится в каталоге, относящимся к соответствующей главе. Названия папок четко идентифицируются в тексте. Пиктограмма, размещенная на полях, предупреждает о том, что дальше следует пример кода. В каждом каталоге, который относится к какой-либо главе, где пошагово прорабатываются разные аспекты рассматриваемого конкретного примера, содержится папка, имеющая название CaseStudy. В случае необходимости, в каждом каталоге, который связан с определенной главой, имеется файл readme.txt. В нем содержатся инструкции и необходимые объяснения, которые вам понадобятся, чтобы запустить приводимые примеры программ.
Книга, которую вы держите в руках - одна из серии The Integrated .NET Series. Примеры программ, относящиеся к другим книгам данной серии, находятся в их собственных каталогах, расположенных в каталоге \OI. То есть, после инсталляции все папки с примерами программ, относящихся к другим книгам данной серии, будут расположены в одном общем каталоге.
Эти программы предназначены исключительно для учебных целей. Их не следует использовать в составе какого-либо законченного программного продукта. Программы (а также инструкции, в которых описываются особенности их использования) поставляются так "как есть" ("as is"). Иными словами, какие-либо гарантии на них не распространяются.
Предостережение
При написании книги и относящегося к ней кода использовалась версия Beta 2 библиотеки классов .NET Framework. По утверждению компании Microsoft, данная версия платформы .NET близка к ее окончательному варианту. Не подлежит сомнению, что прежде чем выйдет окончательная версия, платформа .NET еще претерпит некоторые изменения. Было проверено, что код, содержащийся в примерах, нормально функционирует на компьютерах, работающих под управлением операционной системы Windows 2000. Код, описывающий работу с базами данных, был проверен на работоспособность при помощи SQL Server 2000. В нескольких примерах, относящихся к главам, где рассматривается работа с базами данных и вопросы безопасности, в качестве связывающих строк и функциональных имен присутствуют имена машин. При попытке выполнения таких примеров вам следует изменить эти имена на соответствующее имя вашей машины. С целью облегчения инсталляции, в примерах, иллюстрирующих работу с базами данных, используется имя пользователя "sa", а пароль отсутствует. Само собой разумеется, что для входа в реальную систему вы всегда должны использовать учетное имя вместе с паролем. Никогда не следует разрабатывать приложения, предназначенные для работы с базами данных, в которых для входа в базу данных используется имя sa.
Web-узлы
Web-узел, относящийся к книгам данной серии, имеет следующий адрес:www.objectinnovations.com/dotnet.htm.
На этом Web-узле приводятся ссылки на примеры программ, которые рассматриваются в данной серии. Щелкнув на соответствующей ссылке, можно загрузить интересующий вас пример программы. Дополнительная информация относительно технологии .NET может быть найдена по адресу:www.mantasoft.com/dotnet.htm.
Кроме того, на этом Web-узле содержатся также примеры программ, рассмотренных в данной книге.
На Web-узле нашей книги размещены еще и ресурсы, посвященные изучению технологии .NET, которые будут отслеживать последние достижения в развитии указанной технологии.
Благодарности
Мы признательны Майку Михану (Mike Meehan) за его помощь в реализации данного проекта. Началом проекта послужила наша встреча на ежегодной конференции Professional Development Conference - PDC, на которой компанией Microsoft была анонсирована технология .NET. Наш разговор привел в движение то, что затем вылилось в большую серию книг, посвященных технологии .NET. Данная книга является третьей в этой серии. Нам хотелось бы также поблагодарить Джилл Гарри (Jill Harry), сотрудницу издательства Prentice Hall, за продолжающуюся до настоящего времени поддержку, которую она оказывает в реализации этого амбициозного книжного проекта. Наш редактор, Ник Радхабер (Nick Radhuber), очень помог нам не только при работе над данной книгой. Он также помогает, координируя работу над всей серией книг.
Во время работы над указанной серией книг, многими разными способами нам помогли несколько людей, работающих в компании Microsoft, а именно: Стивен Прачнер (Steven Pratschner), Джим Хогг (Jim Hogg), Майкл Пайззо (Michael Pizzo), Майкл Дей (Michael Day), Крыштоф Квалина (Krzysztof Cwalina), Кит Боллинджер (Keith Ballinger) и Эрик Олсен (Eric Olsen). Мы благодарим их за то, что они смогли выделить для нас время в своем чрезвычайно напряженном рабочем графике, и помогли нам глубже проникнуть в суть проблемы и прояснить некоторые моменты. Конни Салливан (Connie Sullivan) и Стейси Джиард (Stacey Giard) помогли нам получить доступ к ресурсам компании Microsoft, а также координировали технические сессии.
Майкл Стифэль (Michael Stiefel), автор другой книги из этой же серии, выступил в роли ценного ресурса при написании многих глав данной книги. Уилл Провост (Will Provost) помог нам прояснить несколько моментов, связанных с языком XML. Мы хотим также поблагодарить всех авторов книг, объединенных в серию, посвященную платформе .NET. Действительно, в группе, которая работает над близкими по тематике книгами, большое значение имеет успешность совместных усилий. (Хотя нужно признаться, что, войдя в процессе написания книги в азарт, мы не всегда сотрудничали так тесно, как могли бы.) К числу этих трудолюбивых людей принадлежат Эрик Белл (Eric Bell), Говард Фенг (Howard Feng), Майкл Салтзман (Michael Saltzman), Ед Сунг (Ed Soong), Дана Вятт (Dana Wyatt), Дэвид Жанг (David Zhang), а также Сэм Жу (Sam Zhu).
Роберту всегда было непросто писать благодарности, поскольку в работе над таким крупным проектом как этот, задействовано очень много людей, которым следует выразить благодарность. Я (Роберт) хотел бы поблагодарить мою жену, Мэрианн (Marianne), за то, что она оказывала мне огромную поддержку и вдохновляла все мои замыслы, направленные на написание книги. Для реализации подобного проекта требовались особые усилия, и, таким образом, ее поддержка является еще более значимой. Благодарю вас всех, - коллег, друзей и студентов - вас так много, что невозможно упомянуть каждого по имени - всех тех, кто помогал мне все эти годы.
Питер хотел бы поблагодарить свою жену Элизабет (Elizabeth) и дочь Кэтрин (Katherine). Его любовь к ним является всепроницающим свойством пространственно-временного континуума, - свойством, проникающим во всю вселенную, во все времена, в прошлое, настоящее и будущее.
7 Ноября, 2001