O aplicatie distribuita este construita pe cateva straturi. La cel mai jos nivel, o retea conecteaza un grup de calculatoare gazda impreuna astfel incat acestea sa poata comunica intre ele. Protocoalele de retea ca TCP/IP permit comunicarea intre calculatoare oferind posibilitatea de a impacheta, de a adreasa, si de a trimite datele unui anumit calculator. Servicii de nivel mai inalt pot fi defininite peste protocolul de retea, ca de exemplu servicii de directoare sau protocoale de securitate. Aplicatia distribuita in sine, functioneaza deasupra acestor straturi, folosind serviciile de nivel mijlociu, protocoalele de retea cat si sistemele de operare, spre a realiza sarcini coordonate in retea.
Orice aplicatie care presupune interactiunea cu un utilizator, are ca parti principale o parte de prezentare (interfata cu utilizatorul), o parte de logica a aplicatiei (calculele si cursul aplicatiei), si o parte de date (datele necesare partii de logica). Aceste parti pot fi implementate de un singur program (aplicatie monolitica), sau pot fi implementate pe mai multe nivele. Aceasta ultima varianta se imparte, la randul ei, in doua variante de implementare:
- Aplicatii two-tier (aplicatii pe doua nivele). Aceste aplicatii grupeaza partea de prezentare si partea de logica a aplicatiei pe o masina client in timp ce partea de date este situata pe o masina server, tipul de aplicatii two-tier reprezentand de altfel modelul clasic client–server.
- Aplicatii three-tier (aplcatii pe trei nivele). In cazul aplicatiilor de tip three-tier, cele trei parti sunt separate conceptual, ele putand fi situate fiecare pe un calculator diferit. Aceasta varianta permite o flexibilitate mai mare a aplicatiilor deoarece clientul poate apela la serviciile mai multor servere pentru a satisface o cerere, iar serverul la randul sau poate apela serviciile altei componente server.
In principiu o aplicatie distribuita poate fi scrisa in orice limbaj care suporta comunicarea intre doua masini. In conditiile unei diversitati destul de ridicate a configuratiilor sistemelor de calcul, independenta de platforma a unui limbaj poate constitui un adevarat avantaj.
In ceea ce priveste modul in care se desfasoara comunicatia intre componentele unei aplicatii, exista mai multe variante printre care: modelul client-server, apelarea procedurii la distanta – RPC (Remote Procedure Call), etc.