Кіріспе

Түрлі платформалардағы жүйелер арасындағы байланысты жеңілдету стандарты Common Object Request Broker Architecture (CORBA) – Object Management Group (OMG) ұйымы анықтаған, әртүрлі платформаларда жұмыс істейтін жүйелердің байланысын жеңілдетуге арналған стандарт. CORBA әртүрлі операциялық жүйелерде, бағдарламалау тілдерінде және есептеу техникалық құралдарындағы жүйелердің өзара іс-әрекеттесуін қамтамасыз етеді. CORBA объектіге бағытталған модельді пайдаланады, бірақ CORBA-ны қолданатын жүйелер міндетті түрде объектіге бағытталған болмауы керек. CORBA – таратылған объект парадигмасының мысалы.

Шолу

CORBA әр түрлі тілдерде жазылған және әр түрлі компьютерлерде жұмыс істейтін бағдарламалық құралдардың арасындағы байланысты қамтамасыз етеді. CORBA-ны қолданатын бағдарламашылардың жауапкершілігінен нақты операциялық жүйелер, бағдарламалау тілдері және аппараттық платформалардың егжей-тегжейлі сипаттамалары алынып тасталады. CORBA бір адрестік кеңістікте (қосымшада) немесе қашықтағы адрестік кеңістіктерде (бір хост немесе желідегі қашықтағы хост) орналасқан қолданба нысандары арасындағы әдіс шақыру семантикасын қалыпқа келтіреді. 1.0 нұсқасы 1991 жылдың қазан айында жарық көрді. CORBA нысандардың сыртқы ортаға ұсынатын интерфейстерін анықтау үшін интерфейс анықтау тілін (IDL) пайдаланады. CORBA содан кейін IDL-ден C++ немесе Java сияқты нақты іске асыру тіліне сәйкестендіруді анықтайды. Стандартты сәйкестендірулер Ada, C, C++, C++11, COBOL, Java, Lisp, PL/I, Object Pascal, Python, Ruby және Smalltalk үшін бар. C#, Erlang, Perl, Tcl және Visual Basic үшін стандартты емес сәйкестендірулер бар, оларды осы тілдер үшін жазылған нысан сұранысы брокерлері (ORB) іске асырады. IDL нұсқалары кейбір прагмаларды алмастыратын түсіндірмелермен айтарлықтай өзгерді. CORBA спецификациясы қосымшаның басқа нысандармен өзара әрекеттесуі үшін ORB болуын талап етеді. Бұл практикада былай іске асырылады: Қолданба ORB-ді бастайды және ішкі нысан адаптеріне кіреді, ол сілтеме санау, нысан (және сілтеме) құру саясаты және нысанның өмір сүру саясаты сияқты мәліметтерді сақтайды. Нысан адаптері құрылған код сыныптарының мысалдарына тіркеу үшін қолданылады. Құрылған код сыныптары пайдаланушы IDL кодын компиляциялау нәтижесінде пайда болады, ол жоғары деңгейдегі интерфейс анықтамасын пайдаланушы қолданбасы пайдаланатын операциялық жүйеге және тілге қатысты сыныптар базасына аударады. Бұл қадам CORBA семантикасын сақтау және CORBA инфрақұрылымымен интерфейс үшін қарапайым пайдалану процесін қамтамасыз ету үшін қажет. Кейбір IDL сәйкестендірулерін басқаларына қарағанда пайдалану қиын. Мысалы, Java-ның ерекшелігіне байланысты IDL Java сәйкестендіруі өте қарапайым және Java қолданбасында CORBA-ны пайдалануды өте оңай етеді. Бұл IDL-ден Python-ға сәйкестендіруге де қатысты. C++ сәйкестендіруі бағдарламалаушыдан C++ Стандартты Үлгілер Кітапханасынан (STL) бұрын пайда болған дерек түрлерін үйренуді талап етеді. Керісінше, C++11 сәйкестендіруін пайдалану оңай, бірақ STL-ді кеңінен пайдалануды талап етеді. C тілі нысанға бағытталмағандықтан, IDL-ден C-ге сәйкестендіру C бағдарламалаушысы нысанға бағытталған мүмкіндіктерді қолмен имитациялауын қажет етеді. CORBA негізіндегі бөлінген нысан интерфейсін пайдаланатын немесе іске асыратын жүйені құру үшін әзірлеуші жүйе пайдаланатын немесе іске асыратын логикаға нысанға бағытталған интерфейсті анықтайтын IDL кодын алуы немесе жазуы керек. Әдетте, ORB іске асыруы IDL компиляторы деп аталатын құралды қамтиды, ол IDL интерфейсін жүйенің сол бөлігінде пайдалану үшін мақсатты тілге аударады. Содан кейін дәстүрлі компилятор құрылған кодты қолданбада пайдалану үшін байланыстырылатын нысан файлдарын құру үшін компиляциялайды. Бұл схема CORBA инфрақұрылымында құрылған кодтың қалай пайдаланылатынын көрсетеді: Бұл сурет CORBA-ны пайдалана отырып, процестер арасындағы қашықтықтан байланыс үшін жоғары деңгейдегі парадигманы көрсетеді. CORBA спецификациясы деректерді түрлеу, ерекшеліктер, желілік протоколдар, байланыс уақыты және т.б. мәселелерін де қарастырады. Мысалы: Әдетте серверлік жағында портативті нысан адаптері (POA) болады, ол қосылыстарды жергілікті қызметкерлерге немесе (жүкті теңестіру үшін) басқа серверлерге қайта бағыттайды. CORBA спецификациясы (және осылайша бұл сурет) бөлінген жүйенің әртүрлі аспектілерін, соның ішінде нысанның өмір сүру мерзімін (егерде анықтама санау семантикасы қолжетімді болса да), резервтік көшірмелерді/апатты жағдайларды, жадты басқару, динамикалық жүктемені теңестіру және қолданбаға бағытталған модельдерді, мысалы дисплей/деректер/басқару семантикасы арасындағы бөлінуді (мысалы, Модель-көрініс-бақылаушы) және т.б. анықтауды қосымшаға қалдырады. CORBA пайдаланушыларға тілге және платформаға бейтарап қашықтықтан процедура шақыру (RPC) спецификациясын ұсынумен қатар, транзакциялар мен қауіпсіздік, оқиғалар, уақыт және басқа да салалық интерфейс модельдері сияқты қажетті қызметтерді анықтайды.

Версиялар тарихы

Бұл кесте CORBA стандартының нұсқаларының тарихын көрсетеді. Нұсқа Күні Ерекшеліктері Corba IDL Version 1.0 1991 жылдың қазан айы Бірінші нұсқа, C mapping 1.1 1992 жылдың ақпан айы Өзара іс-қимыл, C++ mapping 1.2 1993 жылдың желтоқсаны 2.0 1996 жылдың тамызы Стандарттың бірінші маңызды жаңартуы, сондай-ақ CORBA 2 деп аталды 2.1 1997 жылдың тамызы 2.2 1998 жылдың ақпан айы Java mapping 2.3 1999 жылдың маусымы 2.4 2000 жылдың тамызы 2.5 2001 жылдың қыркүйегі 2.6 2001 жылдың желтоқсаны 3.0 2002 жылдың шілдесі Стандарттың екінші маңызды жаңартуы, сондай-ақ CORBA 3 CORBA Component Model (CCM) 3.0 3.0.1 2002 жылдың қараша айы 3.0.2 2002 жылдың желтоқсаны 3.0.3 2004 жылдың наурызы 3.1 2008 жылдың қаңтары 3.1.1 2011 жылдың тамызы ISO/IEC 19500 стандартының 2012 жылғы басы ретінде қабылданды 3.2 2011 жылдың қарашасы 3.3 2012 жылдың қарашасы ZIOP қосылды 3.4 2021 жылдың ақпан айы 4.2 Ескерту: IDL өзгерістері аннотациялармен (мысалы, @unit, @topic) кейбір прагмаларды алмастыра отырып дамыды.

Қызметшілер

