1.componentele de baza a unui calculator
2.memorii externe pe discuri optice
3.vizualizatorul si tastatura
4.imprimantele
5.clasificarea calculatoarelor
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTSabin Buraga
A lecture delivered for "Web Application Development" discipline (MSc studies at Faculty of Computer Science, 'Alexandru Ioan Cuza' University of Iasi, Romania): https://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
1.componentele de baza a unui calculator
2.memorii externe pe discuri optice
3.vizualizatorul si tastatura
4.imprimantele
5.clasificarea calculatoarelor
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTSabin Buraga
A lecture delivered for "Web Application Development" discipline (MSc studies at Faculty of Computer Science, 'Alexandru Ioan Cuza' University of Iasi, Romania): https://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga
O prezentare pentru elevii de liceu – participanți la SummerIS <www.summeris.ro> – referitoare la cele mai importante aspecte privind cariera de dezvoltator de aplicații Web.
A presentation for high-school students regarding the most important aspects about a professional carrier focused on Web application development.
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
3. Retele de calculatoare
Preliminarii
• Proiectarea aplicatiilor distribuite
–Orientata pe protocol – socket-uri
• Se dezvolta protocolul, apoi aplicatiile
care il implementeaza efectiv
–Orientata pe functionalitate – RPC
• Se creeaza aplicatiile, dupa care se divid
in componente si se adauga protocolul
de comunicatie intre componente
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [3]
4. Retele de calculatoare
Caracterizare
• Idee: Apelul unei proceduri care va fi executata
pe alta masina
• Instrument de programare mai simplu
decit interfata socket BSD
• O aplicatie RPC va consta dintr-un client si un server,
serverul fiind localizat pe masina ce executa procedura
• Aplicatia client comunica prin retea cu procedura
de pe calculatorul la distanta transmitind argumentele
si receptionind rezultatele
• Clientul si serverul ≡ procese pe masini diferite
• RPC realizeaza comunicarea dintre ele prin socket-uri
TCP/IP (uzual, UDP), via doua interfete stub (ciot)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [4]
5. Retele de calculatoare
Caracterizare
• Interfetele ciot
implementeaza
protocolul RPC
• Probleme:
– Identificarea si
accesarea
procedurii la distanta
– Transferul
parametrilor
– Transmiterea
valorii de retur
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [5]
6. Retele de calculatoare
Caracterizare
• Procedurile ciot se pot genera automat,
dupa care se “leaga” de programele
client si server
• Ciotul serverului asculta la un port si
realizeaza invocarea rutinelor
printr-o interfata de apel de proceduri locale
• Clientul si serverul vor comunica prin mesaje,
printr-o reprezentare independenta de retea si
de sistemul de operare:
External Data Representation (XDR)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [6]
7. Retele de calculatoare
XDR
• RFC 1014
• Tipuri uzuale
– Preluate din C:
int, unsigned int, float, double, void,…
– Suplimentare: string, fixed array,
counted array, symbolic constant,…
• Functii de conversie (rpc/xdr.h)
– xdrmem_create() – asociază unei zone de memorie
un flux de date RPC
– xdr_numetip() – realizeaza conversia datelor
• Codificarea argumentelor ≡ marshalling (serializare),
decodificarea ≡ un-marshalling (deserializare)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [7]
8. Retele de calculatoare
XDR
• XDR poate fi vazut ca nivel suplimentar
intre nivelul transport si nivelul aplicatie
(similar nivelului prezentare de la modelul ISO/OSI)
• Converteste simetric datele client si server
Procesul A Procesul B
Procesul A Procesul B
XDR Encode/Decode XDR Encode/Decode
XDR Encode/Decode XDR Encode/Decode
Transport Transport
Transport Transport
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [8]
9. Retele de calculatoare
XDR
• Exemplu:
#include <rpc/xdr.h>
#define BUFSIZE 400 /* lungimea zonei de memorie */
/* conversia unui intreg in format XDR */
...
XDR *xdrm; /* zona de memorie XDR */
char buf[BUFSIZE];
int intreg;
...
xdrmem_create (xdrm, buf, BUFSIZE, XDR_ENCODE);
...
intreg = 33;
Inlocuit la celalalt capat al
xdr_int (xdrm, &intreg);
...
comunicatiei cu XDR_DECODE
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [9]
10. Retele de calculatoare
XDR
• Activitatea de codificare/decodificare
Expe- Desti-
Desti-
Expe- XDR
ENCODE DECODE
XDR
ENCODE DECODE
ditor natar
natar
ditor
• In prezent, poate fi inlocuit de reprezentari
XML-RPC sau SOAP (in contextul serviciilor
Web) – vezi cursul “Tehnologii Web”
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [10]
11. Retele de calculatoare
Functionare
• Adresele clientului, serverului,
numele serviciilor sint pastrate la nivel simbolic
• Un serviciu de retea este identificat de portul
la care exista un daemon asteptind cereri
• Pentru RPC,
un port ≡ canal logic de comunicare
• Portmapper ≡ serviciu de reţea responsabil
cu asocierea de servicii la diferite porturi
⇒ numerele de port pentru un anumit serviciu
nu mai sunt fixe
• Portmapper-ul este disponibil la portul 111
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [11]
13. Retele de calculatoare
Functionare
1. Se determina adresa la care
serverul va oferi serviciul
• La initializare, serverul stabileste si inregistreaza
via portmapper portul la care va oferi serviciul
(portul a)
2. Clientul consulta portmapper-ul
de pe masina serverului pentru a identifica
portul la care trebuie sa trimita cererea RPC
3. Clientul si serverul pot comunica pentru
a realiza executia procedurii la distanta
• Cererile si raspunsurile se (de)codifica prin XDR
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [13]
15. Retele de calculatoare
Functionare
• Atunci cind un server furnizeaza mai multe
servicii, este de obicei folosita
o rutina dispatcher
• Dispatcher-ul identifica cererile specifice
si apeleaza procedura corespunzatoare,
dupa care rezultatul este trimis inapoi
clientului pentru a-si continua executia
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [15]
16. Retele de calculatoare
Functionare
• Transferurile de date prin RPC pot fi:
– Sincrone
– Asincrone
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]
17. Retele de calculatoare
Implementari
• Open Network Computing RPC (ONC RPC)
– Sun Microsystems
– Cea mai raspindita implementare in mediile Unix
– RFC 1057
– Interfata RPC este structurata pe 3 niveluri:
• Superior: independent de sistem, hardware sau retea
• Intermediar: face apel la functiile definite de biblioteca
RPC: registerrpc(), callrpc(), svc_run()
• Inferior: da posibilitatea de a controla intim
mecanismele RPC (alegerea modului de transport al
datelor, sincronizarea apelurilor etc.)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [17]
18. Retele de calculatoare
Implementari|ONC RPC
• Procedurile la distanta se vor include
intr-un program la distanta – unitate software
care se va executa pe o masina la distanta
• Fiecare program la distanta corespunde unui server:
proceduri la distanta + date globale
• Fiecare program la distanta se identifica
printr-un identificator unic stocat pe 32 biti
• Fiecare procedura va fi identificata prin index (1..n)
• Identificatori standard Sun RPC:
– 00 00 00 00 – 1F FF FF FF aplicatiile RPC ale sistemului
– 20 00 00 00 – 3F FF FF FF programele utilizatorilor
– 40 00 00 00 – 5F FF FF FF identificatori temporari
– 60 00 00 00 – FF FF FF FF valori rezervate
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [18]
19. Retele de calculatoare
Implementari|ONC RPC
• Exemple:
– 10000 meta-serverul portmapper
– 10001 rstatd – informatii despre sistemul aflat la
distanta; procedurile rstat() sau perfmeter()
– 10002 rusersd – informatii despre utilizatorii
conectati pe masina la distanta
– 10003 serverul nfs – acces la sistemul de fisiere
in retea NFS (Network File System)
– 10004 serviciile NIS (Network Information Service),
denumite anterior Yellow Pages
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [19]
20. Retele de calculatoare
Implementari|ONC RPC
• Fiecare program la distanta
are asociat un numar de versiune
– Pentru a modifica detalii de implementare
– Util la extinderea capabilitatilor aplicatiei RPC
– Initial versiunea = 1
– Urmatoarele versiuni se identifica in mod unic
prin alte numere de versiune
• O functionalitate ≡ <id_prog, vers, index_proc>
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [20]
21. Retele de calculatoare
Implementari|ONC RPC
• Programare
– Biblioteca RPC
• Rutinele XDR
• Biblioteca RPC run-time
–Apelul unui serviciu RPC
–Inregistrarea la un portmapper
–Trimiterea cererilor (via dispatcher)
procedurii dorite
– Generatorul automat de aplicatii RPC rpcgen
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [21]
22. Retele de calculatoare
Implementari|ONC RPC
• Programarea la nivel inalt
main (int argc, char *argv[]) {
int numar_utiliz;
if (argc != 2) { /* eroare */ }
if ((numar_utiliz = rusers (argv[1])) < 0)
{ /* eroare RPC */ }
printf (“%d utilizatori pe masina %sn”,
numar_utiliz, argv[1]);
exit (0);
}
• Compilare: gcc prog.c –lrpcsvc –oprog
• Executie: ./prog fenrir.infoiasi.ro
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [22]
23. Retele de calculatoare
Implementari|ONC RPC
• Programarea la nivel intermediar
int callrpc(char *host,
u_long prognum, Identificarea
Apelata de u_long versnum, procedurii la
clientul RPC distanta
u_long procnum,
xdrproc_t inproc,
Argum. de
intrare void *in,
(codificate xdrproc_t outproc,
XDR)
void *out); Rezultatul
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [23]
24. Retele de calculatoare
Implementari|ONC RPC
• Programarea la nivel intermediar
int registerrpc(
u_long prognum, Identificarea
Apelata de procedurii la
u_long versnum,
serverul distanta
u_long procnum,
RPC
void *(*procname)(),
xdrproc_t inproc,
xdrproc_t outproc);
Utilizate la codificarea/decodificarea XDR
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [24]
25. Retele de calculatoare
Implementari|ONC RPC
• Programarea la nivel intermediar
int svc_run();
Apelata de serverul RPC,
reprezinta dispatcher-ul
• Functiile de nivel intermediar utilizeaza doar
UDP si nu ofera suport pentru autentificare
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [25]
26. Retele de calculatoare
Implementari|ONC RPC
• Programarea la nivel inferior
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [26]
27. Retele de calculatoare
Implementari|ONC RPC
• Generatorul automat
de aplicatii RPC
rpcgen
– Produce rutinele ciot
pentru client si server
– Genereaza automat
functiile de
conversie XDR
– Genereaza
rutina dispatcher
– Se utilizeaza
biblioteca rpclib
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [27]
28. Retele de calculatoare
Implementari|ONC RPC
• Realizarea de aplicatii RPC cu rpcgen
– Fisier-specificatie RPC .x
• Declaratii de constante utilizate de client si server
• Declaratii de tipuri de date globale
• Declaratii de programe la distanta, proceduri,
tipuri parametri, tipul rezultatului,
identificatorul unic de program
– Programul server.c care contine procedurile
– Programul client.c care invoca procedurile
• Pentru a lista programele RPC inregistrate:
rpcinfo
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [28]
29. Retele de calculatoare
Implementari|ONC RPC
struct request /* cererea adresata serverului */
{
char tren_d[100]; /* descrierea trenului */
char nr_tren[10]; /* numarul trenului */
int optiuni; /* PLECARI sau SOSIRI /*
};
struct answer /* raspuns primit de client */
{
char raspuns[4000];
};
program TRENURI
{
version VERSIUNE
{ /* proc. apelata la distanta */
answer TREN (request) = 1;
} = 1; /* versiunea 1 (prima) */
} = 0x200000f1; /* identif. unic al prog. */
Exemplu de specificatie .x
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [29]
30. Retele de calculatoare
Implementari|altele
• Distributed Computing Environment DCE RPC
– Alternativa la Sun ONC RPC
– Utilizat si de serverele Windows
• Object RPC (ORPC)
– Mesajele de cerere/raspuns la distanta
se incapsuleaza in obiecte
– Descendenti directi:
(D)COM (Distributed Component Object Model) &
CORBA (Common Object Request Broker Architecture)
– Folosit si de GNOME (via ORBit)
– In Java: RMI (Remote Method Invocation)
– La .NET: .NET Remoting
• SOAP (Simple Object Access Protocol)
– XML ca XDR, HTTP ca protocol de transfer
– Baza pentru implementarea serviciilor Web
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [30]
31. Retele de calculatoare
Utilizari
• Accesul la sisteme de fisiere la distanta
NFS (Network File System)
– Sistem distribuit de fisiere (distributed file system)
– Utilizeaza filosofia sistemului de fisiere Unix
– Ierarhia de directoare NFS foloseste terminologia
Unix (arbore, director, cale, fisier etc.)
– Operatii asupra unui fisier la distanta: operatii I/O,
creare/redenumire/stergere, stat, listarea intrarilor
– Server – nfsd si client – nfs comunicind prin RPC
– Sistemul de fisiere la distanta va fi disponibil
prin comanda mount
– RFC 1094
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [31]