Web and WS based Embedded Systems

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