Часть III. Программирование компоновочных блоков .NET
В этой части рассматривается формат компоновочных блоков .NET. Вы узнаете, как развернуть и сконфигурировать библиотеки программного кода .NET, и выясните внутреннюю структуру бинарного образа .NET. В этой же части объясняется роль атрибутов .NET и конструкция многопоточных приложений. В последних главах этой части рассматриваются низкоуровневые вопросы [такие как, например, объектный контекст), а также синтаксис и семантика CIL.
Глава 11. Компоновочные блоки .NET
С точки зрения высокоуровневого подхода, компоновочные блоки – это файлы *.dll или *.exe. Но такая интерпретация компоновочных блоков .NET очень далека от "исчерпывающей". Вы узнаете, чем отличаются одномодульные и многомодульные компоновочные блоки и как строятся и инсталлируются такие объекты. Вы научитесь конфигурировать приватные и общедоступные компоновочные блоки, используя для этого XML-файлы *.config и компоновочные блоки политики поставщика. По ходу дела будут выяснены внутренняя структура GAC (Global Assembly Cache – глобальный кэш компоновочных блоков) и роль утилиты конфигурации .NET Framework 2.0.
Глава 12. Отображение типов, динамическое связывание и программирование с помощью атрибутов
В главе 12 изучение компоновочных блоков .NET продолжается – здесь рассматривается процесс обнаружения типов в среде выполнения с помощью пространства имен System.Reflection. С помощью этих типов можно строить приложения, способные читать метаданные компоновочных блоков "на лету". Вы узнаете, как динамически активизировать и обрабатывать типы во время выполнения программы, используя динамическое связывание. Здесь же исследуется роль атрибутов .NET (как стандартных, так и создаваемых программистом). Чтобы иллюстрировать возможности применения обсуждавшихся подходов, в конце главы рассматривается конструкция расширяемого приложения Windows Forms.
Глава 13. Процессы, домены приложений, контексты и хосты CLR
Здесь выполняется более глубокий анализ структуры загруженного выполняемого файла .NET. Главная цель – иллюстрация взаимосвязи между процессами, доменами приложений и границами контекстов. Определив эти объекты, вы сможете понять, как обслуживается CLR в рамках операционной системы Windows, и расширить свои знания о mscoree.dll. Представленная здесь информация может оказаться очень полезной при освоении материала главы 14.
Глава 14. Создание многопоточных приложений
В этой главе объясняется, как строить многопоточные приложения, и иллюстрируется ряд приемов, которые вы можете использовать для создания программного кода, безопасного с точки зрения многопоточных приложений. В начале главы снова обсуждается тип делегата .NET, и это делается с целью выяснения внутренних механизмов делегата, используемых для поддержки асинхронного вызова методов. Затем исследуются типы пространства имен System.Threading. Здесь обсуждается множество типов (Thread, ThreadStart, и т.п.), позволяющих очень просто создавать дополнительные потоки.
Глава 15. Понимание CIL и роль динамических компоновочных блоков
В этой главе ставится две цели. В первой половине главы рассматриваются синтаксис и семантика CIL, намного более подробно, чем в предыдущих главах. Остаток главы посвящен выяснению роли пространства имен System.Reflection. Emit. С помощью соответствующих типов можно строить программное обеспечение, позволяющее генерировать компоновочные блоки .NET в памяти во время выполнения программы. Компоновочные блоки, определенные и выполняемые в памяти, формально называют динамическими компоновочными блоками.
Часть IV. Программирование с помощью библиотек .NET
К этому моменту вы уже имеете достаточно информации о языке C# и формате компоновочных блоков .NET. Часть IV предлагает расширить ваши новые знания и исследовать целый ряд пространств имен в рамках библиотек базовых классов, в частности файловый ввод-вывод, слой удаленного доступа .NET, конструкцию Windows Forms и доступ к базам данных с помощью ADO.NET.
Глава 16. Пространство имен System.IO
По названию указанного пространства имен можно догадаться, что System.IO обеспечивает взаимодействие со структурой файлов и каталогов соответствующей машины. Из этой главы вы узнаете, как программными средствами можно создать (или уничтожить) систему каталогов, как размещать данные внутри различных потоков (файловых, строковых, в памяти и т.д.) и как выводить их оттуда.
Глава 17. Сериализация объектов
В этой главе рассматриваются сервисы сериализации объектов для платформы .NET. Упрощенно говоря, сериализация позволяет ''консервировать" состояние объекта (или множества связанных объектов) в потоке для использования в будущем. Десериализация (как вы можете догадаться сами) является процессом извлечения объекта из потока для восстановления в памяти с целью использования этого объекта в приложении. Поняв базовые принципы этих процессов, вы сможете управлять процессами сериализации с помощью интерфейса ISerializable и множества новых атрибутов, предлагаемых .NET 2.0.
Глава 18. Удаленное взаимодействие .NET
Вопреки распространенному убеждению. Web-сервисы XML нe являются единcтвенным средством построения распределенных приложений для платформы .NET. Из этой главы вы узнаете о слое удаленного доступа .NET. Вы увидите, что CLR поддерживает простые возможности обмена объектами между приложениями из разных доменов и на разных машинах, используя семантику MBV (marshal-bу-value – маршалинг по значению) и MBR (marshal-by-reference – маршалинг по ссылке). По ходу дела вы узнаете, как в декларативной форме во время выполнения можно изменить поведение распределенного .NET-приложения, используя XML-файлы конфигурации.
Глава 19. Создание окон с помощью System.Windows.Forms
В этой главе начинается ваше знакомство с пространством имен System.Windows.Forms. Подробно обсуждается вопрос построения традиционных приложений с графическим интерфейсом, поддерживающим системы меню, панели инструментов и строки состояния. Как и следует ожидать, здесь рассматриваются различные аспекты проектирования форм в Visual Studio 2005. а для .NET 2.0 – целый ряд типов Windows Forms (MenuStrip, ToolStrip и т.п.).
Глава 20. Визуализация графических данных средствами GDI+
В этой главе говорится о том, как реализовать динамическую визуализацию графических данных в приложении Windows Forms. Кроме обсуждения вопросов обработки шрифтов, цветовых данных, геометрических образов и файлов изображений, в этой главе рассматриваются вопросы проверки попадания в заданную область и техника перетаскивания объектов в рамках графического интерфейса. Вы узнаете о новом формате ресурсов .NET, который, как вы уже можете догадываться к этому моменту, основан на XML-представлении данных.
Глава 21. Использование элементов управления Windows Forms
Эта глава является последней из глав книга связанных с обсуждением приложении для Windows, и здесь будет рассмотрено множество элементов графического интерфейса, предлагаемых в .NET Framework 2.0. Вы научитесь использовать различные элементы управления Windows Forms, узнаете о приемах разработки диалоговых окон и наследовании форм. В этой же главе рассматривается возможность построения пользовательских элементов управления Windows Forms, которые можно интегрировать в IDЕ (Integrated Development Environment – интегрированная среда разработки).
Глава 22. Доступ к базам данных с помощью ADO.NET
ADO.NET – это API (Application Programming Interface – интерфейс программирования приложений) доступа к данным Для платформы .NET. Вы увидите, что с типами ADO.NET можно взаимодействовать как на связном уровне ADO.NET, так и несвязном. В этой главе будут рассмотрены оба эти режима ADO.NET, а также некоторые новые возможности, связанные с .NET 2.0, включая модель источника данных, построители строк соединений и асинхронный доступ к базам данных.
Часть V. Web-приложения и Web-сервисы XML
Эта часть книги посвящена созданию Web-приложений ASP.NET и Web-сервисов XML. Из материала первых двух глав этой части вы узнаете, что ASP.NET 2.0 является значительным шагом вперед по сравнению с ASP.NET 1.x и предлагает множество новых возможностей.
Глава 23. Web-страницы и Web-элементы управления ASP.NET 2.0
В этой главе начинается изучение Web-технологий, поддерживаемых в рамках платформы .NET с помощью ASP.NET. Вы увидите, что программный код сценариев серверной стороны теперь заменяется "реальными" объектно-ориентированными языками (такими как C#, VB .NET и им подобными). Здесь будут рассмотрены ключевые для ASP.NET вопросы, такие как работа с файлами, содержащими внешний программный код поддержки, роль Web-элементов управления ASP.NET, использование элементов управления, связанных с контролем ввода, и взаимодействие с новой моделью "шаблона страницы", предлагаемой ASP.NET 2.0.
Глава 24. Web-приложения ASP.NET 2.0
Эта глава расширяет ваши знания о возможностях ASP.NET с помощью рассмотрения различных способов управления состоянием объектов в рамках .NET. Подобно классической модели ASP, приложение ASP.NET позволяет создавать файлы cookie, а также переменные уровня приложения или сеанса. Однако ASP.NET предлагает и новую технологию управления состояниями – это кэш приложения. Рассмотрев многочисленные способы обработки состояний в ASP.NET, вы сможете выяснить роль базового класса System.HttpApplication (скрытого в файле Global.asax) и научиться динамически менять поведение Web-приложения в среде выполнения, используя файл Web.config.
Глава 25. Web-сервисы XML
В этой последней главе книги выясняется роль Web-сервисов XML и рассматриваются возможности их создания в рамках .NET. Грубо говоря, Web-сервис- это компоновочный блок, активизируемый с помощью стандартных HTTP-запросов. Преимущество этого подхода заключается в там. что HTTP является сетевым протоколом, применяемым почти повсеместно, поэтому он прекрасно подходах для использования в распределенных системах, нейтральных в отношении различных платформ и языков. Здесь же вы узнаете о множестве сопутствующих технология (WSDL, SOAP и UDDI), которые обеспечивают гармонию взаимодействия Web-сepвиса и внешнего клиента.
Исходный код примеров книги
Программный код всех примеров из этой книги (с точностью до встречающихся кое-где небольших фрагментов) доступен для загрузки из раздела исходного кода Web-узда издательства. Выполнив поиск по названию книги, перейдите на ее "домашнюю" страницу, откуда вы сможете загрузить файл *.zip с исходным кодом примеров. После распаковки содержимого этого файла вы обнаружите соответствующий программный код, разделенный по главам.
Обратите внимание на то, что в книге в разделах с названием Исходный код указано, где содержится программный код обсуждаемого примера. Этот программный код можно загрузить в Visual Studio 2005 для проверки и модификации.
Исходный код. В таком примечании указывается ссылка на каталог, содержащий исходный код соответствующего примера.
Для загрузки примера откройте файл *.sln в указанном подкаталоге.
Связь с автором
Если у вас возникнут вопросы в связи с исходным кодом примеров, потребность в дополнительных разъяснениях или просто желание поделиться своими идеями в отношении платформы .NET. без всякого стеснения пишите мне на мой адрес электронной почты atroelsen@IntetechTraining.com (чтобы гарантировать, что ваше сообщение не окажется в корзине моей почтовой системы, укажите "C# ТЕ" в строке темы).
Я постараюсь сделать все возможное, чтобы ответить в приемлемые сроки, но прошу учесть то. что я, как и вы, время от времени бываю очень занят. Если я не отвечай в течение недели или двух, то знайте, что это не из вредности и не потому, что я не хочу общаться с вами. Я просто занят (или, если выпало счастье, нахожусь где-то на отдыхе).
Так что, вперед! Спасибо за то, что вы купили эту книгу (или, как минимум, заглянули в нее в книжном магазине, обдумывая возможность ее покупки). Я надеюсь, что вам будет приятно читать ее, и вы сможете применить полученные знания в благородных делах.
Берегите себя, Эндрю Троелсен.
От издательства
Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другие замечания, которые вам хотелось бы высказать в наш адрес.
Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо, либо просто посетить наш Web-сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас.
Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию последующих книг.
Наши координаты:
E-mail: info@williamspublishing.com
WWW: http://www.williamspublishing.com
Информация для писем из: России: 115419, Москва, а/я 783 Украины: 03150, Киев, а/я 152
ЧАСТЬ I. Общие сведения о языке C# и платформе .NET
ГЛАВА 1. Философия .NET
Каждые несколько лет программист должен быть готов кардинально обновлять свои знания, чтобы идти в ногу с новыми технологиями. Языки (C++, Visual Basic 6.0, Java), каркасы приложений (MFC, ATL, STL) и архитектуры (COM, CORBA, EJB), которые сегодня составляют "золотой фонд" разработки программного обеспечения, в будущем непременно уступят место чему-то более совершенному или, по крайней мере, более новому. Несмотря на разочарование, которое вы можете ощущать при обновлении своей базы знаний, это неизбежно. Платформа .NET - это сегодняшнее предложение Microsoft в области разработки программного обеспечения.
Целью этой главы является построение концептуального фундамента, необходимого для успешного освоения всего остального материала книги. Слава начинается с обсуждения ряда вопросов .NET, относящихся к высокому уровню, – таких как компоновочные блоки, CIL (общий промежуточный язык) и JIT-компиляция (just-in-time – точно к нужному моменту). Вдобавок к вводному обзору некоторых ключевых возможностей языка программирования C#, будет также обозначена взаимосвязь между различными элементами каркаса .NET, такими как CLR (общая языковая среда выполнения), CTS (общая система типов) и CLS (общие спецификации языка). Как вы вправе ожидать, эти темы будут исследоваться более подробно в других частях книги.
Эта глава также содержит обзор возможностей, предлагаемых библиотеками базовых классов .NET, для обозначения которых иногда используют аббревиатуру BCL (Base Class Libraries – библиотеки базовых классов) или, как альтернативу, FCL (Framework Class Libraries – библиотеки каркасных классов). Наконец, в главе обсуждается независимая от языков и платформ сущность платформы .NET (это действительно так - .NET не замыкается на операционной системе Windows).
Предыдущее состояние дел
Перед рассмотрением специфики .NET будет полезно рассмотреть некоторые проблемы, стимулировавшие появление предлагаемой сегодня платформы Microsoft. Чтобы получить соответствующее представление, давайте начнем эту главу с краткого урока истории, чтобы напомнить об истоках и понять ограничения, существовавшие в прошлом (в конце концов, признание существования проблемы является первым шагом на пути ее решения). После этого мы обратим наше внимание на многочисленные преимущества, которые обеспечиваются языком C# и платформой .NET.
Подход C/Win32 API
Традиционно разработка программного обеспечения для операционных систем семейства Windows предполагает использование языка программирования C в сочетании с Windows API (Application Programming Interface – интерфейс программирования приложений). Несмотря на тот факт, что в рамках этого проверенного временем подхода было создано очень много вполне успешных приложений, мало кто станет оспаривать то, что процесс создания приложений непосредственно с помощью API оказывается очень трудоемким делом.
Первая очевидная проблема заключается в том, что C является очень лаконичным языком. Разработчики программ на языке C вынуждены "вручную" управлять памятью, использовать безобразную арифметику указателей и ужасные синтаксические конструкции. К тому же, поскольку C является структурным языком программирования, ему не хватает преимуществ, обеспечиваемых объектно-ориентированным подходом (здесь можно вспомнить о "макаронных" программах). Когда вы объединяете тысячи глобальных функций и типов данных, определенных в рамках Win32 API, с языком, который и без того выглядит устрашающе, не следует удивляться тому, что среди используемых сегодня программ оказывается так много ненадежных.