Веб-қызмет

**Веб-қызмет,** *веб-сервис* () — стандартталған интерфейстері бар бірегей веб-мекенжаймен (URL-мекенжаймен) сәйкестендірілетін бағдарламалық жүйе.

Веб-қызметтер белгілі бір хаттамаларға (SOAP, XML-RPC және т.б.) және келісімдерге (REST) негізделген хабарламалар арқылы бір-бірімен және үшінші тарап қосымшаларымен өзара әрекеттесе алады. Веб-қызмет қолданбаның қызметке бағытталған архитектурасын пайдалану кезінде модульділік бірлігі болып табылады.

Күнделікті өмірде веб-қызметтер Интернетте көрсетілетін қызметтер деп аталады. Бұл қолданыста термин іздеу, веб-пошта, құжаттарды, файлдарды, бетбелгілерді және т.б. сақтау туралы екенін нақтылауды қажет етеді.

## Артықшылықтары мен кемшіліктері
**Артықшылықтары**

* Веб-қызметтер платформаға қарамастан бағдарламалық қамтамасыз ету жүйелерінің өзара әрекеттесуін қамтамасыз етеді. Мысалы, Windows-C#клиенті Linux жүйесінде жұмыс істейтін Java серверімен байланыса алады.
* Веб-қызметтер ашық стандарттар мен хаттамаларға негізделген. XML пайдалану арқылы веб-қызметтерді әзірлеу мен жөндеудің қарапайымдылығына қол жеткізіледі.
* Интернет желісінің хаттамасын пайдалану желіаралық қалқан арқылы бағдарламалық жасақтама жүйелерінің HTTP өзара әрекеттесуін қамтамасыз етеді. Бұл CORBA, DCOM немесе Java RMI сияқты технологиялармен салыстырғанда айтарлықтай артықшылық. Екінші жағынан, веб-қызметтер HTTP-ге тығыз байланысты емес-басқа протоколдар да қолданылуы мүмкін.

**Кемшіліктері**

* XML мәтіндік хабарламаларын пайдалану арқылы RMI, CORBA, DCOM технологияларымен салыстырғанда өнімділіктің төмендеуі және желілік трафиктің үлкен мөлшері. Дегенмен, кейбір веб серверлерде желілік трафикті қысуды орнатуға болады.
* Қауіпсіздік аспектілері. Жауапты веб-қызметтер кодтауды қолдануы керек, мүмкін-пайдаланушының аутентификациясын талап етеді. Мұнда https қосымшалары жеткілікті ме, әлде XML Signature, XML Encryption немесе SAML сияқты шешімдерге артықшылық беріле ме — әзірлеуші шешуі керек.

## Мысалдары
Әуе компаниялар мен туристік бюролардың өзара әрекеттесуі: біріншісі веб-қызметтер арқылы пайдалы ақпарат береді, ал екіншісі өз клиенттеріне оңтайлы ұсыныстар іздеу кезінде пайдаланады.

MOBILESERVER веб-қызметі ашық SOAP (XML) және JSON протоколдарына негізделген хабарламаларды қолдана отырып, соңғы деректерді оқу кезінде жылу есептегішінен ағымдағы деректерді алуға мүмкіндік береді.

### Қолданбалар дүкені

Үшінші тарап БҚЕ әзірлеуші компанияларына мүмкіндік беретін қолданбалар дүкені — интернет дүкен, мобильді (әдетте) құрылғылардың иелеріне әртүрлі қосымшалар мен ойындарды орнатуға және сатып алуға, ал басқа мазмұн өндірушілеріне кітаптар, музыка және Фильмдер ұсынуға мүмкіндік береді.

* Windows қолданбалар дүкені (*Microsoft* *Store*) 
* Windows Phone қолданбалар дүкені (бұрынғы Windows Phone Marketplace) 
* «Google Play» қолданбалар дүкені 
* Chrome қолданбалар дүкені 
* Apple қолданбалар дүкені (*App Store*) 
* Mac App Store 
* Opera Mobile Store 
* Samsung Galaxy Store 
* Nashstore қолданбалар дүкені 
* «Huawei AppGallery» қолданбалар дүкені 
* Yandex қосымшалар дүкені (*Яндекс.Store*)

### Маркетплейс

Саудагерлерге онлайн сауда жасау үшін веб-сайтты ұсыну.

### Стриминг
Стриминг (ағынды мультимедиа беру) қызметтерін ұсынады.

* аудио стримингі (Spotify, Tidal, Roon, Qobuz, Muzlab және т. б.);
* бейне стримингі (Netflix, Megogo, Disney+ және т.б.).

## Іске асыру технологиялары

### Архитектурасы
Суретте көрсетілгендей, веб-қызмет аясында өзара әрекеттесетін үш инстанцияны ажыратуға болады. Олардың аттарын келесідей аударайық 

