Без темы
<<  CityCom CompactMaster 100  >>
COM в visual foxpro® 6.0 (основные понятия)
COM в visual foxpro® 6.0 (основные понятия)
Отличия модульного программирование и с использованием классов
Отличия модульного программирование и с использованием классов
Проблемы традиционного программирования
Проблемы традиционного программирования
Что такое COM (Component Object Model)
Что такое COM (Component Object Model)
Интерфейсы COM
Интерфейсы COM
Интерфейсы COM
Интерфейсы COM
Интерфейс IDispach
Интерфейс IDispach
Ole-серверы
Ole-серверы
Ole-серверы (ряд функций)
Ole-серверы (ряд функций)
Ole-серверы (ряд функций)
Ole-серверы (ряд функций)
Ole-серверы (взаимодействие через сеть)
Ole-серверы (взаимодействие через сеть)
Microsoft® Windows® Distributed interNet Applications Architecture
Microsoft® Windows® Distributed interNet Applications Architecture
COM в visual foxpro® 6.0 (основные понятия)
COM в visual foxpro® 6.0 (основные понятия)
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель
Объектная модель

Презентация на тему: «COM в visual foxpro® 6.0 (основные понятия)». Автор: Михаил Дроздов. Файл: «COM в visual foxpro® 6.0 (основные понятия).ppt». Размер zip-архива: 362 КБ.

COM в visual foxpro® 6.0 (основные понятия)

содержание презентации «COM в visual foxpro® 6.0 (основные понятия).ppt»
СлайдТекст
1 COM в visual foxpro® 6.0 (основные понятия)

COM в visual foxpro® 6.0 (основные понятия)

Дроздов Михаил Компания «ИВС Софт» My Page: http://vfpdmur.narod.ru/ ICS Page: http://ics.perm.ru/ mailto:Drozdov@ics.perm.su

2 Отличия модульного программирование и с использованием классов

Отличия модульного программирование и с использованием классов

- Использование PUBLIC-переменных для передачи значений между классами приводит к потери контроля над их значениями + Взаимодействие между классами определяется открытым интерфейсом классов. Наследование позволяет исключить дублирование кода, а инкапсуляция - защитить данные. - Компоновка на этапе LINK в монолитное (более не изменяемое) приложение. (+ VFP позволяет осуществлять динамическое создание экземпляров классов из библиотек на этапе выполнения)

- Использование PUBLIC-переменных для передачи значений между процедурами приводит к потери контроля над их значениями - Возможность взаимодействовать с внешней средой данных, только через значения, явно указанного и фиксированного на этапе разработки списка параметров - Компоновка на этапе LINK в монолитное (более не изменяемое) приложение

DEFINE CLASS myclass AS custom PROTECTED pot_prop pot_prop = 'value protected property' pub_prop = 'value public property' name = "myclass" version = '1.0' FUNCTION pubmethod(param1[,...Paramn]) … использование: свойств и методов класса return retvar endfuc enddefine

PUBLIC pvat1[,…,pvatn] PROCEDURE modul_name1( param1 [, …, paramn]) { LOCAL var1[,…, varn] … использование: param1 [, …, paramn] pvat1[,…,pvatn] CALL modul_namei(var1[,…,varn]) RERURN retvar }

3 Проблемы традиционного программирования

Проблемы традиционного программирования

Библиотека модулей

Библиотека классов

Модуль

Класс

Модуль

Производный класс

Модуль

Класс

Приложение

Приложение

Модуль

Экземпляр класса

Модуль

Экземпляр класса

Модуль

Экземпляр класса

Монолитное (необходимо «целиком» переделывать всё приложения после изменений) Жёстко зависит от языка программирования (практически отсутствует возможность использования различных языков в одном приложении)

4 Что такое COM (Component Object Model)

Что такое COM (Component Object Model)

Технология спецификация или стандарт создания программного обеспечения, позволяющая: использовать возможности любых языков программирования в рамках одного приложения (конечно, речь идёт об языках, способных создавать COM-компоненты) исполнять COM-компонент на множестве платформ: Microsoft® Windows®, Microsoft Windows NT™, Apple® Macintosh®, UNIX® изменять любой компонент не нарушая работы всего приложения, т.е. позволяет развивать возможности ПО компоненты COM являются прозрачно перемещаемы, следовательно позволяют оптимально распределить ПО согласно мощностям парка машин в Вашей организации

