This is an old revision of the document!


Laboratorul 06. Arhitectura client-server

Obiective laborator

  • Înțelegerea conceptelor de bază
  • Explicarea arhitecturii client-server și diferențele față de alte arhitecturi
  • Definirea rolurilor clientului și serverului în contextul aplicațiilor distribuite
  • Mecanisme de comunicare
  • Explicarea protocoalelor de comunicație între client și server (HTTP)
  • Coduri de status
  • Cum funcționează cererile și răspunsurile (request-response cycle)

Arhitectura client-server

Arhitectura client-server reprezintă un model de proiectare utilizat în dezvoltarea de aplicații distribuite. În acest model, două entități distincte comunică pentru a furniza funcționalitatea unei aplicații: clientul și serverul.

Clientul

Clientul este entitatea care inițiază cererea către server. De obicei, acesta este un utilizator final sau un dispozitiv care solicită resurse, date sau servicii de la server. Exemple de clienți includ browsere web, aplicații mobile sau desktop-uri.

Serverul

Serverul este entitatea care procesează cererea primită de la client și oferă un răspuns adecvat. Serverele stochează resursele și datele necesare și gestionează logica de afaceri a aplicației. Un server poate servi mai mulți clienți simultan.

Mecanisme de comunicare

Protocolul HTTP (Hypertext Transfer Protocol) este unul dintre cele mai utilizate protocoale de comunicare în arhitectura client-server, în special pentru aplicațiile web. HTTP definește cum trebuie să fie formatate cererile (requests) și răspunsurile (responses) între client și server.

Cererea HTTP

O cerere HTTP tipică include:

  • Metoda de cerere (GET, POST, PUT, DELETE etc.), care indică acțiunea dorită de client.
  • URI (Uniform Resource Identifier), care specifică resursa solicitată.
  • Header-uri care conțin informații adiționale despre cerere sau client.
  • Corpul cererii (body), folosit pentru a trimite date, de exemplu, în cererile POST.
Răspunsul HTTP

Răspunsul HTTP include:

  • Cod de status (ex. 200 pentru succes, 404 pentru resursă negăsită).
  • Header-uri cu informații despre răspuns sau server.
  • Corpul răspunsului, care conține datele returnate clientului (ex. un fișier HTML sau JSON).

Request-response cycle

Mecanismul de bază în arhitectura client-server este Request-response cycle.

  • Clientul inițiază o cerere către server, specificând ce resurse sau acțiuni sunt necesare.
  • Serverul prelucrează cererea și răspunde clientului cu datele solicitate sau cu un mesaj de eroare, dacă cererea nu poate fi îndeplinită.

Acest proces permite interacțiunea continuă între client și server, fiecare cerere fiind procesată independent.

Set-up

1. Pentru a începe, asigurați-vă că aveți instalat Python.

2. Verificați instalarea rulând comanda în terminal: python –version.

3. Descarcati scheletul de cod de aici.

Dacă aveți mai multe versiuni de Python instalate, selectați versiunea dorită astfel: py -3 (3.x) sau python3 (pe Linux), respectiv versiunea de package manager: py -3 -m pip sau pip3 (pe Linux)

Pentru a instala dependențe folosim package manager-ul pip:

pip install flask flask-sqlalchemy

Pentru a instala dependențele specificate într-un fișier folosim flag-ul -r:

py -3 -m pip install -r requirements.txt

py -3 app.py

Alternativă pentru Linux:

pip install -r requirements.txt

pip3 install -r requirements.txt

python app.py

python3 app.py

4. Deschideti proiectul folosind IDE-ul preferat, de exemplu Visual Studio Code cu extensia Python sau un IDE specializat pentru Python, precum PyCharm și rulați comanda pentru instalarea dependențelor din fișierul requirements.txt.

Flask-SQLAlchemy este o extensie a framework-ului Flask care facilitează lucrul cu baze de date relaționale în aplicațiile Python.

Vom folosi Flask-SQLAlchemy pentru a crea o bază de date in-memory, fără a fi necesară configurarea unui server SQL dedicat.

5. Dupa finalizarea primului TO DO pentru testare descarcati postman de aici.

Task

Completati TO DO-urile din scheletul de cod, acestea sunt self explanatory. Scopul acestora este sa intelegeti cum sa interactionati cu o baza de date prin intermediul unui server. Prin aceste metode numite endpoint-uri puteti realiza comunicarea dintre client si server.

Cititi comentariile din schelet!

Testare

Testati fiecare endpoint in parte, verificati ca functioneaza corect. Mai jos este descris un test case pe care sa-l abordati, iar de la acesta puteti sa realiza propriile voastre test case-uri.

Test Case: am adaugat 3 task-uri folosind endpoint-ul de adaugat task-uri, iar cand apelez endpoint-ul prin care obtin o lista cu task-uri acesta returneaza cele 3 task-uri adaugate anterior.

1. Pentru a gasi portul pe care API-ul vostru ruleaza inspectati consola.

2. Pentru a adauga calea verificati adnotarea fiecarui endpoint (@app.route(”/task/cale”)).

3. Verificati tipul metodei (POST/ GET/ ETC.)

isi/laboratoare/06.1731094379.txt.gz · Last modified: 2024/11/08 21:32 by alexandru.predescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0