Кіріспе

Бағдарламалық архитектурада, хабар алмасу үлгісі – бұл қолданбаның екі бөлігінің немесе әртүрлі жүйелердің бір-бірімен қалай байланысып, қарым-қатынас жасайтынын сипаттайтын архитектуралық үлгі. Хабар алмасу тұжырымдамасының көптеген қырлары бар, оларды келесі категорияларға бөлуге болады: аппараттық құрылғылардың хабар алмасуы (телекоммуникация, компьютерлік желілер, IoT және т.б.) және бағдарламалық дерек алмасу (осындай дерек алмасудың әртүрлі форматтары мен бағдарламалық мүмкіндіктері). Контексттің өзгешелігіне қарамастан, екі категория да дерек алмасудың ортақ белгілерін көрсетеді.

Хабарлама үлгісінің жалпы түсініктері

Телекоммуникация саласында хабар алмасу үлгісі (MEP) – коммуникация арнасын орнату немесе пайдалану үшін коммуникация протоколы қажет ететін хабарламалардың үлгісін сипаттайды. Коммуникация протоколы – барлық қарым-қатынас жасайтын тараптар келісетін (немесе өңдеуге қабілетті) хабарламаны ұсынуға қолданылатын формат. Коммуникация арнасы – хабарламалардың қарым-қатынас жасайтын тараптар арасында "жуып жіберуіне" мүмкіндік беретін инфрақұрылым. Хабар алмасу үлгілері коммуникация процесіндегі тараптар арасындағы хабар ағынын сипаттайды, екі негізгі хабар алмасу үлгісі бар – сұрау-жауап үлгісі және бір жолды үлгі. Мысалы, интернетте мазмұн қарау кезінде (арна), веб-браузер (қарым-қатынас жасайтын тарап) HTTP (коммуникация протоколы) арқылы серверден (басқа қарым-қатынас жасайтын тараптан) веб-бет сұрап, содан кейін қайтарылған деректерді визуальды түрде көрсетеді. Сұрау-жауап хабарламасының үлгісі осылай жұмыс істейді. Компьютерлік желілерде UDP желілік протоколы бар. Ол бір жолды хабарламалар үлгісімен қолданылады, онда жіберуші тарап хабарламаның кез келген қабылдаушы тарапқа жеткеніне қызығушылық танытпайды, сондай-ақ қабылдаушы тараптардың ешқайсысынан "жауап" хабарлама күтпейді.

Құрылғы байланысы

Бұл бөлім аппараттық құрылғылар арасындағы дерек алмасу туралы. Құрылғылар деректерді оқу және алмасу үшін аппараттық ерекше протоколды (мысалы, радиосигналды) пайдаланады, ол хабар жіберуші ретінде әрекет ететін аппараттық құрылғы (радио мұнарасы) арқылы жасалады және басқа аппараттық құрылғы (мысалы, сіздің ас үй радиоңыз) қабылдаушы ретінде түсіндіре алады. Радио мысалында, бір жақты байланыс моделі бар, ал хабар алмасу протоколы – радиосигналдың өзі. Құрылғылардың байланысы хабар алмасу жүйесіндегі аппараттық құрылғылардың хабар алмасуды қалай жүзеге асыратынын да білдіруі мүмкін. Мысалы, интернеттен қол жеткізген кезде, бірнеше құрылғылар бірлесіп жұмыс істейді және интернет трафигі арқылы хабарды жеткізеді – маршрутизаторлар, коммутаторлар және желілік адаптерлер, олар аппараттық деңгейде TCP немесе UDP пакеттері түрінде сигналдарды жібереді және қабылдайды. Егер біз назарды екі аппараттық құрылғының өзара байланысына аударсақ, әрбір пакет жеке хабар ретінде қарастырылуы мүмкін, ал жалпы интернет байланысы тұрғысынан, бірнеше тізбектелген пакеттер бірігіп мағыналы хабарды құрайды, мысалы, сурет немесе веб-бет.

Бағдарламалық байланыс

Құрылғы байланыстарынан өзгеше, онда хабарлама деректерінің пішіні қатысатын құрылғылардың түрі мен мүмкіндіктерімен қолдау көрсетілетін протоколдармен шектеледі (мысалы, компьютерлік желіде TCP және UDP протоколдары бар, рация белгілі бір жиілікте радио толқындарды жібереді, ал шамшырақ адам оқи алатын Морзе кодінің тізбектерін жыпылықтатады), бағдарламалық құрал деректерді алмасудың күрделі және сенімді форматтарын құруға мүмкіндік береді. Бұл форматтар жіберуші тараптан негізгі аппараттық құрал жеткізе алатын пішінге аударылады, содан кейін қабылдаушы тарап аппараттық құрылғыға тән пішіннен қарым-қатынас жасайтын бағдарламалық жүйелер белгілеген бастапқы протоколға сәйкес пішінге декодтайды. Бұл жоғары деңгейдегі деректер алмасу ақпаратты адам оқи алатын түрінде беруге мүмкіндік береді, сондай-ақ хабарламаларды қорғау үшін бағдарламалық шифрлау және шифрды бұзу әдістерін пайдалануға мүмкіндік береді. Сонымен қатар, бағдарламалық хабар алмасу хабар алмасу үлгісінің әртүрлі нұсқаларын қамтамасыз етеді, олар енді қарапайым сұрау-жауап және бір бағытты тәсілдермен ғана шектелмейді. Соңғысы, бірақ ең маңыздысы, бағдарламалық байланыс жүйелері хабарламаларды жеткізуді оңтайландыру үшін немесе қандай тараптарға белгілі бір хабарламаларды қабылдауға болатынын анықтауға көмектесетін таңдау және сүзгілеудің күрделі ережелерін орнату үшін пайдаланылатын деректер алмасудың әртүрлі арналарын ұсынуға қабілетті. Бұл бағдарламалық басқарумен хабарламаларды бағыттау мүмкіндігін береді. Мұның нәтижесінде тақырып (мақсатты топтағы барлық қабылдаушы тараптарға хабарламаның көшірмесі жіберіледі) және кезек (мақсатты топтағы бір ғана тарап хабарламаны алады) түсініктері пайда болды. Бұрын айтқанымыздай, бағдарламалық хабарламалар деректер алмасу протоколдарында көбірек мүмкіндіктер мен еркіндік береді. Дегенмен, егер қарым-қатынас жасайтын тараптар протоколдың егжей-тегжейін келіспесе, бұл тиімді болмайды, сондықтан бірқатар стандартталған бағдарламалық хабарлама протоколдары бар. Бұл стандарттау әртүрлі бағдарламалық жүйелерге, әдетте жеке ұйымдар құрған және басқарған, түрлі аппараттық құрылғыларда (серверлерде, компьютерлерде, смарт құрылғыларда немесе IoT контроллерлерінде) жұмыс істейтін, деректерді нақты уақыт режимінде алмасуға мүмкіндік береді. Төменде бүгінгі күнге дейін қолданылып келе жатқан ең танымал бағдарламалық хабарлама протоколдарының бірнешеуі келтірілген. Олардың әрқайсысы алдыңғы бөлімде сипатталған хабарлау концепциясына толыққанды мағына қосады.

СОПАН

Хабар алмасу үлгісі термині Simple Object Access протоколында (SOAP) кеңейтілген мағынаға ие. SOAP MEP түрлеріне мыналар жатады:
Тек кіріс (In Only): Бұл бір бағыттыға тең. Стандартты біржақты хабарлама алмасу, онда тұтынушы жеткізушіге хабарлама жібереді, ал жеткізуші ешқандай жауап жібермейді.
Берік кіріс (Robust In Only): Бұл сенімді бір бағытты хабарламалар алмасу үшін. Тұтынушы хабарлама жібереді, оған жеткізуші мәртебемен жауап береді. Егер жауап мәртебе болса, алмасу аяқталады, бірақ егер жауап қате болса, тұтынушы мәртебемен жауап беруі керек.
Кіріс-шығыс (In Out): Бұл сұрау-жауапқа тең. Стандартты екі жақты хабарлама алмасу, онда тұтынушы хабарламамен бастайды, жеткізуші хабарламамен немесе қатемен жауап береді және тұтынушы мәртебемен жауап береді.
Кіріс – міндетті емес шығыс (In Optional Out): Стандартты екі жақты хабарлама алмасу, онда жеткізушінің жауабы міндетті емес.
Тек шығыс (Out Only): Тек кіріске кері. Ол негізінен оқиға туралы хабарламаны қолдайды. Бұл қате туралы хабарламаны іске қосуға болмайды.
Берік тек шығыс (Robust Out Only): Тек шығыс үлгісіне ұқсас, бірақ ол қате хабарламасын іске қоса алады. Шығатын хабарлама таратуды бастайды.
Шығыс-кіріс (Out In): Кіріс-шығысқа кері. Жеткізуші сұрауды жібереді және алмасуды бастайды.
Шығыс – міндетті емес кіріс (Out Optional In): Кіріс – міндетті емес шығысқа кері. Қызмет шығыс хабарламаны шығарады. Кіріс хабарламасы міндетті емес ("Optional in").