Сервер – қашықтан әдіс шақыруларын өңдеуге арналған әдістерді қамтитын шақыру нысаны. CORBA-ның жаңа нұсқаларында қашықтағы объект (сервер жағында) объектіге (қашықтан шақыруларға ұшырайтын) және серверге (бұрынғы бөлігі әдіс шақыруларын жібереді) бөлінеді. Бір қашықтағы объектіге бір сервер сәйкес келуі мүмкін, немесе бір сервер берілген Портативті Объект Адаптерімен (POA) байланысты бірнеше (немесе барлық) объектілерді қолдауы мүмкін. Әрбір объектінің серверін «бір рет және мәңгілікке» (серверді белсендіру) немесе осы объектіге әдіс шақырылған сайын динамикалық түрде таңдауға болады (сервердің орналасуы). Серверді іздеуші де, серверді іске қосушы да шақыруларды басқа серверге жіберуге қабілетті. Жалпы алғанда, бұл жүйе жүктемені теңестірудің өте қуатты құралын ұсынады, сұрауларды бірнеше машиналар арасында бөліп жібереді. Объектіге бағытталған тілдерде, қашықтағы объект және оның сервері де объектіге бағытталған бағдарламалау көзқарасынан қарағанда объекті болып табылады. Инкарнация – CORBA объектісімен серверді байланыстыру арқылы сұраныстарды қамтамасыз ету амалы. Инкарнация виртуалды CORBA объектісіне нақты серверлік форманы береді. Белсендіру және деактивация тек CORBA объектілеріне қатысты, ал инкарнация мен эфиризация серверлерге қатысты. Дегенмен, объектілер мен серверлердің өмір сүру мерзімі тәуелсіз. Серверді инкарнациялау әрқашан объектіні белсендіруден бұрын жасалады, бірақ керісінше де мүмкін: сілтеме жасау серверді инкарнацияламастан объектіні белсендіреді, ал серверді инкарнациялау кейіннен, Сервер Менеджері арқылы қажет болған жағдайда жүзеге асырылады. Портативті Объект Адаптері (POA) – сервер жағындағы қашықтан шақыруды басқарушыны қашықтағы объектіге және оның серверіне бөлуге жауапты CORBA объектісі. Объект қашықтан шақырулар үшін ашық, ал серверде сұрауларды нақты өңдейтін әдістер орналасқан. Әрбір объект үшін серверді статикалық (бір рет) немесе динамикалық (әрбір қашықтан шақыру үшін) таңдауға болады, екі жағдайда да шақыруды басқа серверге бағыттау мүмкіндігі қарастырылған. Сервер жағында POA-лар ағаш тәрізді құрылымды құрайды, онда әр POA бір немесе бірнеше қызмет көрсетілетін объектілерге жауапты. Бұл ағаштың тармақтары тәуелсіз түрде белсендірілуі/деактивациялануы мүмкін, сервердің орналасуы немесе белсендірілуі үшін әртүрлі кодтарға және әртүрлі сұрауларды өңдеу саясатына ие болуы мүмкін.

Ерекшеліктері

Төменде CORBA-ның таратылған объектілер арасындағы байланысты қамтамасыз етуге мүмкіндік беретін ең маңызды тәсілдердің бірнешеуі сипатталады.

Мақсат бойынша нысандар

Бұл сілтеме жіптік бірыңғай ресурс локаторы (URL) арқылы, NameService іздеуі (Домендік атаулар жүйесіне (DNS) ұқсас) арқылы немесе шақыру кезінде әдіс параметрі ретінде жіберіледі. Объекті сілтемелері – нақты объектінің (алыстан немесе жергілікті) интерфейсіне сәйкес келетін жеңіл объектілер. Сілтемеге әдіс шақырылғанда, ORB-қа келесі шақырулар жасалады және жауап күтілгенде, сәттілік немесе сәтсіздік жағдайында жіп бұғатталады. Параметрлер, қайтарылатын деректер (бар болса) және қате туралы деректер ORB-мен жергілікті тіл мен операциялық жүйеге сәйкес ішкі түрде өңделеді.

Құн бойынша мәліметтер

