Образец QStat: создание оболочки для COM-объекта, чтобы предоставить доступ к бизнес-логике
Обновлен: Ноябрь 2007
В образце QStat показано, как создать библиотеку DLL, которая служит оболочкой для доступа к COM-объекту и делает его функции доступными для клиентов .NET Framework, использующих С++.
Примечание о безопасности. |
---|
Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению. |
Чтобы получить образцы и инструкции по их установке, выполните следующие действия.
В меню Справка среды Visual Studio выберите пункт Примеры.
Дополнительные сведения см. в разделе Поиск файлов примеров.
Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.
Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.
Построение и запуск образца
Построение образца
В интегрированной среде разработки Visual Studio загрузите файл решения QStat.sln.
В обозревателе решений щелкните правой кнопкой мыши решение QStat.
В контекстном меню выберите команду Построить решение.
Запуск образца
В обозревателе решений щелкните правой кнопкой мыши проект netClient.
В меню Отладка выберите команду Пуск.
После запуска клиентов на консоль выводится ряд сообщений, которые извещают о вызовах бизнес-логики.
Примечание. |
---|
Чтобы получить дополнительные сведения о взаимодействии компонентов, запустите пошаговое выполнение кода путем размещения точек останова или с помощью меню Отладка, которое позволяет выполнять шаги с заходом и шаги с обходом образца кода. |
Описание проекта
Главной задачей образца является доступ к бизнес-логике из клиентов COM и .NET Framework. В образце не рассматривается реализация бизнес-логики, поэтому используемая бизнес-логика не представляет существенного интереса. Фактически, в этом случае бизнес-логика выполняет простые арифметические действия (вычисление среднего геометрического, среднего гармонического и среднего квадратичного), возвращая результат клиенту.
В общем случае рекомендуется отделять бизнес-логику от служебных элементов, обеспечивающих к ней доступ (в данном случае — COM-объекты). Однако в этом образце предполагается, что бизнес-логика реализована непосредственно в COM-объекте, который будет обрабатываться, и доступ к базовой бизнес-логике можно получить только через этот COM-объект.
Образец создает библиотеку-оболочку, которая получает COM-объект через директиву #import и делает класс .NET Framework доступным для обработки в клиентах .NET Framework. Это выполняется путем объявления собственного класса C++ nativeMeanCalc, который содержит элемент данных интеллектуального указателя COM, который добавлен в проект директивой #import. Определяется класс .NET Framework, который содержит указатель на собственный класс C++. Класс .NET Framework netMeanCalc содержит указатель на объект nativeMeanCalc, который завершает путь к COM-объекту назначения. Класс netMeanCalc является открытым классом, который будет обрабатываться клиентами .NET Framework.
В решение входят два клиентских проекта:
nativeClient является клиентом COM и реализуется в собственном коде C++;
netClient написан с использованием нового синтаксиса для C++.
Классы и ключевые слова
В этом образце показаны следующие ключевые слова:
__gc; #using; #import; try; catch; _com_error; Console::WriteLine