Интеграция на приложения
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

Интеграция на приложения PowerPoint PPT Presentation


  • 95 Views
  • Uploaded on
  • Presentation posted in: General

Интеграция на приложения. доц. д-р Станимир Стоянов ПУ “ Паисий Хилендарски ” , Катедра “ Компютърни систми ”. Модул “CORBA”. 12. Object Interface. Съдържание. Въведение Символно представяне на референции Управление на референциите на обектите ORB. Въведение.

Download Presentation

Интеграция на приложения

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4591729

Интеграция на приложения

доц. д-р Станимир Стоянов

ПУ “Паисий Хилендарски”, Катедра “Компютърни систми”

Станимир Стоянов


Corba

Модул “CORBA”

Станимир Стоянов


12 object interface

12. Object Interface

Станимир Стоянов


4591729

Съдържание

  • Въведение

  • Символно представяне на референции

  • Управление на референциите на обектите ORB

Станимир Стоянов


4591729

Въведение

Станимир Стоянов


4591729

Интерфейсът ORB и Object – директно достъпен от клиентите и реализацията на обектитеПричини за това:- Възможност за представяне на обектните референции като символни низове- Трансформацията им във вътрешно представяне- Копиране и изтриване на референции- Сравняване на референции

Станимир Стоянов


4591729

Интерфейсът Object дефинира някои операции, които се извършват с референциите.Той се наследява от всеки обект, но не се реализира – операциите се извършват от ORB.В езика на CORBA тези операции са реализирани посредством псевдо-обект – не от актуален CORBA обект.

Станимир Стоянов


4591729

Интерфейсите на псевдо-обектите са дефинирани в OMG IDL, но съществуват някои разлики:

  • Един псевдо-обект не може да се специфицира като параметър в операция на нормален обект;

  • Не може да бъде достъпен чрез DII

  • Няма дефиниции в IR.

    IDL, който се използва за тези обекти се нарича псевдо-IDL (PIDL).

Станимир Стоянов


4591729

Символно представяне на референции

Станимир Стоянов


4591729

Референциите на обектите:

  • Вътрешни представяния, непрозрачни за външния свят

  • За да могат да бъдат персистентно съхранявани те трябва да бъдат представени в символен формат

  • В символен формат могат да бъдат предавани посредством e-mail, Web сайтове, като аргументи на операции.

Станимир Стоянов


4591729

module CORBA { //PIDLinterface ORB {string object_to_string(in Object obj);Object string_to_object(in string obj); };};

Станимир Стоянов


4591729

Управление на референциите на обектите

Станимир Стоянов


4591729

CORBA::Object - основен интерфейс за всички CORBA обекти:

  • Операциите могат да се извикат за всяка обектна референция

  • В повечето случаи функционалността е реализирана в стандартни библиотеки, които се доставят от ORB.

Станимир Стоянов


4591729

module CORBA { interface Object { //PIDLinterfaceDef get_interface ();boolean is_nil ();Object duplicate ();void release ();boolean is_a (in string logical_type_id);boolean non_existent ();boolean is_equivelent (in Object other_object);unsigned long hash (in unsigned long maximum); Policy get_policy (in Policy Type policy_type); Object set_policy_overrides (in PolicyList policies, in SetOverrideTyp set_add); DomainManagersList get_domain_managers (); void create_request (…) // by the DII};};

Станимир Стоянов


4591729

Операция get_interface – връща стандартен интерфейс от IR. Така можем да анализираме дефиницията на интерфейса за съдържащите се операции в run-time.Можем да използваме DII за извикване на тези операции.

Станимир Стоянов


4591729

Duplicateи release:

  • Многосъществени за езици с явно управление на паметта (C,C++) – Java е с неявно автоматично управление

  • Осигуряват коректно управление на копията на обектните референции

