ВУЗ:
Составители:
Рубрика:
5
3. Удаленный сервер (Remote Server). Работает на другом компьютере сети .
Как видим, основной задачей COM является создание многократно используе-
мого кода, доступного в сетевой среде из программ, написанных на различных
языках программирования. При этом очень важно обеспечить уникальность в
именовании компонентных классов , интерфейсов и других объектов COM. Для
этой цели они снабжаются 128-разрядным глобальным уникальным идентифи-
катором (GUID), алгоритм формирования которого гарантирует крайне низкую
вероятность повторения значений. GUID можно получить с помощью функции
API CoCreateGuid() или в среде Delphi, нажав комбинацию клавиш
Ctrl+Shift+G. Идентификатор GUID для классов называется CLSID, для ин-
терфейсов - IID.
1.2. Интерфейсы
В основе COM лежит понятие интерфейса . Интерфейс - это совокупность ме-
тодов класса , задающая соглашение между разработчиком и пользователем
класса о формальных правилах их использования.
Свойства интерфейса :
1. В интерфейс входят только объявления методов и их параметров . Поля в
интерфейсе не описываются, также как и реализация методов .
2. Порядок методов в интерфейсе существенен, а их названия – нет.
3. Интерфейс никогда не меняется разработчиком. При необходимости моди-
фикации создается новый интерфейс.
4. У каждого объекта COM может быть множество интерфейсов .
5. Интерфейсы снабжаются уникальным идентификатором IID, аналогичным
GUID.
6. Интерфейсы могут наследоваться и образовывать иерархию.
7. Все интерфейсы имеют общего предка – интерфейс IUnknown. Описание
его, приведенное в модуле system.pas, имеет вид
type
IUnknown = interface
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj):
HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
Здесь в квадратных скобках записывается строковое представление идентифи-
катора IID. В целом описание интерфейса аналогично описанию класса , только
используется другое служебное слово – interface. Если интерфейс наследу-
ет методы предка , то имя интерфейса - предка указывается в круглых скобках
после слова interface.
Рассмотрим назначение методов IUnknown. Последние два метода предназна-
чены для реализации механизма автоматического подсчета ссылок.
5 3. У д аленны й сервер(Remote Server). Работаетна д ругом компью тересети . К акв и д и м, основ ной з ад ачей COM яв ляется соз д ани е многократно и спольз уе- мого код а, д оступного в сетев ой сред е и з программ, напи санны х на раз ли чны х яз ы ках программи ров ани я. При этом очень в аж но обеспечи ть уни кальность в и менов ани и компонентны х классов , и нтерфей сов и д руги х объектов COM. Д ля этой цели они снабж аю тся 128-раз ряд ны м глобальны м уни кальны м и д енти фи - катором (GUID), алгори тм форми ров ани я которого гаранти руеткрай нени з кую в ероятность пов торени я з начени й . GUID мож но получи ть спомощ ью функци и API CoCreateGuid() и ли в сред е Delphi, наж ав комби наци ю клав и ш Ctrl+Shift+G. И д енти фи каторGUID д ляклассов наз ы в аетсяCLSID, д ляи н- терфей сов - IID. 1.2. И нт е рф е йсы В основ е COM леж и т поняти е и нтерфей са. И нтерфей с - это сов окупность ме- тод ов класса, з ад аю щ ая соглаш ени е меж д у раз работчи ком и польз ов ателем класса о формальны х прав и лах и х и спольз ов ани я. Св ой ств а и нтерфей са: 1. В и нтерфей с в ход ят только объяв лени я метод ов и и х параметров . Поля в и нтерфей сенеопи сы в аю тся, такж екаки реали з аци яметод ов . 2. Поряд окметод ов в и нтерфей сесущ еств енен, а и х наз в ани я–нет. 3. И нтерфей с ни когд а не меняется раз работчи ком. При необход и мости мод и - фи каци и соз д аетсянов ы й и нтерфей с. 4. У каж д ого объекта COM мож етбы ть множ еств о и нтерфей сов . 5. И нтерфей сы снабж аю тся уни кальны м и д енти фи катором IID, аналоги чны м GUID. 6. И нтерфей сы могутнаслед ов атьсяи образ ов ы в ать и ерархи ю . 7. В сеи нтерфей сы и мею тобщ его пред ка –и нтерфей сIUnknown. О пи сани е его, при в ед енноев мод улеsystem.pas, и меетв и д type IUnknown = interface ['{00000000-0000-0000-C000-000000000046}'] function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; function _AddRef: Integer; stdcall; function _Release: Integer; stdcall; end; Зд есь в кв ад ратны х скобках з апи сы в ается строков ое пред став лени е и д енти фи - катора IID. В целом опи сани еи нтерфей са аналоги чно опи сани ю класса, только и спольз уется д ругое служ ебное слов о – interface. Е сли и нтерфей снаслед у- ет метод ы пред ка, то и мя и нтерфей са-пред ка указ ы в ается в круглы х скобках послеслов а interface. Рассмотри м наз начени е метод ов IUnknown. Послед ни е д в а метод а пред наз на- чены д ляреали з аци и механи з ма ав томати ческого под счета ссы лок.
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »