Upload
nitesh
View
63
Download
2
Embed Size (px)
DESCRIPTION
Горещите технологии в web – SOAP, XML-RPC и AJAX. Георги Пенков, Марин Маринов. www.devbg.org. Въведение. “ Само този, който знае от къде идва, знае на къде отива” – корейска поговорка Целите Да припомним къде бяхме Да припомним през какво преминахме Да видим къде сме сега - PowerPoint PPT Presentation
Citation preview
Горещите технологии в Горещите технологии в webweb – – SOAP, XML-RPCSOAP, XML-RPC и и
AJAXAJAXГеорги Пенков,Марин МариновГеорги Пенков,Марин Маринов
www.devbg.orgwww.devbg.org
ВъведениеВъведениеВъведениеВъведение
• ““Само този, който знае от къде идва, Само този, който знае от къде идва, знае на къде отива”знае на къде отива” – корейска – корейска поговоркапоговорка
• ЦелитеЦелите• Да припомним къде бяхмеДа припомним къде бяхме• Да припомним през какво преминахмеДа припомним през какво преминахме• Да видим къде сме сегаДа видим къде сме сега
• SOAP SOAP и и XML-RPCXML-RPC• AJAXAJAX
• … … за да знаем на къде отиваме…за да знаем на къде отиваме…
• ““Само този, който знае от къде идва, Само този, който знае от къде идва, знае на къде отива”знае на къде отива” – корейска – корейска поговоркапоговорка
• ЦелитеЦелите• Да припомним къде бяхмеДа припомним къде бяхме• Да припомним през какво преминахмеДа припомним през какво преминахме• Да видим къде сме сегаДа видим къде сме сега
• SOAP SOAP и и XML-RPCXML-RPC• AJAXAJAX
• … … за да знаем на къде отиваме…за да знаем на къде отиваме…
ИсториятаИсториятаИсториятаИсторията
• ARPAnet ARPAnet поставя началото на бъдещият поставя началото на бъдещият Интернет през 1968Интернет през 1968
• Действащите лица са военните и Действащите лица са военните и университетитеуниверситетите
• Архитектурата има значениеАрхитектурата има значение
• Mainframes & UNIX Mainframes & UNIX
• Софтуерните компоненти - Douglas Софтуерните компоненти - Douglas McIlroy – 1968, Гармиш, ГерманияMcIlroy – 1968, Гармиш, Германия
• RPC – RPC – 1976 и началото на “модерните” 1976 и началото на “модерните” разпределени архитектуриразпределени архитектури
• ARPAnet ARPAnet поставя началото на бъдещият поставя началото на бъдещият Интернет през 1968Интернет през 1968
• Действащите лица са военните и Действащите лица са военните и университетитеуниверситетите
• Архитектурата има значениеАрхитектурата има значение
• Mainframes & UNIX Mainframes & UNIX
• Софтуерните компоненти - Douglas Софтуерните компоненти - Douglas McIlroy – 1968, Гармиш, ГерманияMcIlroy – 1968, Гармиш, Германия
• RPC – RPC – 1976 и началото на “модерните” 1976 и началото на “модерните” разпределени архитектуриразпределени архитектури
ИсториятаИсториятаИсториятаИсторията
• Микрокомпютрите стават Микрокомпютрите стават PCPC-та с -та с IBM IBM и и Apple Apple презпрез 1981 1981
• ““WWWWWW”” aka aka WebWeb – началото е през 1989- – началото е през 1989-1992 (1992 (HTTP, HTML, URL – Tim Berners-Lee HTTP, HTML, URL – Tim Berners-Lee и и WWW Consortium)WWW Consortium)
• Browser Wars - Browser Wars - стандартите се развиват стандартите се развиват бързо, но хаотичнобързо, но хаотично
• Архитектурата все така има значениеАрхитектурата все така има значение
• DCOM/COM+, Java RMI, CORBADCOM/COM+, Java RMI, CORBA
• SOASOA
• Микрокомпютрите стават Микрокомпютрите стават PCPC-та с -та с IBM IBM и и Apple Apple презпрез 1981 1981
• ““WWWWWW”” aka aka WebWeb – началото е през 1989- – началото е през 1989-1992 (1992 (HTTP, HTML, URL – Tim Berners-Lee HTTP, HTML, URL – Tim Berners-Lee и и WWW Consortium)WWW Consortium)
• Browser Wars - Browser Wars - стандартите се развиват стандартите се развиват бързо, но хаотичнобързо, но хаотично
• Архитектурата все така има значениеАрхитектурата все така има значение
• DCOM/COM+, Java RMI, CORBADCOM/COM+, Java RMI, CORBA
• SOASOA
Клиент-сървър архитектураКлиент-сървър архитектураКлиент-сървър архитектураКлиент-сървър архитектура
• 2-слойна архитектура2-слойна архитектура• The Fat Client ProblemThe Fat Client Problem
• Клиентът съдържа бизнес логиката и Клиентът съдържа бизнес логиката и презентацията, сървъра се грижи само за презентацията, сървъра се грижи само за запазването и получаването на даннитезапазването и получаването на данните
• Много зависи от платформатаМного зависи от платформата
• The Thin Client ProblemThe Thin Client Problem• Бизнес логиката е изнесена в Бизнес логиката е изнесена в stored stored
procedures procedures в базата даннив базата данни• Трудно се променяТрудно се променя• Натоварвания на сървъра и мрежатаНатоварвания на сървъра и мрежата
• 2-слойна архитектура2-слойна архитектура• The Fat Client ProblemThe Fat Client Problem
• Клиентът съдържа бизнес логиката и Клиентът съдържа бизнес логиката и презентацията, сървъра се грижи само за презентацията, сървъра се грижи само за запазването и получаването на даннитезапазването и получаването на данните
• Много зависи от платформатаМного зависи от платформата
• The Thin Client ProblemThe Thin Client Problem• Бизнес логиката е изнесена в Бизнес логиката е изнесена в stored stored
procedures procedures в базата даннив базата данни• Трудно се променяТрудно се променя• Натоварвания на сървъра и мрежатаНатоварвания на сървъра и мрежата
Трислойна архитектураТрислойна архитектураТрислойна архитектураТрислойна архитектура
• Front-end – Front-end – представяне и потребителски представяне и потребителски интерфейсинтерфейс
• Back-end – Back-end – съхранение на даннитесъхранение на данните
• Middle-tier – Middle-tier – бизнес логика, бизнес логика, Application Application ServerServer
• Решава много от проблемите на Решава много от проблемите на клиент/сървър архитектуратаклиент/сървър архитектурата• Логиката и презентацията са разделениЛогиката и презентацията са разделени
• Минимизира мрежовите проблемиМинимизира мрежовите проблеми
• Минимизира Минимизира DB DB проблемипроблеми
• Различни технологииРазлични технологии
• Front-end – Front-end – представяне и потребителски представяне и потребителски интерфейсинтерфейс
• Back-end – Back-end – съхранение на даннитесъхранение на данните
• Middle-tier – Middle-tier – бизнес логика, бизнес логика, Application Application ServerServer
• Решава много от проблемите на Решава много от проблемите на клиент/сървър архитектуратаклиент/сървър архитектурата• Логиката и презентацията са разделениЛогиката и презентацията са разделени
• Минимизира мрежовите проблемиМинимизира мрежовите проблеми
• Минимизира Минимизира DB DB проблемипроблеми
• Различни технологииРазлични технологии
““Старият” Старият” WebWeb““Старият” Старият” WebWeb
• Старият Старият WebWeb – “организиран хаос” – “организиран хаос” през през 19981998
• Съдържанието е богато, добавя се Съдържанието е богато, добавя се труднотрудно
• Множество различни стандарти и Множество различни стандарти и технологиитехнологии
• Програмистите “говорят” различни езициПрограмистите “говорят” различни езици
• Машините “говорят” различни езициМашините “говорят” различни езици
• EnterpriseEnterprise системите не са готови за системите не са готови за интернетинтернет
• Старият Старият WebWeb – “организиран хаос” – “организиран хаос” през през 19981998
• Съдържанието е богато, добавя се Съдържанието е богато, добавя се труднотрудно
• Множество различни стандарти и Множество различни стандарти и технологиитехнологии
• Програмистите “говорят” различни езициПрограмистите “говорят” различни езици
• Машините “говорят” различни езициМашините “говорят” различни езици
• EnterpriseEnterprise системите не са готови за системите не са готови за интернетинтернет
CGI CGI – добрите стари дни– добрите стари дниCGI CGI – добрите стари дни– добрите стари дни
• Common Gateway Common Gateway Interface (CGI) Interface (CGI) – – стандартния начин за стандартния начин за реализиране на реализиране на server-server-side web side web базирани базирани приложенияприложения
• Разчита на проста схема Разчита на проста схема за предаване на данните за предаване на данните между между web-serverweb-server-а и -а и CGI CGI приложениетоприложението
• Първата стъпка към Първата стъпка към “оживяването” на “оживяването” на Интернет страниците Интернет страниците (около 85% (около 85% CGI CGI скриптовете са скриптовете са Perl Perl базиранибазирани))
• Common Gateway Common Gateway Interface (CGI) Interface (CGI) – – стандартния начин за стандартния начин за реализиране на реализиране на server-server-side web side web базирани базирани приложенияприложения
• Разчита на проста схема Разчита на проста схема за предаване на данните за предаване на данните между между web-serverweb-server-а и -а и CGI CGI приложениетоприложението
• Първата стъпка към Първата стъпка към “оживяването” на “оживяването” на Интернет страниците Интернет страниците (около 85% (около 85% CGI CGI скриптовете са скриптовете са Perl Perl базиранибазирани))
• Стандартен поток на Стандартен поток на данните при данните при CGICGI
• Стандартен поток на Стандартен поток на данните при данните при CGICGI
Web ServerWeb Server
CGICGI
BrowserBrowser
HTTP/ HTML
stdin / stdout
server side
Web Services – Web Services – нова нова надежданадеждаWeb Services – Web Services – нова нова надежданадежда
• W3C defW3C def: : software system designed to support software system designed to support interoperable machine-to-machine interaction interoperable machine-to-machine interaction over a networkover a network
• W3C defW3C def: : software system designed to support software system designed to support interoperable machine-to-machine interaction interoperable machine-to-machine interaction over a networkover a network
Web Services Protocol StackWeb Services Protocol StackWeb Services Protocol StackWeb Services Protocol Stack
• Service TransportService Transport• HTML, SMTP, BEEP, HTML, SMTP, BEEP,
Jabber…Jabber…
• MessagingMessaging• SOAP, XML-RPC, SOAP, XML-RPC,
REST, …REST, …
• Service DescriptionService Description• WSDLWSDL
• Service DiscoveryService Discovery• UDDIUDDI
• Service TransportService Transport• HTML, SMTP, BEEP, HTML, SMTP, BEEP,
Jabber…Jabber…
• MessagingMessaging• SOAP, XML-RPC, SOAP, XML-RPC,
REST, …REST, …
• Service DescriptionService Description• WSDLWSDL
• Service DiscoveryService Discovery• UDDIUDDI
• WS Protocol StackWS Protocol Stack• WS Protocol StackWS Protocol Stack
Extensions: Extensions: Security, Security,
Management, Management, Bussines Bussines
ProcessesProcesses
Service Discovery Service Discovery
Service DescriptionService Description
MessagingMessaging
Service TransportService Transport
XML-RPC XML-RPC накратконакраткоXML-RPC XML-RPC накратконакратко
• Опростен протоколОпростен протокол
• Създаден от Създаден от Dave WinerDave Winer, на базата на ранен , на базата на ранен draftdraft на на SOAPSOAP
• Стандартни, лесно разбираеми типове данниСтандартни, лесно разбираеми типове данни
• Множество имплементации на различни езициМножество имплементации на различни езици
• ws-xmlrpc – Apache ws-xmlrpc – Apache имплементация заимплементация за Java Java
• JAX-RPC – Sun JAX-RPC – Sun имплементация за имплементация за JavaJava
• XML-RPC for PHPXML-RPC for PHP
• XML::RPC – Perl XML::RPC – Perl модулмодул
• XML-RPC.NETXML-RPC.NET
• Опростен протоколОпростен протокол
• Създаден от Създаден от Dave WinerDave Winer, на базата на ранен , на базата на ранен draftdraft на на SOAPSOAP
• Стандартни, лесно разбираеми типове данниСтандартни, лесно разбираеми типове данни
• Множество имплементации на различни езициМножество имплементации на различни езици
• ws-xmlrpc – Apache ws-xmlrpc – Apache имплементация заимплементация за Java Java
• JAX-RPC – Sun JAX-RPC – Sun имплементация за имплементация за JavaJava
• XML-RPC for PHPXML-RPC for PHP
• XML::RPC – Perl XML::RPC – Perl модулмодул
• XML-RPC.NETXML-RPC.NET
XML-RPC XML-RPC примерпримерXML-RPC XML-RPC примерпример
<?xml version="1.0"?><?xml version="1.0"?>
<methodCall> <methodCall>
<methodName>examples.getStateName</methodName> <methodName>examples.getStateName</methodName>
<params><params>
<param><value><i4>41</i4></value></param><param><value><i4>41</i4></value></param>
</params></params>
</methodCall> </methodCall>
XML-RPC requestXML-RPC request
<?xml version="1.0"?><?xml version="1.0"?>
<methodResponse><methodResponse>
<params><params>
<param> <value><string>South Dakota</string></value> <param> <value><string>South Dakota</string></value> </param></param>
</params></params>
</methodResponse> </methodResponse>
XML-RPC responseXML-RPC response
SOAP SOAP накратконакраткоSOAP SOAP накратконакратко
• Преживява много сериозен процес на Преживява много сериозен процес на анализ и дизайнанализ и дизайн
• Много по-сложен, сравнение с Много по-сложен, сравнение с XML-RPC, XML-RPC, но пък е направен по всички правила на но пък е направен по всички правила на W3CW3C
• Съобщението се разделя на Съобщението се разделя на header header и и bodybody
• Routing Routing и и rolesroles• SecuritySecurity• User Defined TypesUser Defined Types• По-сложен модел на По-сложен модел на processingprocessing
• Преживява много сериозен процес на Преживява много сериозен процес на анализ и дизайнанализ и дизайн
• Много по-сложен, сравнение с Много по-сложен, сравнение с XML-RPC, XML-RPC, но пък е направен по всички правила на но пък е направен по всички правила на W3CW3C
• Съобщението се разделя на Съобщението се разделя на header header и и bodybody
• Routing Routing и и rolesroles• SecuritySecurity• User Defined TypesUser Defined Types• По-сложен модел на По-сложен модел на processingprocessing
SOAP message SOAP message примерпримерSOAP message SOAP message примерпример
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header><env:Header>
<n:alertcontrol xmlns:n="http://example.org/alertcontrol"><n:alertcontrol xmlns:n="http://example.org/alertcontrol">
<n:priority>1</n:priority><n:priority>1</n:priority>
<n:expires>2001-06-22T14:00:00-05:00</n:expires><n:expires>2001-06-22T14:00:00-05:00</n:expires>
</n:alertcontrol></n:alertcontrol>
</env:Header></env:Header>
<env:Body><env:Body>
<m:alert xmlns:m="http://example.org/alert"><m:alert xmlns:m="http://example.org/alert">
<m:msg>Pick up Mary at school at 2pm</m:msg><m:msg>Pick up Mary at school at 2pm</m:msg>
</m:alert></m:alert>
</env:Body></env:Body>
</env:Envelope></env:Envelope>
SOAP message
AJAXAJAXAJAXAJAX
• AJAX = Asynchronous JavaScript and XMLAJAX = Asynchronous JavaScript and XML
• AJAX AJAX не е конкретна технология, а е не е конкретна технология, а е подход на реализацияподход на реализация
• Наречен е така от Наречен е така от Jesse James GarrettJesse James Garrett, , February 2005 February 2005 в статията му “в статията му “Ajax: A New Ajax: A New Approach to Web ApplicationsApproach to Web Applications””
• Google Google го налага в почти всички свои го налага в почти всички свои продукти, поради което придобива продукти, поради което придобива огромна популярностогромна популярност
• Gmail Gmail го изстрелва на върхаго изстрелва на върха
• AJAX = Asynchronous JavaScript and XMLAJAX = Asynchronous JavaScript and XML
• AJAX AJAX не е конкретна технология, а е не е конкретна технология, а е подход на реализацияподход на реализация
• Наречен е така от Наречен е така от Jesse James GarrettJesse James Garrett, , February 2005 February 2005 в статията му “в статията му “Ajax: A New Ajax: A New Approach to Web ApplicationsApproach to Web Applications””
• Google Google го налага в почти всички свои го налага в почти всички свои продукти, поради което придобива продукти, поради което придобива огромна популярностогромна популярност
• Gmail Gmail го изстрелва на върхаго изстрелва на върха
AJAXAJAXAJAXAJAX
• AJAX AJAX комбинира следните технологиикомбинира следните технологии
• HTML/XHTML + CSS HTML/XHTML + CSS за форматиране на за форматиране на презентациятапрезентацията
• DOM + Client Side Script (JavaScript) – DOM + Client Side Script (JavaScript) – за за динамичен достъп до отделните динамичен достъп до отделните елементи на документаелементи на документа
• XMLHttpRequest object XMLHttpRequest object и/или и/или IFRAME IFRAME за за динамичен достъп до сървърадинамичен достъп до сървъра
• XML XML за пакетиране на данните, но също за пакетиране на данните, но също JSON (JavaScript Object Notation)JSON (JavaScript Object Notation)
• AJAX AJAX комбинира следните технологиикомбинира следните технологии
• HTML/XHTML + CSS HTML/XHTML + CSS за форматиране на за форматиране на презентациятапрезентацията
• DOM + Client Side Script (JavaScript) – DOM + Client Side Script (JavaScript) – за за динамичен достъп до отделните динамичен достъп до отделните елементи на документаелементи на документа
• XMLHttpRequest object XMLHttpRequest object и/или и/или IFRAME IFRAME за за динамичен достъп до сървърадинамичен достъп до сървъра
• XML XML за пакетиране на данните, но също за пакетиране на данните, но също JSON (JavaScript Object Notation)JSON (JavaScript Object Notation)
AJAXAJAXAJAXAJAX
• ПредимстваПредимства• Доближава Доближава desktop desktop
experience-experience-а до а до webweb• Премахва досадното Премахва досадното
изчакване да се зареди изчакване да се зареди страницатастраницата
• Ускорява разработкатаУскорява разработката• Сайтовете “проговарят” Сайтовете “проговарят”
на езика на на езика на WSWS
• НедостатъциНедостатъци• Съвместимост с Съвместимост с
различните различните browserbrowser-и-и• Network Latency Network Latency
обработкаобработка• Промяна на стандартния Промяна на стандартния
browse browse моделмодел• BookmarkingBookmarking
• ПредимстваПредимства• Доближава Доближава desktop desktop
experience-experience-а до а до webweb• Премахва досадното Премахва досадното
изчакване да се зареди изчакване да се зареди страницатастраницата
• Ускорява разработкатаУскорява разработката• Сайтовете “проговарят” Сайтовете “проговарят”
на езика на на езика на WSWS
• НедостатъциНедостатъци• Съвместимост с Съвместимост с
различните различните browserbrowser-и-и• Network Latency Network Latency
обработкаобработка• Промяна на стандартния Промяна на стандартния
browse browse моделмодел• BookmarkingBookmarking
• Поток на данни при Поток на данни при AJAXAJAX• Поток на данни при Поток на данни при AJAXAJAX
Web ServerWeb Server
Web Web ServiceService
BrowserBrowser
HTTP(S)/ XMLHTTP(S)/ XML
server server sid
esid
e
AJAX frameworkAJAX framework
ИзводитеИзводитеИзводитеИзводите
• Новите технологии помагат на Новите технологии помагат на Web Web да да еволюираеволюира
• WS WS вече се използват стабилно както в вече се използват стабилно както в интернет, така и в интернет, така и в Enterprise Enterprise решениятарешенията
• AJAX AJAX довежда довежда desktop desktop модела в уеб модела в уеб браузърабраузъра
• Комбинацията Комбинацията WS WS базиран на базиран на SOAP SOAP + + AJAX AJAX ще позволи на компаниите да ще позволи на компаниите да капитализират ресурсите отделени за капитализират ресурсите отделени за WS WS и в частта “краен потребител”и в частта “краен потребител”
• Новите технологии помагат на Новите технологии помагат на Web Web да да еволюираеволюира
• WS WS вече се използват стабилно както в вече се използват стабилно както в интернет, така и в интернет, така и в Enterprise Enterprise решениятарешенията
• AJAX AJAX довежда довежда desktop desktop модела в уеб модела в уеб браузърабраузъра
• Комбинацията Комбинацията WS WS базиран на базиран на SOAP SOAP + + AJAX AJAX ще позволи на компаниите да ще позволи на компаниите да капитализират ресурсите отделени за капитализират ресурсите отделени за WS WS и в частта “краен потребител”и в частта “краен потребител”
КонтактиКонтактиКонтактиКонтакти
Sofia.pmSofia.pmhttp://sofia.pm.org
Perl @ Sofia UniversityPerl @ Sofia Universityhttp://perl.phreedom.org
Bulgarian Association of Software Bulgarian Association of Software DevelopersDevelopershttp://www.devbg.org
[email protected]@phreedom.org
Въпроси и отговори ;)Въпроси и отговори ;)Въпроси и отговори ;)Въпроси и отговори ;)
Въпроси?Въпроси?Въпроси?Въпроси?