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

Изтрито е съдържание Добавено е съдържание
Редакция без резюме
м замяна с n-тире; козметични промени
Ред 1:
'''Мидълуер - Междинен интеграционен софтуер''' ({{lang-en|Middleware}}) представлява междинен слой между софтуерните приложения и операционната система, който осигурява по-лесното разработване на сложни софтуерни системи (разпределени, компонентно-базирани и др.) като освобождава (абстрахира) тези приложения от конкретните специфики и особеностите на използваната операционна система, хардуерните компоненти и комуникационните протоколи. Основната цел на мидълуер е да се справи с хетерогенността, присъща за този тип системи (по отношение на използвания програмен език, спецификата на използваните операционни системи – пр. как са представят данните в нея и др.). Ако трябва да бъдем по-конкретни по отношение на разположението на middleware-а, то той е позициониран в OSI модела върху сесийния и представителния слой, като използва транспортния слой за осъществяване на комуникацията между отделните хостове (чрез TCP/UDP протоколите) и в същото време обслужва на едно по-високо ниво софтуерните приложения (приложния слой). Поради тази причина той често се разбира двояко:
* ''Мидълуер като програмна абстракция'' – Изразява се в разбирането на middleware като множество от архитектурни и програмни решения (абстракции) свързани с разработване и интегриране на сложни софтуерни системи (каквито са разпределените системи, компонентно-базираните системи и др.). Пример за такова решение е използването на RPC – програмна абстракция, която позволява процедурни извиквания между приложения изпълнявани на отдалечени хостове като в същото време скрива подробностите и детайлите по самата комуникация. Множеството от подобни програмни абстракции оформят програмния модел нa конкретния middleware-а, който от своя страна определя неговите характеристики и областите му на приложение;
* ''Мидълуер като инфраструктура'' – Изразява се в разбирането на middleware като среда, която предоставя готови софтуерни решения (реализации) и инструменти, които могат директно да бъдат използвани с цел изграждането на сложни софтуерни системи или тяхното интегриране. Пример за такива готови софтуерни решения и инструменти са IDL (Interface Definition Language), интерфейсен компилатор, библиотеки за трансформиране на данни (обслужващи процес на marshaling/unmarshaling) и др. Те в своята съвкупност образуват сложна софтуерна инфраструктура, която по същество реализира програмния модел заложен в конкретния middleware и определя неговите нефункционални параметри (като производителност, надеждност, ефективност при управлението на ресурси и т.н.);
 
Ред 25:
* Клиент/сървър стъб/скелетон – Реализират конкретни интерфейси от страна на клиента (стъб) и сървъра (стъб/скелетон) и осигуряват протичането на прозрачна комуникация между тях. Те се грижат за процесите на 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)
* Java/RMI (Remote Method Invocation)
 
 
== Външни препратки ==
* [http://middleware.internet2.edu/ Internet2 Middleware Initiative]
 
[[Категория:Мидълуер| ]]