Предисловие
COM+, вероятно, самая интересная из новых технологий Microsoft, и я не могу назвать никого другого, кроме Боба Оберга, кто столь квалифицированно смог бы описать ее. Боб сочетает в себе умелого инженера, отличного писателя и одаренного учителя. Он много лет готовит учебные материалы и курсы для UCI Corporation. Бобу всегда хватает энтузиазма и терпения, так необходимых при обучении студентов новым программным технологиям.
В этой книге меня больше всего привлекает широта изложения, не ограничивающаяся только COM+, а охватывающая и такие вопросы, как технология COM, Windows DNA и ряд других. Первая часть книги посвящена COM и DCOM, и лучшего описания этих вопросов мне не приходилось встречать нигде. Впрочем, это меня не удивляет, так как я очень хорошо знаю Боба и то, сколько лет он обучает других технологиям COM, OLE, ActiveX и пр. Им для компании UCI Corporation разработано множество курсов по таким темам, как COM и OLE, COM и DCOM, программирование Internet с использованием ActiveX. Боб всегда с большим энтузиазмом осваивает новые технологии, и эта книга, посвященная COM+, — яркое тому свидетельство.
COM+ довольно сложна для изучения, поскольку профессиональные приложения включают множество смежных технологий, таких как транзакции, базы данных, безопасность, программирование Web и т.п. В своей книге Боб ухитрился кратко, но с потрясающей полнотой осветить все эти вопросы, снабдив теоретическое изложение множеством примеров. Чтение этой книги доставило мне искреннее удовольствие, которое, надеюсь, получите и вы.
Эндрю Скоппа (Andrew Scoppa), президент UCI
Введение
Эта книга представляет собой практический курс по COM+ и ее применению для построения трехуровневых приложений, использующих архитектуру Microsoft Windows DNA. Книга представляет собой результат многолетнего опыта программирования и обучения COM. В этой книге внимание сосредоточено в основном на вопросах, важных для разработчика-практика, но, тем не менее, она представляет немалый интерес и для других — например, архитекторов или менеджеров.
Изучать новую технологию увлекательно и интересно, но при этом достаточно сложно, поскольку она включает множество новых концепций и инструментов. Одна из ставившихся при написании книги задач — сделать ее по возможности самодостаточной, т.е. обеспечить даже неподготовленного читателя базовой информацией по всем необходимым вопросам. Так, данная книга включает большое количество сведений, касающихся COM, так что материал книги будет доступен даже в том случае, если прежде вы не имели дела с этой технологией.
Книга состоит из трех частей. Первая часть представляет собой введение в COM+ и архитектуру Microsoft Windows DNA, которая является основой для построения мощных трехуровневых распределенных приложений, предоставляя ядро инфраструктуры этой архитектуры. Это введение рассчитано на читателя-новичка, а потому в нем описана история возникновения и развития COM+, рассказано, какое программное и аппаратное обеспечение следует иметь для полноценного чтения этой книги, т.е. чтения, сопровождающегося выполнением всех демонстрационных примеров.
Вторая часть книги посвящена основам COM, представляющей собой фундамент, на котором построено здание COM. В третьей части речь пойдет о COM+. Там вы узнаете, каким образом создаются многоуровневые приложения в рамках модели Windows DNA.
В качестве языков разработки в этой книге используются как C++, так и Visual Basic. Одной из сильных сторон COM является ее нейтральность по отношению к языку разработки. Различные части приложения могут быть разработаны с использованием разных языков программирования, наиболее подходящих для решения той или иной задачи. Такой подход полезен как при разработке программного обеспечения, так и при изучении. В части II, "Основы COM" мы используем как C++, так и Visual Basic, но несколько большее ударение делается на C++, так как этот язык способствует лучшему пониманию концепций COM, которые тщательно скрываются от программиста в Visual Basic. В части III, "Windows DNA и COM+" мы в большей степени прибегаем к Visual Basic, поскольку здесь нас интересуют только сервисы COM+, и в методических целях мы старались избежать отвлекающих от обсуждаемой темы сложностей работы с C++. Например, Visual Basic используется для работы с базами данных с применением ADO. Компоненты для доступа к базам данных, разработанные на Visual Basic, могут легко быть вызваны бизнес-объектами, реализованными на C++ (в то же время, компоненты для работы с базами данных могут быть разработаны на C++ с использованием OLE DB, а бизнес-логика может быть реализованной на Visual Basic).
Почему мы не используем Java? На самом деле Java вполне подходит для реализации компонентов COM (по крайней мере, Microsoft Java, Visual J++). Способность Java поддерживать множественные интерфейсы делает этот язык программирования весьма пригодным для разработки COM. Но дело в том, что стандарт Java не предусматривает поддержку COM, а желание программистов использовать Java, по всей вероятности, объясняется способностью СОМ работать на разных платформах. Кроме того, будущее Visual J++ не совсем ясно.
Использование языков C++ и Visual Basic оправданно и эффективно, но, конечно же, у вас могут быть собственные симпатии и антипатии. Не повлияет ли это на эффективность вашей работы с книгой? Автор пытался сделать книгу полезной как программистам на C++, так и программистам на Visual Basic. Если вы — программист на C++, простые примеры на Visual Basic не должны представлять для вас никакой трудности. Если вы — программист на Visual Basic, полностью прочтите часть I, "Введение в COM+ и Windows DNA", главу 4, "Клиенты COM: концепции и программирование", главу 6, "COM-серверы контекста приложения", а также все главы, начиная с 9, "EXE-серверы" и заканчивая 13, "Многопоточность в COM", обратив особое внимание на главу 11, "Автоматизация и программирование COM на Visual Basic". При чтении делайте упор на концепции. Все это должно основательно подготовить вас к восприятию материала части III, "Windows DNA и COM+".
Вторым важным вопросом, рассматриваемым в книге, является программирование баз данных, по части которого у вас также может быть (а может и не быть) богатый опыт. Если у вас имеется опыт работы с настольными базами данных типа Microsoft Access, но вы не знаете, как функционирует SQL Server, читайте главу 18, "SQL Server и ADO". Здесь вы найдете массу информации о работе с SQL Server — мощной базой данных, которая достаточно проста в обращении. Тут же вы узнаете об OLE DB и ADO. Базы данных используются в главах, посвященных транзакциям и разработке Web-приложений.
Многие компании переходят к Web-приложениям, отличающимся простотой их размещения. Все, что требуется для работы клиента — это Web-броузер и подключение к Internet. Сервер при этом может использовать все возможности COM+. В главе 20, "Использование COM+ в Web-приложениях" вы познакомитесь с основами Web-программирования и о том, как используется COM+ на среднем уровне. В силу важности рассматриваемого вопроса это самая большая глава книги.
В Windows NT 4.0 реализованы две важные технологии — Microsoft Message Queue (MSMQ) и Microsoft Transaction Server (MTS). Введение в Microsoft Message Queue — технологию, играющую очень важную роль в COM+, — приведено в главе 21, "Microsoft Message Queue" настоящей книги. Что касается MTS, то здесь история несколько иная — в Windows 2000 MTS не существует как отдельный элемент, а встроен в COM+ как его неотъемлемая часть. Таким образом, отдельно MTS в книге не рассматривается, а лишь только как краткий обзор в части I, "Введение в COM+ и Windows DNA".
Очень важны при изучении новых технологий практические примеры, и в книге вы встретите немалое их количество. Многие из них — не просто демонстрации, а требуют большой работы по созданию полноценно действующего, пусть и предельно простого, приложения. Однако маленькие примеры не отражают всего, что должно быть учтено и включено в реальное трехуровневое приложение, а потому в книге представлено исследование игры Electronic Commerce Game™, которое, как я надеюсь, будет очень поучительно.
Все примеры работы с COM+ к этой книге создавались с использованием бета-версии Windows 2000 (Windows 2000 Beta 3 и Release Candidate 1), а потому я вынужден сделать обычное предупреждение о возможном несоответствии бета-версии окончательному продукту. В частности, Microsoft удалила из окончательной версии In-Memory Database (IMDB), а сервис Component Load Balancing (CLB) стал самостоятельным продуктом. Соответственно, я удалил из книги часть, касающуюся IMDB, но оставил информацию о CLB. Последние изменения и дополнения к этой книге, над которыми я продолжаю работу, вы можете найти, обратившись по адресу: www.ObjectInnovations.com.
Примечания о примерах к этой книге
Все примеры к этой книге вы можете найти на Web-узле www.williamspublishing.com. Примеры содержатся в самораспаковывающемся архиве install.exe, объемом немногим более одного мегабайта, который установит их на ваш жесткий диск. По умолчанию программные примеры устанавливаются на жесткий диск — в каталог c:\ComPlus, — но вы можете изменить эту установку. Однако, если вы используете другой каталог, вам следует внести соответствующие изменения в .reg-файлы в примерах к главе 6, "COM-серверы контекста приложения" и главе 9, "EXE-серверы". Я старался избежать привязок к конкретному каталогу, однако особо тщательно тесты в этом направлении мною не производились.
Если вы — программист, то работа с примерами будет для вас не только поучительной, но и доставит немалое удовольствие. Но даже если вы — архитектор или менеджер, я очень рекомендую вам поработать с практическими примерами "из жизни COM+", чтобы лучше и полнее представлять эту технологию и эффективно использовать ее в своей работе.