Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций РСОИ.doc
Скачиваний:
25
Добавлен:
04.11.2018
Размер:
1.93 Mб
Скачать

Розділ 3. Проектування розподілених систем на платформі Microsoft .Net

3.1. Взаємодія Microsoft.NET та СОМ

Microsoft.NET — системне середовище для розроблення та виконання розподілених систем обробки інформації, заcноване на використанні компонентних об’єктів, які працюють під керівництвом операційної системи Windows.

Примітка. Детальний огляд принципів використання Microsoft.NET виходить за межі цього посібника. Вважається, що читаті знайомі з данною технологією.

Незважаючи на те, що між об’єктами .NET та СОМ існує суттєва різниця, виникає багато ситуацій, коли необхідно забезпечити їх взаємодію.

Платформа .NET підтримує такі види сумісності з успадкованим кодом (тобто таким, що створений раніше за допомогою інших технологій):

  • звертання з об’єктів .NET безпосередньо до системних (звернення до Win32 API) та користувацьких бібліотек DLL, що створені на С;

  • здійсненя викликів з об’єктів .NET до об’єктів СОМ;

  • здійснення викликів з об’єктів СОМ до об’єктів .NET.

Із перелічених можливостей для розроблення розподілених систем доцільно докладно розглянути останні дві. Розгляд здійснено з використанням мови програмування C#.

При використанні можливостей .NET для взаємодії з успадкованим кодом ми будемо явно або опосередковано працювати з типами, визначеними у просторі імен System.Runtime.InteropServices. Найважливіші типи цього простору імен подані в таблиці 3.1.

Усі перераховані в таблиці 3.1 типи — це атрибути, які використовуються для керуванням процесами передавання даних від об'єктів .NET об’єктум СОМ (і навпаки). Звичайно, в просторі імен System.Runtime.InteropServices визначене також безліч інтерфейсів, перерахувань і структур. Але ми розглядатимемо їх не списком, а в міру опису їх застосування.

Таблиця 3.1

Деякі типи простору імен System.Runtime.InteropServices

Тип

Опис

1

2

ClassInterfaceAttribute

Використовується для керування способом надання об'єктом .NET своїх відкритих членів клієнтам СОМ

ComRegisterFunctionAttribute

ComUnregisterFunctionAttribute

Визначають виклик методу при реєстрації (або видаленні реєстрації) збірки .NET для використання в середовищі СОМ. Можуть бути пов'язані з призначеними для користувача методами

Таблиця 3.1 (закінчення)

1

2

ComSourceInterfacesAttribute

Визначає список інтерфейсів, які є джерелами подій для класу

DispIdAttribute

Призначений для користувача атрибут, що визначає DISPID (диспетчерський ідентифікатор технології СОМ) методу,

відкритої змінної або властивості

DllImportAttribute

Використовується PInvoke (Platform Invocation Services — службами активізації платформ при роботі з DLL)

GuidAttribute

Використовується для визначення GUID для класу, інтерфейсу або бібліотеки типів

IDispatchImplAttribute

Визначає, яку реалізацію IDispatch має використовувати середовище CLR при виявленні подвійних інтерфейсів

InterfaceTypeAttribute

Визначає, як саме інтерфейс .NET буде відкритий для клієнтів СОМ (як похідний від IDispatch чи похідний від IUnknown)

OutAttributeInAttribute

Використовується для параметра або поля. Визначає, в якому напрямку мають бути передані дані — від того, що викликається, до того, що викликає, або від того, що викликає, до того, що викликається

ProgIdAttribute

Призначений для користувача атрибут, який дозволяє задавати PROGID для обєкту .NET