* Тапсырыс беруші (*service requester*); 
* Орындаушы (*service provider*); 
* каталог (*service broker*).

Қызмет әзірленген кезде орындаушы оны әлеуетті тұтынушылар таба алатын каталогқа тіркейді. Тапсырыс беруші каталогтан қолайлы қызметті тауып, оның WSDL спецификациясын сол жерден импорттайды және оған сәйкес өзінің бағдарламалық жасақтамасын әзірлейді. WSDL тапсырыс беруші мен орындаушы жұмыс барысында алмасатын сұраулар мен жауаптардың форматын сипаттайды. Өзара әрекеттесуді қамтамасыз ету үшін келесі стандарттар қолданылады:

* XML: құрылымдық деректерді сақтауға және тасымалдауға арналған кеңейтілетін белгілеу тілі; 
* SOAP: XML негізіндегі хабар алмасу протоколы; 
* WSDL: тұтынушы мен soap веб-қызметтері арасындағы өзара әрекеттесуді (келісімшартты) анықтайтын интерфейсті анықтау тілі. XML негізінде жазылған; 
* UDDI: әмбебап тану, сипаттау және интеграция интерфейсі (Universal Discovery, Description and Integration). Веб-Қызметтер каталогы және веб-қызметтерді жалпыға ортақ немесе белгілі бір компанияларға ұсынатын компаниялар туралы мәліметтер. Әзірге UDDI бар, дегенмен, тек шағын брендтік желілерде және әлі де ашық Интернетте кең таралған жоқ; 
* JSON: 2010 жылдары жаппай пайда болған тиімді белгілеу тілі.

### Әзірлеу әдістері
Екі негізгі топқа бөлінген веб-қызметтерді дамытуды автоматтандыру құралдары бар. Төменнен жоғарыға қарай әзірлеу кезінде алдымен имплементациялық сыныптар жазылады және олардың бастапқы мәтінінен қызметті құжаттайтын WSDL файлдары жасалады. Бұл әдістің кемшілігі-Java сыныптарының жиі өзгеруіне ұшырауы. Жоғарыдан төменге жақындаған кезде алдымен WSDL дайындалады және одан қызметті жүзеге асыратын Java класының қаңқасы жасалады. Бұл жол қиынырақ деп саналады, бірақ ол өзгерістерден таза және жақсы қорғалған шешімдерге әкеледі. Тапсырыс беруші мен орындаушы алмасатын хабарламалардың форматы өзгермейінше, олардың әрқайсысындағы өзгерістер өзара әрекеттесуді бұзбайды. Бұл әдіс кейде «келісімшарт бірінші» деп аталады, өйткені бастапқы нүкте WSDL (Тапсырыс беруші мен орындаушы арасындағы «келісімшарт)» болып табылады.

Құжаттарды тану (OCR) үшін SDK негізіндегі веб-қызметті әзірлеу бар.[4]

### Платформалары
Веб-қызметтер қосымшалар серверлерінде орналастырылады. Кейбір қолданбалы серверлер:

* Adobe ұсынған ColdFusion 
* GNU жобасының DotGNU (әзірлеу тоқтатылды) 
* GlassFish — Oracle компаниясынан 
* Google App Engine — Google компаниясының инфрақұрылымын пайдаланатын масштабталатын қолданбаларға арналған платформа
* IBM Lotus Notes IBM бірлескен жұмысты ұйымдастыруға арналған бағдарламалық жасақтама желісі 
* JBoss — Red Hat компаниялары 
* Mono — Xamarin (бұрынғы Novell) әзірлеу платформасы 
* .NET Framework Microsoft серверлері 
* SAP Web Application Server (SAP NetWeaver стегінің негізгі бөлігі болып табылады) 
* Oracle компаниясының WebLogic (Oracle сатып алған BEA Systems өнімі)
* Software AG ұсынған webMethods интеграциялық платформасы 
* IBM ұсынған WebSphere Application Server (Apache мен J2EE платформасына негізделген) 
* Zend Framework— Zend Technologies 
* Zope — Python-да жазылған объектіге бағытталған қосымшалар сервер

## Әдебиет

* *Дергачев А. М.* Проблемы эффективного использования сетевых сервисов / Научно-технический вестник СПбГУ ИТМО. 2011. № 1 (71). С. 83-87
* *Dover D., Dafforn E.* Search Engine Optimization Secrets. Indianapolis: Wiley Publishing, Inc., 2011. 456 p.
* *Ouzzani, M., Bouguettaya A.* Semantic Web Services for Web Databases. Springer Science+Business Media, 2011. 155 p.

## Сыртқы сілтемелер
* W3C Web Services

## Дереккөздер

Санат:Желілік хаттамалар
Санат:Веб бағдарламалау