Предисловие
Поначалу,
когда Джефф попросил меня написать предисловие для своей книги,
я была
очень польщена. Я подумала, что он по-настоящему меня уважает.
Дорогие
мои, поверьте, это общее заблуждение наивных людей, на самом деле,
здесь
нечто совсем иное. Я была под номером 1 4 в его списке потенциальных
авторов
предисловия для своей книги. И лишь когда Джеффу стало очевидно,
что другие
кандидаты из этого списка (Билл Гейтс, Стив Балмер, Кэтрин ЗетаДжане
и т.
д.) не согласятся, он повел меня ужинать.
Тем не
менее никто не сможет рассказать вам об этой книге больше, чем я.
Я имею
в виду, что Кэтрин Зета-Джане, конечно, могла бы подробно рассказать
вам о
сервисе мoblle Makeover�> 1 , но я-то знаю обо всех отражениях, исключениях
и модификациях
языка С#, потому что мы с Джеффом обсуждали
это годами
. Для нас это было обычным разговором за ужином ! Другие люди
говорят
о погоде, а мы - о .NET. Даже
Адэн, наш шестилетний сын, задает
вопросы
о книге Джеффа. Правда, в основном о том, начнут ли они, наконец,
во что-
нибудь играть, когда Джефф напишет свою книгу. Двухлетний Грант
пока
не говорит, но, возможно, первым его словом будет сериализация�>
.
Н а самом
деле, если в ы хотите знать, как все начиналось, то это происходило
следующим
образом. Приблизительно 1 0 лет назад Джефф посетил секретное
Совещание�> в M icrosoft. Компания привлекла группу экспертов (а на самом
деле,
откуда у Джеффа этот титул? На эксперта в школе не учат) и представила
новую
технологию взамен СОМ. Поздно ночью, в постели (у нас принято
обсуждать
это в постели) он сказал, что С О М померла. При этом Джефф был
просто
потрясен новой технологией. Практически втрескался в нее. В течение
нескольких
дней он ходил вокруг строения 42 в Редмондеком кампусе
Microsoft,
надеясь узнать о .NET побольше. Похоже, его роман�> продолжается
до сих
пор, раз он даже решил написать об этом книгу.
Годами
Джефф рассказывал мне о многопоточности. Ему по-настоящему
нравится
эта тема. Однажды, в Новом Орлеане, мы с ним пошли на двухчасовую
прогулку,
и всю дорогу он твердил мне о том, что у него достаточно материала
для книги
искусство многопоточности�>. Как я могу не понимать многопоточность
в
Windows?! Это буквально разрывало его сердце. Как вьmолняются
потоки?
Почему
они создаются, если нет четкого плана их работы? Эти вопросы составляют
основу
мироощущения Джеффа, они стали смыслом его жизни. В конце
концов,
всех
их он включил в эту книгу. Они все здесь, и поверьте мне, если вы хотите
знать
о многопоточности и потоках, ниiСЮ не расскажет вам о них
лучше и больше,
чем Джефф.
И все потраченные на это часы его жизни (их уже не вернуть) здесь,
в вашем
распоряжении. Пожалуйста, прочтите эту книгу. А потом
пошлите Джеффу
электронное
письмо с рассказом о том, как эта кюпа изменила вашу жизнь. Если вы
этого
не сделаете, он станет еще одним трагическим персонажем, чья жизнь прошла
бессмысленно
и беспросветно. И он упьется до смерти диетическим лимонадом.
1 Кэтрин
Зета-Джонс рекламирует этот сервис на американском телевидении. - При.меч.
перев.
П редисловие
1 3
Эта
редакция книги включает в себя новую главу о сериализации в о время
выполнения
программы. Оказывается, это совсем не так просто, как залить молоком
кукурузные
хлопья на завтрак для детей. Ко г да я пыталась в этом разобраться,
то
за компьютерными разговорами перестала замечать окружающий
мир.
И хотя я так и не поняла, что это, об этом написано в книге, и вы можете
об
этом прочитать (запивая молоком).
Сейчас
у меня одна надежда, что дорогой Джефф перестанет рассуждать
о теории
сборки мусора, а реально соберет мусор и вынесет его на помойку.
Действительно,
ну неужели это так сложно?
И последний
довод, дорогие мои, - это самое главное и самое последнее
произведение
Джеффри Рихтера. Больше книг не будет. Конечно, мы говорим
это
каждый раз, когда он заканчивает очередную книгу, но в этот раз мы
действительно
так думаем. Итак, было 13 книг,
но эта - лучшая и последняя.
Быстрее
ее покупайте, потому что тираж книги ограничен, и если его весь раскупят,
то
больше книг не будет. Как у QVC 1 • Ну, а мы из виртуальной жизни
вернемся
в реальную и сможем обсудить действительно важные вещи, например,
что
же сегодня разбили наши детки и чья очередь менять подгузники.
Кристин
Трейс (женаДжеффри)
24
ноября 2009 года
Обыч
н ы й завтрак в семье Рихтеров
1 Qvc.com
- сайт, на котором распродают товары с о скидкой З<l
ограниченнос время по принципу
кто 11е успел, тот опоздал. - Примеч. перев.
Введение
В
октябре 1 999 года люди из Microsoft впервые
продемонстрировали мне
платформу
. N E T Framework, о бщеязыковую среду выпол1lе1lия ( C ommon
Language
Runtime, CRL) и язык программирования С#. Когда я впервые это
увидел,
то был очень сильно впечатлен и сразу понял, что процесс создания
мною
программнога обеспечения претерпит существенные изменения. Меня
попросили
проконсультировать команду разработчиков, и я немедленно дал
свое
согласие. П оначалу я думал, что платформа .NET Framework
является
некоей
прослойкой между И1lmерфейсами програ.м.мирова1lия приложе1lий
( Application Program Interface, API) Win32 и обьекm1lоЙ моделью кo.мno1le1lmoв
( C omponent Obj ect Model, С О М ) . Но чем больше я ее изучал , тем больше
различий
находил. В некотором смысле это операционная система. У
нее
собственные
менеджер виртуальной памяти, система безопасности, файловый
загрузчик,
механизм обработки ошибок, изолированная среда, в которой выполняются
домены
приложений, модель многопоточности и многое другое.
В
этой книге все эти темы освещаются таким образом, чтобы вы мог ли эффективно
проектировать
и реализовывать программное обеспечение на этой
платформе.
Я
провел много времени, разбираясь в понятиях многопоточности,
одновременном
в
ы п о л н е н и и , параллелизме, синхронизации и т. д . Сегодня,
когда
м ногоядерные компьютеры получили широкое распространение, эти
понятия
приобретают все большую важность. Несколько лет назад я решил
написать
книгу, посвященную многопоточности. Однако один вопрос тянул
за
собой другой , и в результате книгу о многопоточности я так и не написал.
Однако
когда пришло время переработать эту книгу, я решил включить
в
нее сведения о многопоточности. Таким образом, эта книга затрагивает
платформу
.NET Framework, язык программирования С# и многопоточность
(см.
часть V ) .
Я
писал текст первого издания этой книги в октябре 2009 года, и
уже прошло
10
лет с тех пор, как я работаю с платформой .NET Framework
и языком
программирования
С # . За эти 1 0 лет я создал разнообразные приложения
и
как консультант компании Microsoft внес значительный вклад в разработку
платформы
.NET Framework. В качестве сотрудника своей компании Wintellect
(
http:/ /Wi nte l lect.com) я работал со многими зак<lЗчиками, помогая им
проектировать
программное
обеспечение, отлаживать и оптимизировать программы,
решать
их проблемы, связанные с .NET Framework. Весь этот опыт помог мне
реально
узнать, какие именно проблемы возникают у людей при работе с платформой
.NET
Framework и как эти проблемы решать. Я попытался
сопроводить
этими
знаниями все темы, представленные в этой книге.
Для
кого эта кн и га
Для
кого эта книга 1 5
Цель
этой книги - объяснить, как разрабатывать приложения и многократно
используемые
классы для .NET Framework. В частности, это означает, что я
собираюсь
рассказать, как работает среда C LR, какие возможности она предоставляет
разработчику.
В этой книге также описываются различные классы
cma1tдapm1toй 6uблuome1CU 'КЛассов (
Framework Class Library, FCL). Ни в одной
книге
невозможно описать F C L полностью - она содержит тысячи типов,
и
и х число продолжает расти ударными темпами. Так что я остановлюсь на
основных
типах, с которыми должен быть знаком каждый разработчик. И хотя
в
этой книге не рассматриваются отдельно подсистема графического интерфейса
пользователя
Windows Forms, система для построения клиентских приложений
Windows Presentation Foundation (WPF), платформа Silverlight, X M L
веб-сервисы,
веб-формы и т. д., технологии, описанные в ней, применимы ко
всем.
этим видам приложений.
В
книге используются системы Microsoft Visual Studio 20 1 0, .NET
Framework 4.0
и
компилятор С# версии 4.0. В компании Microsoft стараются обеспечивать
максимальную
обратную совместимость разрабатываемых программных продуктов,
поэтому
многое из того, что обсуждается в данной книге, применимо
и
к ранним версиям. Все примеры в книге написаны на языке С#, но так как
в
среде CLR можно использовать различные языки программирования, книга
пригодится
также и тем, кто пишет на других языках программирования.
П
Р И М ЕЧАНИ Е
В
ы м ожете загрузить п р и м е р ы и з к н и г и с с а й т а ко м п а н и и W i п
te l le c t
( http://Wiпte l lect.c o m ) . В раз н ы х раздел ах к
н и г и я о п и с ы в а ю к л а с с ы и з
м
о е й собстве н н о й библиотеки Power Th read i n g Library. Э т а б и бл и отека
свободно
рас п ространяется и ее тоже можно скачать с сайта ко м п а н и и
Winte
l l ect.
На
сегодняшний день компания Microsoft предлагает несколько версий среды
CLR.
Это серверная версия, которая выполняется на 3 2-разрядной системе
Windows
под архитектуру х86, а также на 64-разрядной системе Windows под
архитектуры
х64 и IA64. Еще предлагается версия под платформу Silverlight,
которая
реализована на основе программнога кода серверной версии среды
CLR.
Следовательно, все, что описано в данной книге, применимо и к построению
приложений
под платформу Silverlight, за исключением некоторых
отличий,
касающихся того, как Silverlight запускает сборки. Компания Microsoft
также
предлагает облегченную версию .NET Framework для мобильных телефонов
и
других устройств с операционными системами Windows Moblle
и
Windows СЕ, которая называется .NET Compact Framework. Многое и з того,
что
рассмотрено в данной книге, применимо для разработки приложений под
.NET
Compact Framework, но это не основное, на чем был сделан акцент.
1
6 В ведение
1
3 декабря 2001 года Е вропейская ассоциация п о стандартизации и н формационных
и
вычислительных систем ЕСМА I nternational ( http:jjwww.
ecm
a - internati onal. org /) приняла в качестве стандарта язык С# и некоторые
компоненты
среды CLR и библиотеки FCL. Этот стандарт позволил сторонним
компаниям
разработать ЕСМА-совместимые версии этих технологий под
архитектуру
других процессаров и операционных систем. В действительности,
Novell
выпускает платформу Moonlight (http:jjm ono-project.comj M oonlig ht),
реализацию
платформы Silverlight с открытым кодом ( http://Si lverlight.net), которая,
прежде
всего, ориентирована на Linux и другие операционные системы на
основе
UNIX/X11 . Платформа Moonlight основана на ЕСМА-спецификациях.
Л
ьвиная доля этой книги посвящена описанию этих стандартов, поэтому
многие
найдут эту книгу полезной при работе с реализациями приложений
и
библиотек, совместимых со спецификацией ЕСМА.
П
Р И М ЕЧАН И Е
Я
и м о и редакторы усердно nотрудились, чтобы дать вам наиболее точную,
свежую,
исчерпывающую, удобную, понятную и безошибочную информацию.
Однако
даже эта фантастическая команда н е может предусмотреть все.
Есл
и вы обнаружите в этой книге ошибки (особен но ошибки в программнам
коде)
или же у вас появится конструктивное предложение, то я буду
вам
очень признателен за сообщение об этом по
моему адресу: JeffreyR@
Winte l l ect.com.
П
освящение
Кристин.
Словами н е выразить то, что я думаю о нашей совместной жизни.
Я
с нежностью отношусь к нашей семье и ко всем нашим семейным
радостям.
Каждый
день моей жизни наполнен любовью к тебе.
Адэн
(6 лет) и Граш (2 года). Вы оба вдохновляли меня, учили меня играть
и
весело проводить время. Наблюдения за тем, как вы росли, были прекрасны
и
полезны. Я рад быть частью вашей жизни. Я люблю
и ценю вас больше всех
на
свете.
Благодарности
Я
бы не написал эту книгу без помощи и технической поддержки
многих
людей.
В частности, я хотел бы поблагодарить мою семью. Очень сложно измерить
время
и усилия, которые требуются для написания хорошей книги, но
я
знаю точно, что без поддержки моей жены Кристин и двух сыновей, Адэна
и
Гранта, я никогда не смог бы эту книгу написать. Очень часто наши планы
М
ы хотим вас усл ы ш ать 1 7
с
овместн ого времяпров ождения ерывались из-за жестк ог о графика раб оты
над
книгой. Теперь, по завершении раб оты над ней, я с рад остью предвкушаю
рад
ость общения с семьей.
В
написании книги мне п ом огали фантастические люди. Кристоф Насарр
(Christophe
Nasarre) выполнил титанический труд по пр оверке м оей раб оты
и
позаб отился о точности и корректн ости ф ормулир ов ок. Он внес очень б ольшой
вклад
в повышение качества книги . Как всегда, был о очень приятн о раб отать
с
редакторской командой Microsoft Press. Отдельную благодарность я х очу
выразить
Бену Райану ( Ben Ryan) , Вэлери Вулли (Valerie Woolley) и Дэвону
Масгрейву
(Devon Musgrave) . Спасиб о также Джин Ф индли (Jean Findley)
и
Сью МакКланг ( Sue McClung) за редактуру и п ом ощь при выпуске книги.
Поддержка
Мы
прил ожили максимум усилий, чтобы эта книга была как м ожн о б олее точной.
Все
исправления и изменения будут добавлены в соответствующую статью
Базы
знаний (M icrosoft Knowledge Base), доступную на сайте Справка и п оддержка
Microsoft�> . Издательств о Microsoft Press п остоянно обн овляет спис
ок
исправлений
и доп олнений к своим книгам, к от орые д оступны п о адресу http://
micr osoft. comjlear n i ngjs u p p ortjboo ks/.
Если
у вас все же в озникнут в опр осы, ответы на к оторые вы не сможете
найти
на предл оженных сайтах или в статьях Базы знаний, то м ожете задать
эти
в опросы в письме, отправив его по адресу m spi nput@micr os
oft.c o m .
П
ожалуйста, обратите внимание, ч т о п о указанным адресам техническая
поддержка
пр ограммных продукт ов не предоставляется.
М
ы хоти м вас усл ышать
Мы
приветствуем любые отзывы на эту книгу. П ожалуйста, оставьте ваши
комментарии
и предл ожения в опр осе, к от орый нах одится п о адресу http://
m icr osoft.comjlear n i ngjboo ksurvey.
Ваше
участие п ом ожет Microsoft Press с оздавать книги, к оторые с оответствуют
вашим
запр осам и ожиданиям.
П
Р И М ЕЧАН И Е
Мы
надеемся, что вы оставите в о п росе nодробный отзыв. Если у вас есть
вопросы
о нашей издательской программе, вскоре выnускаемых кн игах или
же
издательстве в целом, мы рады ответить на них в Твиттере: http:jjtwitter.
c
o m/ M i cr o s oftPr e s s. Для вопросов относител ь н о и здан и я и с n ол ьзуйте
только
вышеуказан ную электронную n очту.
1
8 Введение
От
издателя перевода
Ваши
замечания, предл ожения и в опросы отправляйте по адресу электр онной
п
очты comp@piter.com ( издательств о питер•,
компьютерная редакция) .
Мы
будем рады узнать ваше мнение!
П
одр обную информацию о наших книгах вы найдете на веб-сайте издательства
http:jjwww.piter.com__