Microsoft Visual C++ 6.0
Поддержка новых платформ и технологий
Создание корпоративных приложений
В январском номере мы познакомились с новым продуктом фирмы Microsoft — Microsoft Visual Studio 6.0, в состав которого входят новые версии таких продуктов, как Visual Basic, Visual J++, Visual InterDev, Visual FoxPro и Visual C++. Этот обзор был опубликован только на CD-ROM, но я надеюсь, что у вас не возникло никаких проблем с его прочтением. В том же январском номере было опубликовано два обзора, посвященных новым продуктам — Visual Basic 6.0 и Visual FoxPro 6.0. Пора продолжить знакомство с другими продуктами, входящими в состав Microsoft Visual Studio 6.0. В этом номере мы рассмотрим Visual C++ 6.0, а затем (в следующих номерах) обратимся к новинкам, появившимся в Visual J++ и в Visual InterDev.
Что нового в Visual C++ 6.0
Появление очередной версии любого продукта, будь то пользовательский пакет или средство разработки, неизбежно вызывает один и тот же вопрос: «Что нового в данной версии?» Отвечая на этот вопрос, архитектор семейства продуктов Microsoft Visual C++ и менеджер группы разработчиков Син Ли (Sin Lew) подчеркивает, что из множества новинок, среди которых — новая версия MFC, новый пользовательский интерфейс, интеграция с Web, новые мастера для ATL, компоненты и т.п., следует в первую очередь выделить два наиболее важных — Edit and Continue debugging и поддержку технологии IntelliSense.
Функция Edit and Continue debugging позволяет модифировать отлаживаемый код непосредственно в отладчике. После модификации вы можете продолжать отладку без остановки и перекомпиляции.
Поддержка технологии IntelliSense обеспечивает вас информацией именно в том месте, где вы в ней нуждаетесь. Вы получаете список методов, классов, интерфейсов, возможность немедленного просмотра компонентов, параметров методов, автоматического завершения ввода ключевых слов.
Отметим, что реализация поддержки данной технологии (которая присутствует практически во всех продуктах Microsoft — от Office 97 до Visual Basic) является наиболее объемной частью нового проекта, так как Visual C++ использует большой объем информации — Win32 API, MFC, ATL, STL и т.п. В дополнение к этому обеспечивается информация о классах, методах и иерархии наследования. В целом поддержка технологии IntelliSense обеспечивает следующие возможности:
-
Complete word — автоматическое завершение ввода названия переменной или функции, как только будет получено достаточное для этого число символов.
-
Auto list members — выпадающий список переменных и функции для данного класса или структуры. Когда эта функция выполняется для пустой строки, вы получаете глобальный список методов и членов, включая функции API, классы C++ и переменные.
-
Auto parameter info — полный прототип, включая список параметров. Для перегруженных функций можно выбрать один из нескольких существующих прототипов.
-
Auto type info — полное объявление для любого идентификатора.
-
Code comments — отображаются комментарии в исходном коде для выбранной фунции. По умолчанию отображаются комментарии, заданные символами //, /* и */.
Говоря о средствах повышения производительности программистов, отметим следующие новинки, появившиеся в Visual C++ 6.0:
-
Динамическое обновление ClassView. Эта функция не требует перекомпиляции и базируется на технологии Dynamic Parsing, с помощью которой редактор всегда отображает актуальное состояние кода.
-
Список модулей — команда Modules в меню Debug позволяет получить список загруженных отлаживаемым приложением DLL. Таким образом, разработчики могут легче обнаруживать источники ошибок, так как теперь им известно, какой код загружен их приложением.
В состав Visual C++ 6.0 входит ряд новых мастеров, а также некоторые расширения функциональности уже существующих мастеров. К новым мастерам, появившимся в данной версии, относятся:
-
Cluster Resource Type Wizard — облегчает разработку приложений, которые управляются Microsoft Cluster Server. Данный мастер генерирует два проекта — один для создаваемых ресурсов, другой — для графического представления ресурсов в Cluster Administrator.
-
Extended Stored Procedure Wizard — создает Extended Stored Procedure для баз данных Microsoft SQL Server. Расширенные хранимые процедуры являются хранимыми процедурами SQL Server, которые вызываются как стандартные хранимые процедуры, но располагаемые на сервере в виде DLL. Таким образом, расширенные хранимые процедуры обладают производительностью скомпилированного кода и могут использовать функции системных API, включая Win32 API.
-
Utility Project Wizard — создает проекты типа Utility, которые по умолчанию либо не содержат файлов, либо не создают таковых. Этот мастер может использоваться для создания подпроектов или контейнеров для файлов, генерируемых на этапе компоновки.
Помимо создания новых мастеров расширена функциональность ряда уже существующих:
-
ATL COM AppWizard — теперь данный мастер содержит возможность создания компонентов с поддержкой Microsoft Transaction Server.
-
MFC AppWizard — один из наболее часто используемых в Visual C++ мастеров пополнился поддержкой следующих функций:
-
Отмена поддержки архитектуры Document/View Architecture — используется для приложений, не отвечающих стандартной парадигме. С помощью этой опции разработчики могут использовать все преимущества библиотеки MFC, не обременяя себя дополнительной функциональностью, увеличивающей размер приложения.
-
Создание приложений типа Windows Explorer — разработчики могут использовать эту опцию для создания приложений на базе двух панелей, схожих с Windows Explorer.
-
Поддержка компонентов типа Rebar — компонент типа Rebar представляет собой расширение инструментальной панели, используемое в Internet Explorer 4.0.
-
Новый класс для Dynamic HTML — теперь класс CHtmlView может быть выбран в качестве базового класса. Этот класс представляет собой оболочку вокруг Internet Explorer 4.0 и позволяет создавать MFC-приложения с интерфейсами на базе HTML или Dynamic HTML. Такие интерфейсы могут либо храниться отдельно от приложений, делая последние легко настраиваемыми, либо быть встроенными в сами приложения с помощью нового типа ресурса — HTML Resource.
-
Связь с данными через OLE DB — если в мастере задана поддержка баз данных, то теперь в качестве источника данных можно выбрать OLE DB. Это важное расширение для разработчиков, так как OLE DB позволяет обращаться к данным, хранимым в неструктурированном виде, например к данным почтового сервера Microsoft Exchange.
-
Создание Active Document Container — данная опция позволяет создавать MFC-приложения, которые могут выступать контейнерами активных документов.
Помимо этого в среде разработчика реализована поддержка работы с несколькими мониторами (требуется наличие Windows 98 или Windows NT 5.0). В этом случае вы можете отлаживать приложение на другом мониторе, вместо того чтобы постоянно переключаться с помощью клавиш Alt+Tab или изменения размера окон приложения и отладчика.
По многочисленным просьбам разработчиков упрощен доступ к записи макросов на Visual Basic Script — теперь для этого существует новая команда Record Quick Macro, с помощью которой можно записать последовательность действий и повторить ее командой Play Quick Macro.
Компилятор
Компилятор, являющийся основой Microsoft Visual C++ 6.0, также претерпел ряд изменений, о которых мы расскажем ниже.
Оптимизирующий компилятор всегда был одной из лучших составляющих Microsoft Visual C++, в версии 5.0 были включены мощные средства по сокращению объема создаваемого кода и увеличению скорости работы приложений. В версии 6.0 возможности компилятора расширились еще больше:
-
Более быстрая компиляция. За счет использования различных оптимизаций компилятор создает код на 30% быстрее для проектов с информацией для отладчика и на 15% — для обычных проектов.
-
Снижение объема кода. За счет использования новой библиотеки классов MFC 3.0 размер кода сокращается до 35% при применении статической компоновки (в среднем на 5–10% для программы), а благодаря тому что DLL стали меньшими по объему, сокращается время загрузки кода с динамической компоновкой.
-
Более быстрое выполнение откомпилированного кода. Использование ряда новых оптимизирующих ключевых слов создает более компактный и быстрый код, который может использовать опкоды Pentium и Pentium Pro, а также поддерживать инлайновые ассемблерные вставки, использующие эти опкоды.
-
Ряд новых предупреждений компилятора. Компилятор теперь выдает ряд новых предупреждений, указывающих на участки кода, где есть пустые выражения if, неверные или отсутствующие присваивания, неверные спецификации типов, повторные определения, ошибки при использовании шаблонов.
В компоновщике появилась новая опция — Delay Load Imports, с помощью которой Microsoft Visual C++ 6.0 может создавать код, автоматически управляющий загрузкой DLL, осуществляя ее только в случае необходимости.
Поддержка новых платформ и технологий
Для того чтобы разработчики, создающие приложения на Microsoft Visual C++ 6.0, могли использовать новейшие платформы и технологии, само средство разработки должно обеспечивать поддержку этих технологий. Наиболее важными среди них являются поддержка платформы Windows, возможность создания Internet-приложений и поддержка компонентной архитектуры COM.
Поддержка Windows, Internet и COM реализована в двух библиотеках классов, входящих в состав Visual C++: Microsoft Foundation Classes (MFC) и Active Template Library (ATL), которые составляют основу любого профессионального Windows-приложения.
Библиотека классов MFC представляет собой оболочку для создания приложений, иерархию классов, инкапсулирующих функциональность операционной системы. В состав новой версии MFC включена поддержка Internet на базе:
-
Common Controls — поддерживается возможность использования в приложениях таких компонентов Internet Explorer 4.0, как Extended Combo Box, Date Time Picker, IP Address Control, Month Calendar Control, Rebar Control.
-
Классы для WinInet — интерфейс Win32 Internet API позволяет использовать различные Internet-протоколы в создаваемых приложениях — реализовывать просмотр HTML-документов, передачу файлов по протоколу FTP, использовать компоненты ActiveX и выполнять поиск на Gopher-серверах.
-
ISAPI — мастер Internet Server API (ISAPI) Extension Wizard позволяет создавать расширения для Internet Information Server (IIS) — как серверные приложения, так и фильтры для отображения данных.
Технология Dynamic HTML стала одним из стандартов, позволившим по-новому взглянуть на использование Web. Microsoft Visual C++ 6.0 поддерживает объектную модель Document Object Model (DOM) через новый класс CHtmlView. Используя этот класс, MFC-приложения могут отображать HTML и Dynamic HTML. Как известно, Dynamic HTML обеспечивает приложения не только активным мультимедийным содержанием, но и такими функциями, как отображение данных, что позволяет клиентским приложениям обрабатывать и редактировать хранимые на сервере данные.
Говоря о поддержке работы с данными, следует сказать и о том, что эта область была расширена в новой версии MFC введением поддержки провайдеров OLE DB. Также в состав библиотеки классов был введен новый класс — COleDBRecordView, объединивший шаблоны для потребителей и провайдеров данных OLE DB.
Библиотека ATL (Active Template Library) — это набор основанных на шаблонах классов, которые облегчают создание COM-объектов. Обеспечивая поддержку COM, Microsoft Visual C++ 6.0 позволяет создавать различные типы объектов, серверов Automation и компонентов ActiveX. Специальный мастер — ATL Object Wizard — позволяет разработчикам быстро добавлять COM-объекты в свои приложения. Ниже перечислены расширения этого мастера, появившиеся в Microsoft Visual C++ 6.0.
-
Поставщики и потребители OLE DB. ATL Object Wizard существенно упрощает создание поставщиков и потребителей OLE DB, а также доступа к данным через COM-интерфейсы на базе OLE DB. Примечательно, что обычный код, необходимый для реализации OLE DB-провайдера, занимает порядка 6000 строк, тогда как при использовании мастера код занимает от 50 до 100 строк; весь остальной код генерируется автоматически.
-
Композитные компоненты. Существующие компоненты ActiveX и другие Windows-компоненты могут быть объединены в композитные ATL-компоненты. Таким образом, обеспечивается максимальный уровень повторного использования кода.
-
HTML-компоненты. Эти компоненты добавляют к ATL-проектам поддержку HTML/Dynamic HTML за счет использования компонента WebBrowser. Данный компонент позволяет использовать внутри ATL интерфейсы на базе Dynamic HTML. Кроме того, этот компонент управляет взаимодействием между кодом на С++ и HTML/Dynamic HTML.
-
«Облегченные» компоненты. Такие компоненты (это могут быть как композитные, так и HTML-компоненты) специально создаются для того, чтобы их можно было загружать из Internet. Они содержат только интерфейсы, необходимые для обеспечения их функционирования в Internet Explorer 4.0.
-
MMC-компоненты. Создаются все необходимые интерфейсы для реализации элементов для Microsoft Management Console.
Создание корпоративных приложений
Для создания корпоративных приложений, использующих архитектуру Windows Distributed interNet Applications (DNA), следует использовать Visual C++ 6.0 Enterprise Edition. В этом варианте в состав Visual C++ 6.0 интегрированы следующие средства:
-
Поддержка коллективной разработки. В состав Enterprise Edition входят средство контроля версий Microsoft Visual Source Safe 6.0, средство для совместной работы с компонентами и информацией о них Microsoft Repository 2.0 и средство для доступа к компонентам, хранимым в репозитарии, — Microsoft Visual Component Manager.
-
Средства для дизайна и анализа — Microsoft Visual Modeler для моделирования многозвенных приложений с использованием языка UML и генерацией кода на Visual Basic и Visual C++ и Visual Studio Analyzer для анализа создаваемых многозвенных приложений, взаимодействия компонентов, подсчета производительности и т.п.
-
BackOffice, Developer Edition — варианты для разработчиков различных серверов, входящих в семейство Microsoft BackOffice. Сюда входят: Microsoft SQL Server 6.5 Developer Edition, Microsoft SNA Server 4.0, Microsoft Message Queue Server 1.0 (MSMQ), Microsoft Transaction Server 2.0 (MTS), Microsoft Internet Information Server 4.0 (IIS).
Также в Visual C++ 6.0 Enterprise Edition реализована полная поддержка технологии Universal Data Access (см. КомпьютерПресс № 1’99). В состав Visual Studio входят OLE DB-провайдеры для Microsoft SQL Server, Microsoft Access, Microsoft FoxPro, Oracle, AS/400 VSAM, а также некоторые дополнительные драйверы. Как мы отмечали выше, с помощью Visual C++ можно создавать собственных потребителей и провайдеров OLE DB. Также есть поддержка ActiveX Data Objects на уровне объектной модели и большой набор компонентов, позволяющих использовать данные:
-
DataGrid — «решетка» для отображения данных.
-
DataCombo — комбинированный список для отображения данных.
-
DataList — список для отображения данных.
-
Hierarchical Flex Grid — «решетка», которая может содержать текстовую и графическую информацию и поддерживает функции сортировки, объединения и форматирования содержимого.
-
DateTime Picker — компонент для наглядного выбора даты и времени.
Для создания диалоговых панелей, связанных с ADO-данными, используется мастер ADO Data Bound Dialog Wizard, который создает необходимые файлы ресурсов, элементы, DDX-код для связи интерфейсных элементов с данными.
Помимо этого разработчики, работающие с Visual C++ 6.0, имеют доступ к средствам, входящим в состав Visual Studio Enterprise Edition, — Visual Database Tools (Data View, Query Designer, Database Designer, Stored Procedure Editor, Stored Procedure Debugger, Database Projects).
Заключение
Новая версия Visual C++ представляет собой мощное профессиональное средство для создания приложений, которое можно использовать как отдельно, так и в составе Visual Studio 6.0. Оно обеспечивает разработчиков улучшенной функциональностью среды, оптимизирующим компилятором, множеством расширений и дополнений, поддержкой новейших платформ, технологий и стандартов. При этом Visual C++ базируется на стандартной реализации языка C++ — стандарте ANSI/ISO. В новой версии были реализованы новейшие ключевые слова и типы, включая bool, explicit, false, mutable, true, typename, а также new и delete для массивов.
Для создания многозвенных приложений, работающих в архитектуре Windows DNA, предлагается версия Visual C++ 6.0 Enterprise Edition, которая позволяет использовать многочисленные средства, входящие в состав Visual Studio (см. КомпьютерПресс № 1’99) и обеспечивает коллективную работу над проектами и приложениями.
Для создания приложений, работающих под управлением операционной системы Windows CE, предлагаются два продукта:
-
Windows CE Toolkit for Visual C++;
-
Windows CE Embedded Toolkit for Visual C++.
Жизнь не стоит на месте, и в настоящее время Microsoft работает над новой версией компилятора, в которой будет реализована встроенная поддержка компонентной технологии COM+. Срок выхода данной версии — вторая половина 1999 года.
На CD-ROM в разделе «Средства разработки» вы найдете несколько мультимедийных презентаций, освещающих основные новинки, появившиеся в Visual C++ 6.0.
КомпьютерПресс 3'1999