  • Когато една референция трябва да се предаде към друг обект или контролна нишка, вътрешния тип, реализиращ референцията, не трябва да се копира с помощта на средствата на езика за реализация– трябва да се използва операцията duplicate()

Станимир Стоянов


4591729

Причините за това:

  • Когато един отдалечен клиент използва една референция – локално се създава един обект-пълномощник (proxy object), който извиква директно съответната операция

  • Прокси обектът (в съгласие с ORB) създава заявката, която отива при реализацията на обекта

  • Проксито поддържа брояч за всички референции, които се отнасят за него – нарича се reference count

Станимир Стоянов


4591729

  • Ако едно копие на референцията се направи без знанието на проксито, тогава броячът не се увеличава

  • Когато се освобождават референциите проксито не знае за съществуването на “нелегалната” реферeнция – тогава освобождава използваните ресурси и се изтрива от системата (ако се опитаме да осъществим достъп до нелегалната референция системата връща run-time error)

  • Ситуацията на Фиг.6.1.

Станимир Стоянов


4591729

Client

Server

OR1

:=

Copy(OR)

ProxyObject

TargetObject

TargetObject

1

2

1

Invalid Object Reference

OR1

CORBA::release()

Грешно копиране на референции

Станимир Стоянов


4591729

  • Когато duplicate() се извиква за получаване на ново копие на референция – проксито ще увеличи брояча и ще чака референциите да извикат release() преди да освободи ресурси и да завърши работата си

  • Ако последната референция към проксито се изтрие без извикване на release() – проксито продължава да резервира излишни ресурси

  • Ситуация Фиг.6.2.

Станимир Стоянов


4591729

Client

Server

OR

ProxyObject

TargetObject

ProxyObject

TargetObject

1

2

1

2

delete(OR)

x

Грешно изтриване на референции

Станимир Стоянов


4591729

  • Коректното използване на duplicate() и release() – Фиг.6.3.

  • Броячът в проксито отговаря на актуалния брой референции към проксито

Станимир Стоянов


4591729

Client

Server

OR1

:=

OR.duplicate()

ProxyObject

TargetObject

TargetObject

ProxyObject

2

2

2

1

OR1

CORBA::release(OR)

x

Коректно използване на операциите.

Станимир Стоянов


4591729

  • Какво става когато референциите се копират (с duplicate()) за предаване през границите на машините – Фиг.6.4, Фиг.6.5

  • Не е показано междинното увеличаване на брояча на проксито B преди кода на skeleton да извърши release() когато предава реферанцията обратно към клиента

Станимир Стоянов


4591729

Server

Target Object B

1

Създаване на прокси при предаване на референции

Client

Proxy Object A

OR=PR1.op1()

OR

1

Target Object A

Op1{ …

return OR2.duplicate());

}

Proxy Object B

OR2

1

1

Client/Server

Станимир Стоянов


4591729

Server

Proxy Object A

Proxy Object B

Target Object B

1

1

1

Създаване на прокси при предаване на референции

OR1

OR

Client

Target Object A

Op1{ …

return OR2.duplicate());

}

Proxy Object B

OR2

1

1

Client/Server

Станимир Стоянов


4591729

  • is_nil – проверява една референция дали означава OBJECT_NIL т.е. няма обект

  • is_a – връща TRUE ако IR идентификаторът, предаден към нея, реферира един тип, който е този обект е подтип

  • non_existent – проверява дали съществува инстанция на един обект (на референция). Ако не съществува тогава възниква OBJECT_NOT_EXIST изключение.

  • hash – използва се за търсене на идентични референции, които са по-ефективни от актуалната.

  • is_equivalent – проверява дали две референции са еквивалентни т.е. сочат към една и съща инстанция.

  • create_request – операцията се използва за стартиране процеса за създаване на заявки към реализации на обекти при DII.

Станимир Стоянов


4591729

Последните три операции са свързани с управление на така наречените “политики”, които управляват жизнения цикъл и поведението на обектите.

Станимир Стоянов


  • Login