CORBA интерфейсті анықтау тілі тіл мен операциялық жүйеге тәуелсіз объектілер арасындағы байланыс анықтамасын ұсынады. CORBA объектілері сілтеме арқылы жіберіледі, ал деректер (бүтін сандар, қос нүктелі сандар, құрылымдар, тізімдер және т.б.) мәні бойынша жіберіледі. Сілтеме арқылы объектілер мен мәні бойынша деректердің үйлесімі клиенттер мен серверлерді компиляциялау кезінде қатаң дерек типтерін сақтауға мүмкіндік береді, сонымен қатар CORBA мәселелеріне тән икемділікті сақтайды.

Құны бойынша нысандар (OBV)

Алыстағы объектілерден басқа, CORBA және RMI IIOP OBV және Valuetypes ұғымын анықтайды. Valuetype нысандарының әдістеріндегі код әдепкі бойынша жергілікті орындалады. Егер OBV қашықтан алынған болса, қажетті код екі тарапқа да бұрыннан белгілі болуы керек немесе жіберушіден динамикалық түрде жүктеп алынуы тиіс. Мұны іске асыру үшін OBV-ді анықтайтын жазбада Code Base болады, ол осы кодты жүктеуге арналған URL-дердің аралықтары бос орынмен бөлінген тізімі. OBV-де сондай-ақ қашық әдістер де болуы мүмкін.

CORBA компоненттік моделі (CCM)

CORBA компоненттік моделі (CCM) – CORBA анықтамаларының отбасына қосымша. Ол CORBA 3-пен бірге енгізілді және CORBA компоненттері үшін стандартты қолданбалық аяны сипаттайды. "Тілге тәуелді Enterprise Java Beans (EJB)"-ге тәуелді болмаса да, ол EJB-нің көбірек мүмкіндіктерге ие түрі болып табылады, EJB анықтаған екі компонент түрінің орнына төрт компонент түрін ұсынады. Ол порттар деп аталатын жақсы анықталған атаулы интерфейстер арқылы қызметтерді ұсына және қабылдай алатын объектілердің абстракциясын ұсынады. CCM компонент контейнеріне ие, онда бағдарламалық қамтамасыз ету компоненттерін орналастыруға болады. Контейнер компоненттер пайдалана алатын қызметтер жиынтығын ұсынады. Бұл қызметтерге хабарландыру, аутентификация, деректерді сақтау және транзакцияларды өңдеу кіреді (бірақ олармен шектелмейді). Бұл – кез келген таратылған жүйенің қажет ететін ең көп қолданылатын қызметтер және осы қызметтерді бағдарламалық қамтамасыз ету компоненттерінен компонент контейнеріне көшіру арқылы компоненттердің күрделілігі айтарлықтай төмендейді.

Көлденең ұстағыш құрылғылар

Портативті аралықтар – CORBA және RMI IIOP жүйелері CORBA жүйесінің ең маңызды функцияларын орындау үшін пайдаланатын "ілмектер". CORBA стандарты келесі аралықтар түрлерін анықтайды: IOR аралықтары қазіргі сервер ұсынған қашықтағы нысандарға жаңа сілтемелер жасауға қатысады. Клиенттік аралықтар көбінесе клиент (шақырушы) тарапында қашықтықтан әдіс шақыруларын ортадастадырады. Егер Servant нысаны әдіс шақырылған серверде орналасса, олар жергілікті шақыруларды да ортадастадырады. Серверлік аралықтар сервер (қарсы алушы) тарапында қашықтықтан әдіс шақыруларын өңдеуге қатысады. Аралықтар жіберілетін хабарламаларға және жасалатын IOR-ларға нақты ақпаратты қоса алады. Бұл ақпаратты кейіннен қашықтағы тараптан тиісті аралық оқи алады. Аралықтар сұрауды басқа нысанаға қайта бағыттап, өзге де қателерді тудыруы мүмкін.

Жалпы InterORB хаттамасы (GIOP)

GIOP – объектілік сұрау брокерлерінің (ORB) байланысуын қамтамасыз ететін абстрактілі протокол. Протоколға қатысты стандарттарды Object Management Group (OMG) ұстап тұрады. GIOP архитектурасы бірнеше нақты протоколдарды ұсынады, олардың ішінде:

Интернеттік ИнтерОрб протоколы (IIOP) – Интернеттік ИнтерОрб протоколы – GIOP-тың интернетте қолдану үшін іске асырылған түрі және GIOP хабарламалары мен TCP/IP қабаты арасында сәйкестік орнатуды қамтамасыз етеді. SSL ИнтерОрб протоколы (SSLIOP) – SSLIOP – SSL арқылы IIOP, шифрлау және аутентификацияны қамтамасыз етеді. HyperText ИнтерОрб протоколы (HTIOP) – HTIOP – HTTP арқылы IIOP, бұл мөлдір прокси серверін айналып өтуге мүмкіндік береді. Zipped IOP (ZIOP) – Жолақтың кеңдігін азайтатын GIOP-тың зиптелген нұсқасы.

VMCID (Жеке сатушының кодтар жиынтығы)

Әрбір стандартты CORBA ерекшелігі ерекшеліктің кіші санатын белгілеу үшін кіші кодты қамтиды. Кіші ерекшелік кодтары белгісіз ұзын типті болып табылады және жоғары реттік 20 битті алып тұратын 20 биттік "Vendor Minor Codeset ID" (VMCID) және төменгі реттік 12 битті алып тұратын кіші кодтан тұрады. Стандартты ерекшеліктер үшін кіші кодтар OMG-ге тағайындалған VMCID-мен, CORBA::OMGVMCID белгісіз ұзын тұрақтысы ретінде анықталады, онда OMG-ге тағайындалған VMCID жоғары реттік 20 битті алады. 3-58 беттегі 3–13 кестесінде көрсетілген стандартты ерекшеліктерге байланысты кішігірім ерекшелік кодтары, ex body құрылымында қайтарылатын кішігірім код мәнін алу үшін OMGVMCID-мен біріктіріледі (3.17.1-бөлімді қараңыз, "Стандартты ерекшеліктердің анықтамасы", 3-52 бет және 3.17.2-бөлім, "Стандартты кіші ерекшелік кодтары", 3-58 бет). Сатушы тағайындаған кеңістікте кіші кодтарға мәндерді тағайындау сатушыға қалдырылады. Сатушылар VMCID-ді беруді tagrequest@omg.org электрондық пошта арқылы сұрай алады. Қазіргі таңда тағайындалған VMCID-тер тізімімен OMG веб-сайтында танысуға болады: http://www.omg.org/cgi-bin/doc?vendor_tags.

VMCID 0 және 0xfffff тәжірибелік пайдалану үшін резервтелген. VMCID OMGVMCID (3.17.1-бөлім, "Стандартты ерекшеліктердің анықтамасы", 3-52 бет) және 1-ден 0xf-ке дейін OMG пайдалану үшін резервтелген. Ортақ объект сұранысы брокері: архитектура және спецификация (CORBA 2.3).

Артықшылықтары