Краткая история COM: первоначальной целью было поддержка концепции связывания и внедрения (object linking and embedding) объектов, обеспечивающей существование различных документов в одном. Реализация этой концепции известна под названием OLE Первая версия для связи между клиентом и компонентов использовала аппарат известный под названием динамический обмен данными (dynamic data exchange - DDE). В то время COM не существовало и DDE был построен на основе передачи сообщений OS Windows, а версия OLE в основу которой был положен механизм DDE - OLE1. Позже был изобретён COM и следующая версия OLE (OLE2) была переписана на основе COM. Ещё позже она называлась просто OLE, теперь это называют ActiveX

5 Интерфейсы COM

Интерфейсы COM

Интерфейс класса (или компонента) - это некоторое множество свойств и методов, доступных из-вне этого класса. На низком уровне - это определённая структура памяти, содержащая массив указателей на функции класса. Основу COM составляет соглашения о межкомпонентном интерфейсе, т.е. некоторое множество внутренних свойств и методов, присущих всем COM компонентам, используя который можно получать информацию о прикладных методах и свойствах компонента. Нужно иметь ввиду, что компонент это не класс: компонент может быть реализован как используя несколько классов, так и вообще без класса, лишь бы он удовлетворял спецификациям COM в настоящей реализации отсутствует наследование (это предполагается осуществить в версии COM+) однажды созданные (опубликованные) интерфейсы COM-компонента не изменяются. (нарушение этого привело бы к несовместимости версий компонентов) Интерфейс COM, через который запрашиваются другие интерфейсы компонента называется Iunknown и он содержит в себе всего три метода: QueryInterface, AddRef, и Release Interface IUnknown { virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv)= 0; virtual ULONG __stdcall AddRef() = 0; virtual ULONG __stdcall Release() = 0; }

6 Интерфейсы COM

Интерфейсы COM

