Сущность технологии СОМ. Библиотека программиста - Дональд Бокс
- Дата:20.06.2024
- Категория: Компьютеры и Интернет / Программирование
- Название: Сущность технологии СОМ. Библиотека программиста
- Автор: Дональд Бокс
- Просмотров:3
- Комментариев:0
Шрифт:
Интервал:
Закладка:
Чтобы помочь разработчику сфокусироваться на этих базовых принципах, я постарался включить в книгу столько кода, сколько это возможно без того, чтобы откровенно снабжать читателей замысловатыми реализациями для простого копирования их в свой исходный код. А чтобы обеспечить в контексте представительство программной методики СОМ, в приложения В содержится одно законченное СОМ-приложение, которое служит примером применения многих концепций, обсуждаемых на протяжении всей этой книги. Кроме того, загружаемый код для этой книги содержит библиотеку кода СОМ-утилит, которые я счел полезными в моих собственных разработках. Некоторые части этой библиотеки детально обсуждаются в книге, но библиотека в целом включена для демонстрации того, как на деле создавать реализации C++. Заметим также, что большая часть кода, появляющегося в каждой главе, использует макрос assert (объявить) из С-библиотеки этапа выполнения (runtime) с целью подчеркнуть тот факт, что могут встретиться определенные условия «до» и «после». В готовом коде многие из этих операторов assert следует заменить каким-либо кодом, более терпимо обрабатывающим ошибки.
Одним из недостатков издаваемых книг является то, что они часто устаревают уже к моменту их появления на книжных прилавках. И эта книга не исключение. В частности, предстоящий выход в свет СОМ+ и Windows NT 5.0 несомненно сделают некоторые аспекты этой книги неверными или по крайней мере неполными. Я старался предугадать, какую эволюцию придется претерпеть модели СОМ из-за выхода Windows NT 5.0, однако в момент написания этого текста Windows NT 5.0 еще не прошла внешнее тестирование, и вся информация подлежит изменениям. СОМ+ сулит усовершенствовать модель еще дальше; но было, однако, невозможно включить охват СОМ+ и в то же время выпустить мой манускрипт в этом году. Я настоятельно рекомендую вам изучать как Windows NT 5.0, так и СОМ+, когда они станут доступны.
Я должен был принять еще одно мучительное решение – как обращаться к различным коммерческим библиотекам, привыкшим реализовывать компоненты СОМ на C++. Заметив в различных группах новостей Интернета одни и те же проблемы, я предпочел игнорировать ATL (и MSC) и вместо этого сосредоточиться на повседневных темах СОМ, с которыми должен справляться каждый разработчик независимо от того, какой библиотекой он пользуется. Все больше и больше разработчиков создают спагетти ATL и удивляются, почему ничего не работает. Я твердо уверен, что невозможно выучить СОМ, программируя в ATL или MSC. Это не значит, что ATL и MSC не являются полезными инструментами для разработки компонентов СОМ. Это просто означает, что они не годятся для демонстрации или изучения принципов и технологий программирования в СОМ. Поэтому ATL не подходит для книги, сосредоточенной на модели программирования СОМ. К счастью, большинство разработчиков находят, что если есть понимание СОМ, то одолеть основы ATL не составит особого труда.
Наконец, цитаты, которыми начинается каждая глава, – это мой шанс написать для малого раздела книги то, что мне хочется. А чтобы сохранить насколько возможно непрерывность моего изложения, я ограничил свои необузданные и отклоняющиеся от темы сюжеты не более чем 15 строками кода C++ на главу. Обыкновенно этот код/цитата отражает доСОМовский подход к проблеме или концепции, представленной в данной главе. Предлагаю читателю в качестве упражнения попытаться на основе этих намеков реконструировать мое душевное состояние при написании каждой конкретной главы.
Благодарности
Написать книгу невероятно трудно – по крайней мере, для меня. Но я определенно знаю, что два человека страдали больше, чем я, – это моя терпеливая жена Барбара и мой снисходительный сын Макс (который, несмотря на свою юность, предпочитает СОМ другим объектным моделям). Мои благодарности им обоим: за то, что терпели мое отсутствие и почти постоянное капризное поведение, пока я пытался писать. К счастью, моя только что появившаяся дочь Эван родилась тогда, когда основная часть этой книги была уже написана, и ее отец стал в достаточной степени и домашним, и приятным. Такие же благодарности – всем сотрудникам DevelopMentor, которые были вынуждены подменять меня, когда я исчезал, чтобы выжать из себя очередную главу.
Большая часть моих ранних размышлений о рассредоточенных системах возникла, когда я в начале 90-х работал на Татсуя Суда (Tatsuya Suda) в университетском колледже в Ирвине. Татсуя учил меня и читать, и писать, и как вести себя с несдержанными пассажирами в токийских поездах. Спасибо и простите.
Благодарю и моего бывшего напарника по офису Дуга Шмидта (Doug Schmidt) – за то, что он представил меня Стэну Липпману (Stan Lippman) из C++ Report. Несмотря на поразительное неприятие Стэном моей первой статьи, мое имя впервые вышло в свет благодаря вам обоим.
Благодарю Майка Хендриксона (Mike Hendrickson) и Алана Фьюэра (Alan Feuer) за то, что поддержали этот проект в самом начале. Спасибо Бену Райану (Ben Ryan) и Джону Уэйту (John Wait) за их терпение. Благодарю Картера Шанклина (Carter Shanklin), который поддерживал этот проект до самого конца.
Спасибо людям из Microsoft Systems Journal, терпевшим мои поздние представления рукописей во время изготовления этой книги. Особые благодарности Джоанне Стэйнхарт (Joanne Steinhart), Гретхен Билсон (Gretchen Bilson), Дэйву Эдсону (Dave Edson), Джо Фланигену (Joe Flanigen), Эрику Маффеи (Eric Maffei), Мишелю Лонгакрэ (Michael Longacre), Джошуа Трупину (Joshua Trupin), Лауре Эйлер (Laura Euler) и Джоан Левинсон (Joan Levinson). Я обещаю больше никогда не запаздывать.
Благодарю Дэвида Чаппела (David Chappell) за то, что он написал лучшую из всех книг по СОМ. Я искренне рекомендую всем купить экземпляр и прочесть по меньшей мере дважды.
Спасибо приверженцам и фанатикам CORBA и Java, вовлекшим меня в многолетние жаркие сражения на различных конференциях сети Usenet. Ваша неизменная бдительность сделала мое понимание СОМ неизмеримо более глубоким. Несмотря на то, что я все еще считаю многие ваши аргументы неубедительными и в чем-то даже марсианскими, я уважаю ваше желание выжить.
Некоторые люди в фирме Microsoft очень помогали мне в течение многих лет и прямо или косвенно помогли написать эту книгу. Сара Вильямс (Sara Williams) была первым человеком СОМ из фирмы Microsoft, с которым я встретился. Сразу объяснив мне, что она недостаточно близко знакома с Биллом, она в утешение тут же представила меня Гретхен Билсон (Gretchen Bilson) и Эрику Маффеи (Eric Maffei) из Microsoft Systems Journal. Сара неизменно была «евангелистом Бокса» внутри фирмы, за что я ей навеки благодарен. Чарли Киндел (Charlie Kindel) написал прелестное предисловие к моей книге, несмотря на плотный график работы и чрезвычайно регулярные визиты к парикмахеру. Нэт Браун (Nat Brown) был первым человеком, показавшим мне, что такое апартаменты (apartments) и непоправимо развратившим мой лексикон, засорив его немецким словом «schwing» (вибрировать). Крэйг Брокшмидт (Kraig Brockschmidt) объяснил мне, что один из аспектов СОМ, выглядящий невероятно изящным, на деле был гротескным хакерским трюком, примененным в последнюю минуту. Дэйв Рид (Dave Reed) представил меня Вайперу (Viper) и выслушивает мои претензии всякий раз, когда я посещаю Рэдмонд. Пэт Хэлланд (Pat Helland) провел целую неделю конференции TechEd'97, вкручивая мне мозги и побуждая меня пересмотреть большинство из моих коренных представлений относительно СОМ. Скотт Робинсон (Scott Robinson), Андреас Лютер (Andreas Luther), Маркус Хорстман (Markus Horstmann), Мэри Киртланд (Mary Kirtland), Ребекка Норландер (Rebecca Norlander) и Грэг Хоуп (Greg Hope) много сделали для того, чтобы вытащить меня из тьмы. Тэд Хейз (Ted Hase) помогал мне печататься. Рик Хилл (Rick Hill) и Алекс Арманасу (Alex Armanasu) делали большое дело – наблюдали мою спину на техническом фронте. Другие люди из Microsort, оказавшие влияние на мою работу своим участием: Тони Вильямс (Tony Williams), Боб Аткинсон (Bob Atkinson), Крэйг Виттенберг (Craig Wittenberg), Криспин Госвелл (Crispin Goswell), Пол Лич (Paul Leach), Дэвид Кэйз (David Kays), Джим Спрингфилд (Jim Springfield), Кристиан Бомон (Christian Beaumont), Марио Гёрцел (Mario Goertzel) и Мишель Монтегю (Michael Montague).
Обзор почты DCOM неизменно был для этой книги источником вдохновения и идей. Отдельное спасибо тем, кто прочесывает DCOM для меня: печально известному Марку Райланду (Mark Ryland), СОМ-вундеркииду Майку Нелсону (Mike Nelson), Кэйт Браун (Keith Brown), Тиму Эвалду (Tim Ewald), Крису Селлсу (Chris Sells), Сайджи Эйбрахам (Saji Abraham), Хэнку де Кёнингу (Henk De Koning), Стиву Робинсону (Steve Robinson), Антону фон Штраттену (Anton von Stratten) и Рэнди Путтику (Randy Puttick).
На сюжет этой книги сильно повлияло мое преподавание СОМ в DevelopMentor в течение нескольких последних лет. Этот сюжет формировался студентами в той же мере, как и моими коллегами-преподавателями. Я мог бы поблагодарить персонально каждого студента. Эддисон Уэсли (Addison Wesley) ограничил авторское предисловие всего лишь двадцатью страницами, я благодарю нынешний состав DevelopMentor, который помог мне отточить мое понимание Essential СОМ посредством преподавания соответствующего курса и обеспечением бесценной обратной связи: Рона Сумиду (Ron Sumida), Фрица Ониона (Fritz Onion), Скотта Батлера (Scott Butler), Оуэна Толмана (Owen Tallman), Джорджа Шеферда (George Shepherd), Тэда Пэттисона (Ted Pattison), Кейт Браун (Keith Brown), Тима Эвалда (Tim Ewald) и Криса Селлса (Chris Sells). Спасибо вам, ребята! Мои благодарности также Майку Эберкромби (Mike Abercrombie) из DevelopMentor за создание такого окружения, где научный рост участника не сдерживался коммерцией.
- Аквариум. (Новое издание, исправленное и переработанное) - Виктор Суворов (Резун) - Шпионский детектив
- Права на результаты интеллектуальной деятельности и средства индивидуализации: Комментарий к части четвертой Гражданского кодекса Российской Федерации - Вадим Погуляев - Юриспруденция
- У меня есть идея! Что дальше? - Михаил Соболев - О бизнесе популярно
- Ориентирование - К. М. Станич - Современные любовные романы
- Проект 365 - Константин Рочев - Поэзия