Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lp_IPOVS_TP.doc
Скачиваний:
236
Добавлен:
13.08.2019
Размер:
2.88 Mб
Скачать

7. Распределенная сом

Хотя СОМ с самого начала разрабатывалась с учетом поддержки распределенных систем, ее первоначальная реализация могла работать только на одном компьютере. Объекты СОМ могли быть реализованы в DLL или в отдельном процессе, исполняемом на той же машине, что и их клиент, но не могли располагаться на других машинах в вычислительной сети. Эта ситуация изменилась с появлением распределенной СОМ (Distributed СОМ - DCOM). Теперь объекты СОМ могут предоставлять свои сервисы и клиентам на других машинах.

Для достижения этого DCOM использует вызов удаленной процедуры (RPC). При использовании RPC клиент выполняет нечто похожее на локальный вызов компонента, но на самом деле вызов обрабатывается компонентом на другой машине сети. В DCOM также включена поддержка средств контроля доступа (контроль за тем, какими клиентами может использоваться данный объект), а также возможность указания, на какой машине должен быть создан объект. Сервисы DCOM можно использовать для создания защищенных распределенных приложений СОМ.

Разработку OLE-контейнеров и серверов проще всего вести в среде VisualC++ при помощи специальных мастеров (например, AppWizard), а также библиотеки MFC.

Порядок выполнения работы:

  1. Создать приложение Cnt для этого:

  • чтобы приступить к созданию нового проекта, выберите в окне компилятора MicrosoftVisualC++ в меню File команду New;

  • в окне New выберите элемент MFC AppWizard(exe), в результате чего будет запущен мастер приложений, работа с которым осуществляется в шесть этапов:

    1. . В первом окне установите опцию Singledocument.

    2. . Во втором окне не задавайте поддержку баз данных.

    3. . В третьем окне установите опцию Container, указывающую на то, что приложение будет OLE-контейнером. В этом же окне следует включить поддержку элементов управления ActiveX.

    4. . В следующем, четвертом, окне необходимо оставить все опции, заданные по умолчанию.

    5. . В пятом окне установите опцию MFC Standard, опцию включения комментариев в программу и опцию статической компоновки библиотеки MFC.

    6. . Наконец, в шестом окне, просмотрите список классов, которые будут созданы автоматически, и щелкните на кнопке Finish.

  • мастер приложений отобразит окно с отчетом о сделанных установках. Если все правильно, щелкните на кнопке ОК, с тем, чтобы запустить процесс генерации кода нового приложения;

  • осталось только построить исполняемый файл приложения, выбрав для этого в меню Build команду Rebuild All. В результате в папку DEBUG будет добавлен файл СМТ.ЕХЕ.

  1. Проанализировать программный код.

Приложение включает пять основных исходных файлов, сгенерированных мастером AppWizard: CNT.CPP, MAINFRM.CPP, CNTDOC.CPP, CNTVIEW.CPP и CNTRITEM.CPP. Листинги файлов приведены в приложении 2

  1. Внести, где это требуется, изменения.

  2. Отладить программы.

  3. Проверить работоспособность контейнера, для этого:

  • запустите приложение Cnt (рисунок 1);

  • выберите в меню Edit команду InsertNewObject..., в результате чего откроется стандартное диалоговое окно вставки объекта.

  • в этом окне выделите элемент, соответствующий электронной таблице Excel (рисунок 2);

  1. Оценить результат (рисунок 3).

  2. Создать приложение по выбору преподавателя.

  3. Сдать и защитить работу.

Рис. 1. Окно приложения Cnt

Рис. 2. Выбор внедряемого объекта

Рис. 3. Внедрение электронной таблицы Excel в приложение Cnt

Защита отчета по лабораторной работе:

Отчет по лабораторной работе должен включать в себя:

  1. Листинги программ.

  2. Результаты работы.

Защита отчета по лабораторной работе заключается в предъявлении преподавателю полученных результатов (на экране монитора), демонстрации полученных навыков и ответах на вопросы преподавателя.

Контрольные вопросы:

  1. Технологии OLE, COM и ActiveX.

  2. Преимущества и недостатки OLE.

  3. Преимущества и недостатки COM.

  4. Развитие от OLE до ActiveX .

  5. VisualC++ и OLE.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]