CORBA-ның артықшылықтарына тілдік және операциялық жүйе тәуелсіздігі, технологиялық шектеулерден азаттық, күшті дерек типтеуі, жоғары деңгейде реттеу мүмкіндігі және таратылған деректерді беру ерекшеліктерінен құтылу жатады. Тіл тәуелсіздігі CORBA инженерлерді бағдарламалық тілге байланысты жобалау шектеулерінен босату мақсатымен жасалды. Қазіргі уақытта CORBA провайдерлерінің көптеген тілдерді қолдайтыны белгілі, ең танымалдары Java және C++. Сонымен қатар, C++11, тек C, Smalltalk, Perl, Ada, Ruby және Python нұсқалары да бар, тек бірнешеуін атап өтуге болады. Операциялық жүйе тәуелсіздігі CORBA құрылымы операциялық жүйеге тәуелді болмауы тиіс. CORBA Java-да (операциялық жүйе тәуелсіз) және сонымен қатар Linux/Unix, Windows, Solaris, OS X, OpenVMS, HPUX, Android, LynxOS, VxWorks, ThreadX, INTEGRITY және басқалары үшін қолжетімді. Технологиялардан тәуелсіздік CORBA-ның басты артықшылықтарының бірі – инженерлерге әртүрлі жаңа және ескі жүйелер арасындағы интерфейстерді стандарттауға мүмкіндік беретін бейтарап платформаны ұсыну. C, C++, Object Pascal, Java, Fortran, Python және кез келген басқа тілдерді немесе операциялық жүйені біртұтас жүйелік жобалау үлгісіне біріктіргенде, CORBA жағдайды тегістеу құралын ұсынады және әртүрлі командаларға жүйелерді және бірлік тесттерін әзірлеуге мүмкіндік береді, олар кейіннен толық жүйеге біріктірілуі мүмкін. Бұл негізгі жүйелік инженериялық шешімдерді, мысалы, жіптерді пайдалану, уақыт, объектінің өмір сүру мерзімі және т.б. қажеттілігін жоққа шығармайды. Бұл мәселелер технологияға қарамастан кез келген жүйенің бөлігі болып табылады. CORBA жүйелік элементтерді біртұтас жүйелік модельге келтіруді қамтамасыз етеді. Мысалы, көп деңгейлі архитектураны жобалау веб-сервердегі Java Servlets және бизнес-логиканы қамтитын және деректер қорына кіруді оралатын әртүрлі CORBA серверлерін пайдалану арқылы оңайлатылады. Бұл бизнес-логиканың іске асырылуын өзгертуге мүмкіндік береді, ал интерфейс өзгерістерін кез келген басқа технологиядағыдай өңдеу қажет. Мысалы, сервермен оралған деректер қоры сыртқы интерфейстерге әсер етпей, дискіні тиімді пайдалану немесе өнімділікті жақсарту үшін (немесе тіпті деректер қорының жеткізушісін толығымен өзгерту) деректер қорының схемасын өзгерте алады. Сонымен қатар, C++ мұралық коды C/Fortran мұралық кодымен және Java деректер қорының кодымен байланыса алады және веб-интерфейске деректерді жіберуі мүмкін. Дерек типтеуі CORBA икемді дерек типтеуін ұсынады, мысалы, "ANY" дерек типі. CORBA сонымен қатар қатаң дерек типтеуін қолдайды, адам қателерін азайтады. Атау-мәңіз жұптары жіберілген кезде, сервер күткен жол орнына санды беруі мүмкін. CORBA интерфейс анықтама тілі пайдаланушы кодының әдіс атауларына, қайтарым мәндеріне, параметрлердің типтеріне және ерекше жағдайларға сәйкес келуін қамтамасыз ететін механизмді ұсынады. Көптеген іске асыруларда (мысалы, ORBexpress (Ada, C++ және Java нұсқасы) және OmniORB (ашық кодты C++ және Python нұсқасы)) жіптерді басқару және қосылыс мүмкіндіктерін реттеуге арналған опциялар бар. Барлық ORB іске асырулары бірдей мүмкіндіктерді ұсынбайды. Деректерді беру ерекшеліктерінен құтылу Төмен деңгейдегі қосылымдар мен жіптерді басқару кезінде CORBA қателік жағдайларында жоғары деңгейдегі егжей-тегжейлілікті қамтамасыз етеді. Бұл CORBA-да анықталған стандартты ерекше жағдайлар жинағында және іске асыруға арналған кеңейтілген ерекше жағдайлар жинағында көрсетілген. Ерекше жағдайлар арқылы қосымша шақырудың "Кішігірім мәселе, қайтадан талпыныңыз", "Сервер істен шықты" немесе "Сілтеме дұрыс емес" сияқты себептерге байланысты сәтсіз аяқталғанын анықтай алады. Жалпы ереже: ерекше жағдай келмесе, әдіс шақыру сәтті аяқталды дегенді білдіреді. Бұл өте қуатты жобалау мүмкіндігі. Қысу CORBA деректерін екілік форматта жинақтап, қысуды қолдайды. IONA, Remedy IT және Telefónica CORBA стандартына қысуды қамтамасыз ететін кеңейтім бойынша жұмыс істеді. Бұл кеңейтім ZIOP деп аталады және қазіргі таңда ресми OMG стандарты болып табылады.