Для получения ссылки на интерфейс Iunknown используют функцию: STDAPI CoCreateInstance( REFCLSID rclsid, // ссылка на идентификатор (CLSID) объекта LPUNKNOWN pUnkOuter, // ссылка на Iunknown агрегирующего объекта, иначе NULL DWORD dwClsContext, // определяет контекст создаваемого объекта REFIID riid, // ссылка на идент. интерфейса, который тр. получить LPVOID * ppv // адрес для возвращаемой ссылки на интерфейс тр. интерфейс ) Функция CoCreateInstanceEx позволяет получать интерфейсы удалённых серверов

Для облегчения работы с ком сервером создан интерфейс «фабрики классов» Interface IClassFactory : IUnknown { HRESULT CreateInstance( IUnknown * pUnkOuter, //Pointer to whether object is or isn't part of an aggregate REFIID riid, //Reference to the identifier of the interface void ** ppvObject //Address of output variable that receives the interface pointer requested in riid ); HRESULT LockServer(BOOL fLock ); //Increments or decrements the lock count } Для «работы» с библиотекой типов (TypeLib) (которая и содержит описание интерфейса COM-компоненты) имеется интерфейс ITypelib

Interface ITypeLib : IUnknown { FindName(); GetDocumentation(); GetLibAttr(); GetTypeComp(); GetTypeInfo(); GetTypeInfoCount(); GetTypeInfoOfGuid(); GetTypeInfoType(); IsName(); ReleaseTLibAttr(); }

7 Интерфейс IDispach

Интерфейс IDispach

OLE automation создано для языков, не имеющих механизмов работы со ссылками (visual basic, visual foxpro, и т.Д.) И основывается на интерфейсе idispatch

MIDL_INTERFACE("00020400-0000-0000-C000-000000000046") IDispatch : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount( /* [out] */ UINT __RPC_FAR *pctinfo) = 0; virtual HRESULT STDMETHODCALLTYPE GetTypeInfo( /* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0; virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames( /* [in] */ REFIID riid, /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames, /* [in] */ UINT cNames, /* [in] */ LCID lcid, /* [size_is][out] */ DISPID __RPC_FAR *rgDispId) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke( /* [in] */ DISPID dispIdMember, /* [in] */ REFIID riid, /* [in] */ LCID lcid, /* [in] */ WORD wFlags, /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams, /* [out] */ VARIANT __RPC_FAR *pVarResult, /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo, /* [out] */ UINT __RPC_FAR *puArgErr) = 0; };

8 Ole-серверы

Ole-серверы

OLE-серверы в зависимости от памяти, в которой они выполняются, бывают двух типов: вне процесса клиента (Out-of-process) исполняемые файлы с расширением EXE обычно могут быть выполнены не только в 32-разрядной, но и в 16- разрядной OS кроме того они могут содержать визуальный интерфейс для пользователя. в процессе клиентского приложения (In-process) файлы с расширением DLL только под 32-разрядной OS не могут содержать визуальный интерфейс для пользователя и не может быть внешним (удалённым сервером). Для создания OLE-компонента достаточно добавить при описании класса (DEFINE CLASS) опцию OLEPUBLIC (в диалоге Class info в редакторе классов), это позволит, в зависимости от опции Win32 executable / COM server (exe) Single-threaded COM server (dll) - каждое приложение-клиент использует свою копию сервера Multi-threaded COM server (dll) - несколько приложений может использовать одну копию сервера VFP создать и зарегистрировать OLE-компоненту, при этом, помимо EXE/DLL будет созданы файлы с расширениями VBR и TLB, обеспечивающие регистрацию компоненты в системном реестре и описание интерфейсов Вашей компоненты. После первого создания Вашей компоненты будет доступна информация на вкладке Server в диалоге Project Info.

9 Ole-серверы (ряд функций)

Ole-серверы (ряд функций)

CreateObject(ClassName [, eParameter1, eParameter2, ...]) - создаёт экземпляр объекта CreateObjectEx(cCLSID | cPROGID, cComputerName) - создаёт экземпляр объекта удалённого компьютера SYS(2335 [, 0 | 1]) - включает/отключает режим допустимости модальных диалогов в COM-exe сервере (без второго параметра возвращает режим: 0-недопустимо 1-допустимо) Для COM-dll серверов всегда недопустимо, т.е. вызывает ошибку команда WAIT или MESSAGEBOX( ) сообщения об ошибках диалог открытия файлов ввод пароля на соединение с внешним источником данных через ODBC SET OLEOBJECT включает/отключает режим поиска в системном реестре. Компоненты, помещённый в различных построителях отыскиваются безотносительно к этому режиму. VFP является Automation Server-ом и клиенту доступны методы и свойства объекта Application Объект Project имеет коллекцию Servers объектов Server позволяющий получить всю необходимую информацию о создаваемом в VFP COM-компоненте

10 Ole-серверы (ряд функций)

Ole-серверы (ряд функций)

Comclassinfo(oobject [, ninfotype]) пример: 1 - excel.Application.8 2- excel.Application microsoft excel 97 application {00024500-0000-0000-C000-000000000046} commarray(oobject [, nnewvalue]) 0 - первый индекс 0 и передача по значению 1 - первый индекс 1 и передача по значению 10 - первый индекс 0 и передача по ссылке 11 - первый индекс 1 и передача по ссылке remote auto connection manager - позволяет выполнить регистрацию com-компонент для выполнения «удалённых по сети» компонент automation manager - обеспечивает «сетевое взаимодействие» компонент.

11 Ole-серверы (взаимодействие через сеть)

Ole-серверы (взаимодействие через сеть)

Ole-компонента на клиенте

Ole-компонента на сервере

Сетевой OLE-посредник Proxy

Сетевой OLE-посредник Proxy

Адресное пространство клиента

Адресное пространство сервера

Oleout32.DLL automation manager - обеспечивает связь с сервером

Autprx32.DLL automation manager - обеспечивает связь с клиентом

12 Microsoft® Windows® Distributed interNet Applications Architecture

Microsoft® Windows® Distributed interNet Applications Architecture

(Windows DNA)

Client’s Applications - COM component’s (MTS) - SQL Database

13 COM в visual foxpro® 6.0 (основные понятия)
14 Объектная модель

Объектная модель

Excel 2000

1(4)

Microsoft excel 2000 в MSDN oct99 …/office/excel9.Olb VBAXL9.Chm

15 Объектная модель

Объектная модель

Excel 2000

2(4)

16 Объектная модель

Объектная модель

Excel 2000

3(4)

17 Объектная модель

Объектная модель

Excel 2000

4(4)

18 Объектная модель

Объектная модель

Word 2000

1(7)

Microsoft word 2000 в MSDN oct99 …/office/msword9.Olb VBAWRD9.Chm

19 Объектная модель

Объектная модель

Word 2000

2(7)

20 Объектная модель

Объектная модель

Word 2000

3(7)

21 Объектная модель

Объектная модель

Word 2000

4(7)

22 Объектная модель

Объектная модель

Word 2000

5(7)

23 Объектная модель

Объектная модель

Word 2000

6(7)

24 Объектная модель

Объектная модель

Word 2000

7(7)

25 Объектная модель

Объектная модель

Outlook 2000

1(2)

Microsoft outlook 2000 в MSDN oct99 …/office/msoutl9.Olb VBAOUTL9.Chm

26 Объектная модель

Объектная модель

Outlook 2000

2(2)

«COM в visual foxpro® 6.0 (основные понятия)»
http://900igr.net/prezentacija/informatika/com-v-visual-foxpro-6.0-osnovnye-ponjatija-186761.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Без темы > COM в visual foxpro® 6.0 (основные понятия)