Мидълуер: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.8
мРедакция без резюме
Ред 15:
* ''Mидълуер ориентиран към транзакции'' – Създаден е с цел да осигури преноса на разпределени транзакции между отдалечени разпредели бази от данни. Следователно при този тип middleware хостовете представляват приложения работещи с бази от данни, а комуникацията между тях се осигурява чрез стандарти протоколи и механизмите, които описват разпределените транзакции;
* ''Mидълуер ориентиран към съобщения'' – Създаден е с цел да осигури ефективна и надеждна асинхронна комуникация между отделните компоненти на разпределената система чрез обмена на съобщения. Процеса на работа включва изпращането на съобщение (обикновено представлява структурирано множество от данни, характеризиращо се с тип и параметри, представляващи двойки от име и стойност) [[от страна на клиента]], който изисква изпълнението на определена услуга. Последния когато е готов изпраща обратно съобщение с резултата от услугата. Всичко това се извършва асинхронно и е изключително подходящо при изграждането на системи използващи събития и publish/subscribe механизми. Освен това той предоставя възможността за едновременното изпращането на съобщения до много получатели и осигурява по-голяма надеждност (чрез използването на опашки от съобщения). Същото така е възможно използването на т.нар. брокери на съобщения (който могат да реализират специална логика за рутиране на съобщенията или тяхната трансформация);
* ''Обектно- ориентиран мидълуер'' – Създаден е с цел да осигури ефективна комуникация между отдалечени приложения като ги представи като разпределени обекти, които имат пряк достъп до определени, предварително дефинирани свои операции, атрибути или вътрешни обекти. Този мидълуер е базиран на обектно- ориентирания подход и основната идея при него е възприемането на отдалеченото приложение като обект в текущото приложение.
 
== Обектно- ориентиран мидълуер ==
''Основните понятия'' свързани с обектно- ориентираните мидълуер са:
* RPC (Remote Procedure Call) – Обектно- ориентирания middleware надгражда системите използващи RPC (викането на отдалечени процедури с локални аргументи и получаването на резултат), като въвежда по-добри механизми за прихващане и обработка на грешки, позволява наследяване и още мн. други подобрения;
* Дефиниция на интерфейс и IDL (Interface Definition Language) – Чрез този интерфейс се дефинират операциите, които са позволени за отдалечен достъп. Те се описват чрез използването на специални IDL езици (които се използва за да опише целия обектен модел) като така се осигурява независимост спрямо избора на конкретен програмен език за реализация;
* Клиент/сървър стъб/скелетон – Реализират конкретни интерфейси от страна на клиента (стъб) и сървъра (стъб/скелетон) и осигуряват протичането на прозрачна комуникация между тях. Те се грижат за процесите на marshaling/unmarshaling и почти всеки middleware предоставя компилатор, позволяващ автоматичното им генериране с помощта на IDL;
* Разпределени обекти – Най-общо казано това са обекти, които отделните приложения в обектно- ориентирания middleware „споделят“;
* Регистриране на обекти – За да бъде един обект разпределен и съответно достъпен през middleware-а е необходимо той да бъде регистриран. За целта се използват т.нар. implementation repository, което се реализира различно в отделните обектно- ориентирани middleware (пр. в CORBA се използват т.нар. обектни адаптери). Той служи освен за регистрирането и „откриването“ на обекта, но и за неговото активиране/ деактивиране;
 
''Създаването на разпределени обекти'' включва следните етапи: дизайн на обектите, дефиниция на интерфейса, генериране на стъбовете, имплементация на клиентския стъб, имплементация на сървърния стъб и регистриране на сървърния обект;
 
Сред най-често използваните обектно- ориентиран мидълуер са:
* CORBA (Common Object Request Broker Architecture) – Всеки обект има идентификатор, достъп до отдалечени обекти се осъществява с помощта на указатели (references), статични типове, дефиниране на сложни типове, поддръжка на модули, позволено е дефинирането на атрибути и операции (с in/out/inout параметри), поддържа наследяване и полиморфизъм. Архитектурата му включва следните компоненти: ORB (Object request broker), което е ядрото на мидълуера (получава заявките от клиента, намира сървърния обект чрез подадения указател, предава му параметрите и след това връща отговора на клиента); Client stub/Implementation skeleton, които осъществяват marshaling/unmarshaling; Dynamic invocation, чрез които се използват за динамичното дефиниране на заявки по време на изпълнение; Object adapter; ORB Interface, който се използва за инициализация и дефиниране на обектите;
* COM/DCOM – Прави се разлика между интерфейс (дефиниращ протокол за комуникация и задължително притежаващ ID), имплементация (клас, който реализира интерфейс) и клас (конкретна имплементация, която може да бъде използвана за типизиране и също притежаващ уникално ID)