ØMQ

ØMQ хабарлама кезегі кітапханасы сокет деп аталатын (дәстүрлі IP және Unix сокеттерінен әлдеқайда жалпыланған түрі) ұсынады, олар қолданылатын хабар алмасу үлгісін көрсетуді талап етеді және әр үлгіге орай оңтайландырылған. ØMQ негізгі үлгілері: Сұрау-жауап клиенттер жиынтығын қызметтер жиынтығымен байланыстырады. Бұл қашықтықтан процедура шақыру және тапсырма тарату үлгісі. Жариялау-жазылу жариялаушылар мен жазылушылар жиынтығын байланыстырады. Бұл дерек тарату үлгісі. Түрту-тарту бірнеше қадамды және циклдарды қамти алатын желпіш тәрізді / жинақтаушы тәрізді түйіндерді байланыстырады. Бұл параллель тапсырма тарату және жинау үлгісі. Эксклюзивті жұп екі сокетті эксклюзивті жұп ретінде қосады. Бұл нақты, жоғары деңгейлі қолдану жағдайлары үшін төменгі деңгейлі үлгі. Әр үлгі белгілі бір желі топологиясын анықтайды. Сұрау-жауап «қызметтік шинаны», жариялау-жазылу «деректер тарату ағашын», ал түрту-тарту «параллель құбыржолды» анықтайды. Барлық үлгілер шексіз кеңейтілуге мүмкіндік беру үшін және осылайша Интернет ауқымында қолдануға болатындай етіп әдейілеп жасалған.

ҚОЙЫМ

REST протоколы – HTTP протоколы негізінде құрылған хабарлама протоколы және ұқсас түрде, хабарлама алмасудың сұрау-жауап үлгісін қолданады. HTTP-нің басты мақсаты – адам пайдаланушысына арналған веб-беттер мен файлдарды Интернет арқылы жеткізу болса, REST протоколы көбінесе әртүрлі бағдарламалық жүйелер арасындағы байланыс үшін қолданылады және микроқызметтер бағдарламалық архитектурасының үлгісінде маңызды рөл атқарады. REST протоколының ерекше қасиеттерінің бірі – ол деректерді көптеген басқа форматтарда (әдетте JSON және XML) бейнелеуге жеткілікті әмбебап, сондай-ақ ол ұсынатын хабарлама үшін қосымша метадеректер сипаттамаларын қамтиды. Метадеректер сипаттамалары HTTP стандарттарына сәйкес HTTP тақырыптары ретінде ұсынылады (олар HTTP протоколымен стандартталған) және оларды қабылдаушы тарапқа хабарламаның мазмұнын қалай түсіндіру керектігі туралы нұсқаулар ретінде пайдалануға болады. Осының арқасында REST басқа бағдарламалық жүйемен байланыс жасай алатын бағдарламалық жүйені дамытуды жеңілдетеді, себебі әзірлеушілер хабарлама мазмұнының жоғары деңгейдегі форматын (JSON немесе XML моделі) білуі керек. Нақты HTTP байланысын әдетте бағдарламалық кітапхана немесе фреймворк жүзеге асырады. REST протоколының тағы бір артықшылығы – ол оның үстінде басқа протоколдардың семантикасын құруға мүмкіндік береді, мысалы HATEOAS.