slide1
Download
Skip this Video
Download Presentation
Интеграция на приложения

Loading in 2 Seconds...

play fullscreen
1 / 28

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


  • 140 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Интеграция на приложения' - gilon


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
slide1

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

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

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

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

corba

Модул “CORBA”

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

12 object interface

12. Object Interface

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

slide4
Съдържание
  • Въведение
  • Символно представяне на референции
  • Управление на референциите на обектите ORB

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

slide5

Въведение

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

slide6

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

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

slide7

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

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

slide8
Интерфейсите на псевдо-обектите са дефинирани в OMG IDL, но съществуват някои разлики:
  • Един псевдо-обект не може да се специфицира като параметър в операция на нормален обект;
  • Не може да бъде достъпен чрез DII
  • Няма дефиниции в IR.

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

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

slide9

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

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

slide10
Референциите на обектите:
  • Вътрешни представяния, непрозрачни за външния свят
  • За да могат да бъдат персистентно съхранявани те трябва да бъдат представени в символен формат
  • В символен формат могат да бъдат предавани посредством e-mail, Web сайтове, като аргументи на операции.

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

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

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

slide12

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

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

slide13
CORBA::Object - основен интерфейс за всички CORBA обекти:
  • Операциите могат да се извикат за всяка обектна референция
  • В повечето случаи функционалността е реализирана в стандартни библиотеки, които се доставят от ORB.

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

slide14

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};};

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

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

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

slide16
Duplicateи release:
  • Многосъществени за езици с явно управление на паметта (C,C++) – Java е с неявно автоматично управление
  • Осигуряват коректно управление на копията на обектните референции
  • Когато една референция трябва да се предаде към друг обект или контролна нишка, вътрешния тип, реализиращ референцията, не трябва да се копира с помощта на средствата на езика за реализация– трябва да се използва операцията duplicate()

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

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

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

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

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

slide19

Client

Server

OR1

:=

Copy(OR)

ProxyObject

TargetObject

TargetObject

1

2

1

Invalid Object Reference

OR1

CORBA::release()

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

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

slide20
Когато duplicate() се извиква за получаване на ново копие на референция – проксито ще увеличи брояча и ще чака референциите да извикат release() преди да освободи ресурси и да завърши работата си
  • Ако последната референция към проксито се изтрие без извикване на release() – проксито продължава да резервира излишни ресурси
  • Ситуация Фиг.6.2.

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

slide21

Client

Server

OR

ProxyObject

TargetObject

ProxyObject

TargetObject

1

2

1

2

delete(OR)

x

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

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

slide22
Коректното използване на duplicate() и release() – Фиг.6.3.
  • Броячът в проксито отговаря на актуалния брой референции към проксито

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

slide23

Client

Server

OR1

:=

OR.duplicate()

ProxyObject

TargetObject

TargetObject

ProxyObject

2

2

2

1

OR1

CORBA::release(OR)

x

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

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

slide24
Какво става когато референциите се копират (с duplicate()) за предаване през границите на машините – Фиг.6.4, Фиг.6.5
  • Не е показано междинното увеличаване на брояча на проксито B преди кода на skeleton да извърши release() когато предава реферанцията обратно към клиента

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

slide25

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

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

slide26

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

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

slide27
is_nil – проверява една референция дали означава OBJECT_NIL т.е. няма обект
  • is_a – връща TRUE ако IR идентификаторът, предаден към нея, реферира един тип, който е този обект е подтип
  • non_existent – проверява дали съществува инстанция на един обект (на референция). Ако не съществува тогава възниква OBJECT_NOT_EXIST изключение.
  • hash – използва се за търсене на идентични референции, които са по-ефективни от актуалната.
  • is_equivalent – проверява дали две референции са еквивалентни т.е. сочат към една и съща инстанция.
  • create_request – операцията се използва за стартиране процеса за създаване на заявки към реализации на обекти при DII.

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

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

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

ad