View
203
Download
11
Category
Preview:
Citation preview
Разпределени Вградени СистемиРазпределени Вградени Системи
Web-базирани РВС
Web базирани РВС
• ВМС поддържа web съвър и позволява отдалечено следене и контрол.
WS базирани РВС
• ВМС може да извлича данни през web от други ВМС и да им предоставя данни.
Идентификация на ресурсиИдентификация на ресурси
URI – Uniform Resource Identifierhttp://user:pass@example.com:8080/path/file?query=test#anchor
протокол
парола
по требител
адрес / име
на домейн
порт
име и път до
ре сур с
зая вк а с парам
етри
фра гм
ен т
HTTP заявкиHTTP заявки
• GET – заявка за получаване на ресурс;
• POST – заявка за предаване на данни към даден ресурс;
• PUT – заявка за поставяне на ресурс на даден URI;
• DELETE – заявка за изтриване на ресурс.
Структура на HTTP заявкаСтруктура на HTTP заявка
• заглавна част (header)– поддържани типове (MIME);
– поддържани кодирания (encoding);
– поддържани кодови таблици (charset);
– дата и час;
– идентификация на потребителя;
• тяло на съобщението (body)
HTTP GETHTTP GETGET /DSCC/index.php HTTP/1.1
Host: 192.168.2.98:8080
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.7,bg;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
=====================================================================================
HTTP/1.1 302 Found
Date: Tue, 06 Mar 2007 21:58:11 GMT
Server: Apache/2.0.59 (Unix) PHP/4.3.4
Content-Type: text/html
b9d
<html>
<head></head>
<body></body>
</html>.
0
HTTP POSTHTTP POSTPOST /DSCC/login.php HTTP/1.1
Host: 192.168.2.98:8080
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.2.98:8080/DSCC/login.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
user=kakanakov&pass=******
================================================================================
HTTP/1.1 302 Found
Date: Wed, 07 Mar 2007 00:00:03 GMT
Server: Apache/2.0.59 (Unix) PHP/4.3.4
Cache-Control: no-store, no-cache
Transfer-Encoding: chunked
Content-Type: text/html
572
<html> <head></head> <body></body> </html>
HTTP HTTP ккодове на отговоритеодове на отговорите
• 1xx – информационни:– 100 – Continue; 101 – Switching protocol;
• 2xx – успех:– 200 (OK); 201 (Created); 202 (Accepted); 204 (No New Content);
• 3xx – пренасочване:– 301 (Moved Permanently); 302 (Moved Temporarily);
• 4xx – клиентска грешка:– 400 (Bad Request); 401(Unauthorized); 403 (Forbidden); 404 (Not Found);
• 5xx – грешка при сървъра:– 500 (Internal Server Error); 501 (Not Implemented); 503 (Service Unavailable).
MIME типовеMIME типове
• Формат:• MIME type ::= type / sybtype
• Основни типове:– text – текстова информация;– image - изображения;– video - видео;– audio - аудио;– application – обекти, които се обработват извън браузера;– multipart – съобщение съдържащо повече от една част.
• Примери:text/html; text/plain; text/css; image/gif; image/jpeg; image/bmp;
video/mpeg; audio/x-mpeg; application/pdf; application/msword; application/zip; application/octet-stream; multipart/mixed.
CGI моделCGI модел
• Браузера предава данните към съръвра, заедно с името и пътя до файла, който трябва да го обработи
• Вместо да върне самия файл, сървърът го стартира и връща резултата от изпълнението му.
• Вместо стандартните входи и изход на програмата да са клавиатура и монитор, те са пренасочени към Web сървъра.
Работа с CGIРабота с CGI
• Най-лекото му проявление е SSI. При него страницата е написана като шаблон и само на определени места се поставят елементи, които се заменят при изпълнение на CGI скрипта.
• Този модел се прилага при Servlet технологията на Java.
• Проблемът с него е необходимостта повечето информация да се описва в кода на скрипта.
Web Services
• Това е web страница предназначена за процес (програма), не за човек (machine-to-machine).
• Web услугите се изграждат по строг модел и архитектура, защото няма човек, който да ги чете.
• Web услугите са независими от приложния протокол, който ги транспортира.
• Използва се XML, защото е самоописващ се.
Rest WS
• REpresentational State Transfer• Това е архитектура за създаване на web
услуги, не инструмент.• За разлика от SOAP WS не се изисква
нов формат на съобщенията. Типа на ресурсите се препоръчва да е XML, но може да бъде всеки MIME тип.
• Ресурсите се идентифицират с URI.• На базата на CGI се генерират обекти с
динамично съдържание.
WS: REST vs. SOAP
REST web services are:
• Lightweight – not a lot of extra xml markup
• Human Readable Results
• Easy to build – no toolkits required
• Less bandwidth
SOAP also has some advantages:
• Easy to consume – sometimes
• Rigid – type checking, adheres to a contract
• Development tools• WS – Security• WS - Discovery
Примери
• Apache CGI– C/C++, Perl, Bash ...– Web Services - gSOAP.
• IPC@Chip CGI– CGI API;– Web services?
• DSTINI HttpServer– dynamic pages?– Servlets?
Apache CGI
• Modules– mod_alias– mod_cgi
• Environment– ScriptAlias /cgi-bin/ somedir– <Directory somedir>
Options +ExecCGI </Directory>
• Programming Language– C/C++: http://www.gnu.org/software/cgicc/– Perl: http://search.cpan.org/~smylers/CGI-Lite-2.02/Lite.pm– Bash:
http://www.yolinux.com/TUTORIALS/LinuxTutorialCgiShellScript.html
gSOAP toolkit
• Това е инструмент за създаване на SOAP/XML web услуги.
• Генерира сорс код на базата на описание на услуга, който позволява обработката на SOAP пакета и декодиране на XML съобщението.
• Подобно на RPC свързва потрбителския код с WS процедурите за комуникация и обвързване на потребителските типове с XML структури.
• Въпреки, че е предназначен за C/C++ има вграден garbage collector.
gSOAP Клиент• Подаваме WSDL описанието на gSOAP importer и той
създава хедър файл с компонентите на услугата. gSOAP компилаторът създава от този хедър файл прокси обект или RPC стъб.
• Ако има потребителски типове, те трябва да бъдат описани в WSDL type секцията или да се подадат като допълнителен хедър файл.
gSOAP сървър• За създаването на услугата може да създадем хедър
файл, който описва компонентите на услугата като прототипи на функции и структури от данни и да го комплилираме с gSOAP. gSOAP компилаторът създава скелетон и WSDL файл, описващ услугата. Услугата може да е описана и на WSDL и да се използва gSOAP importer.
IPC @Chip CGI• The CGI ("Common Gateway Interface") API uses interrupt
0xAB with a service number in the high order byte of the AX register (AH). » CGI provides the possibility to install at the Web server own
programmed CGI functions. These functions are bound with a fixed name and are executed by the Web server task, if a http request with such a fixed name comes in. This mechanism allows dynamic usage of the IPC@CHIP® Web server.
• CLI commands – webstat, cgistat. • Functions
» void huge my_cgi_func(rpCgiPtr CgiRequest)» int CGI_Install ( CGI_Entry far *cgiptr );» CGI_Entry : Name of the page, URL; http method (Get, Head or
Post), pointer to callback function for this page.
DS TINI Web server• com.dalsemi.tininet.http
» Class HTTPServer - This class implements an HTTP server. This class currently only supports the GET and POST methods. The serviceRequests method blocks on a ServerSocket accept call. A new thread is spawned to service each new connection. The method serviceRequest can be used to synchronize access, using the lock object, to a requested web page. This might be useful if the server dynamically updates a page.
» Class HTTPWorker - This worker class is primarily used by HTTPServer to handle requests It handles parsing and URL encoding, decoding etc.
» Class PostElement - This is a utility class for handling the Field and Value pairs from the POST Content.
» Interface PostScript - This interface defines the required public methods for a HTTP POST handling script.
• Tynamo - http://tynamo.qindesign.com/
Recommended