programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/psi/psi_7.pdf · • rpc paslėpia visus...

62
Programų sistemų inžinerija 8 paskaita Paskirstytų sistemų architektūros

Upload: vuongthu

Post on 18-Aug-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Programų sistemų inžinerija

8 paskaita

Paskirstytų sistemų architektūros

Page 2: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Tikslai

Paaiškinti paskirstytų sistemų architektūros

privalumus bei trūkumus

Paaiškinti skirtumus tarp kliento-serverio ir

paskirstyto objekto architektūros

Išnagrinėti objekto užklausos tarpininkus ir

pagrindinių CORBA (Common Object Requesting

Broker Architecture) standartų principus

Paaiškinti lygiaverčių ryšių (peer-to-peer) ir į

paslaugas orientuotas architektūras (SOA) kaip naujus

paskirstytų skaičiavimų modelius.

Page 3: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Nagrinėjamos temos

Kliento-serverio architektūra

Paskirstytų objektų architektūra

RPC

DCOM

CORBA (Common Object Request Broker Architecture)

Page 4: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Programų sistemų tipai

Personalinės sistemos, kurios nėra paskirstytos ir

yra suprojektuotos veikti personaliniame

kompiuteryje ar darbo stotyje

Įterptinės sistemos, kurios veikia viename

procesoriuje ar integruotoje procesorių grupėje

Paskirstytos sistemos, kur sistemos programinė

įranga veikia laisvai integruotoje grupėje

bendradarbiaujančių procesorių, sujungtų tinklu

Page 5: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytos sistemos

Iš esmės, dabar visos didelės kompiuterinės sistemos

yra paskirstytos sistemos.

Informacijos apdorojimas yra paskirstytas keletui

kompiuterių, o ne vienai mašinai.

Paskirstytos programinės įrangos inžinerija dabar yra

labai svarbi.

Paskirstytų programų sistemų pavyzdžiai: • E-paštas (klientas – MS Outlook, serveris – MS Exchange)

• WEB (klientas – IE, Firefox, serveris – Apache, TomCat)

• IS (klientas – klientinė programa, serveris MS SQL, Oracle, DVB2)

Page 6: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytų sistemų privalumai

Resursų dalijimasis

Atvirumas

Lygiagretiškumas

Išplečiamumas

Klaidos toleravimas

Skaidrumas

Page 7: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytų sistemų trūkumai

Sudėtingumas

Saugumas

Valdymo problemos

Nenuspėjamumas

Page 8: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytų sistemų architektūra

Kliento-serverio architektūra

• Paskirstyti servisai yra iškviečiami klientų. Serveriai,

kurie tiekia servisus yra traktuojami skirtingai nei

klientai, kurie naudojasi servisais.

Paskirstytų objektų architektūra

• Nėra skirtumo tarp klientų ir serverių. Bet kuris objektas

sistemoje gali tiekti ir naudotis servisus iš kitų objektų.

Page 9: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Tarpinė programinė įranga (Middleware)

Programinė įranga kuri valdo ir palaiko skirtingus

paskirstytos sistemos elementus. Iš esmės, ji “sėdi”

sistemos viduryje ir tarpininkauja.

Tarpinės programinės priemonės yra paprastai

standartizuotos, o ne specialiai sudaryta programinė

įranga.

Pavyzdžiai • GRID tarpinė programinė įranga (gLite, Unicore)

• Kompiuterių klasterio tarpinė įranga (Rocks Cluster, Oscar, SGE)

Page 10: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Kliento-serverio architektūra

Taikomoji programa yra sumodeliuota kaip serverių

teikiamų paslaugų ir vykdančių užduotis aibė ir jas

naudojančių klientų aibė. Klientai siunčia užklausą

su prašymu suteikti paslaugą ir apdoroja gautus

rezultatus (formatuoja rezultatus, GUI).

Klientai žino apie serverius, bet serveriai nebūtinai

žino apie klientus.

Klientai ir serveriai yra loginiai procesai.

Page 11: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Kliento-serverio sistema

s 1

s 2 s 3

s 4 c 1

c 2 c 3 c 4

c 5

c 6 c 7 c 8

c 9

c 1 0

c 1 1

c 1 2

Serverio procesas

Kliento procesas

Page 12: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

1

2

Kliento-serverio sistema

MS AD DB serveris Failų serveris

Klientas Klientas

Klientas siunčia užklausą serveriui, gavęs rezultatus juos

formatuoja ir pateikia vartotojui. Kliento įvedami

duomenys siunčiami serveriui, kuris įvykdo pakeitimus.

Page 13: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Lengvi (thin) ir sunkūs ( fat) klientai

Lengvo kliento modelis

• Lengvo kliento modelyje visų programų vykdymas ir duomenų

valdymas yra vykdomas serveryje. Klientas yra atsakingas tik

už atvaizdavimo programinės įrangos veikimą.

(Naršklė – WEB serveris, RDP – MS Windows OS)

Sunkaus kliento modelis

• Šitame modelyje serveris yra atsakingas tik už duomenų

valdymą. Kliento programinė įranga įgyvendina taikymus ir

sąveiką su sistemos vartotoju. (Outlook – Exchange, Excel – MS SQL)

Page 14: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Lengvi ir sunkūs klientai

Klientas

Klientas

Serveris

Serveris

Lengvo klientomodelis

Sunkaus klientomodelis

Atvaizdavimas

Taikomosios programos vykdymas

Duomenųvaldymas

Taikomosios programos vykdymas

Atvaizdavimas

Duomenųvaldymas

Page 15: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Lengvo kliento modelis

Naudojamas, kai sistemos yra perkeliamos į kliento

serverio architektūrą. • Tokia sistema veikia kaip serveris su grafine sąsaja, kuri yra

realizuota kliente

Pagrindinis trūkumas yra tas, kad labai apkraunamas

serveris ir tinklas.

Page 16: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Sunkaus kliento modelis

Daugiau skaičiavimų yra pavesta klientui, kai

programos vykdymas atliekamas lokaliai

Tinkamiausias naujoms kliento/serverio sistemoms,

kur kliento sistemos galimybės yra žinomos iš anksto

Sudėtingesnis nei lengvo kliento modelis, ypač

valdyme. Naujos programos versijos turi būti įdiegtos

visuose klientuose

Page 17: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Kliento-serverio architektūra banko

automatų sistemoje

ATM

ATM

ATM

ATM

Sąskaitos serveris

Duomenųapdorojimomonitorius

Klientosąskaitosduomenys

Page 18: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Programų sistemų sluoksnių

architektūra

Atvaizdavimo sluoksnis

• skirtas sistemos vartotojų skaičiavimo rezultatų

atvaizdavimui ir vartotojo duomenų įvedimui

Taikomosios programos vykdymo sluoksnis

• Skirtas programos specifiniam funkcionalumui, pvz.,

banko sistemoje, tokios banko funkcijos kaip sąskaitos

atidarymas, sąskaitos uždarymas ir t.t.

Duomenų valdymo sluoksnis

• Skirtas sistemos duomenų bazių valdymui

Page 19: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Trijų lygių architektūra

Trijų lygių architektūroje, kiekvienas iš programos

architektūros sluoksnių gali būti vykdomas atskirame

procesoriuje.

Leidžia pasiekti didesnį našumą, nei lengvo kliento metodas ir

yra lengviau valdomas nei sunkaus kliento metodas.

Labiau plečiama architektūra – padidėjus poreikiui, gali būti

prijungiami papildomi serveriai

Page 20: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Trijų lygių kliento/serverio

architektūros schema

Atvaizdavimas

Klientas

Serveris Serveris

Taikomosios programos vykdymas

Duomenųvaldymas

Page 21: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Internetinė bankinė sistema

SQL

Klientas

Klientas

Klientas

Klientas

HTTP s sajaą

SQL užklausaTinklo serveris Duomenų bazė

Sąskaitų paslaugųteikimas

Kliento sąskaitosduomenys

Page 22: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

N-lygių kliento serverio modelis

Didžioji dalis šiuolaikinių programų sistemų yra N lygių.

N-lygių sistema – tai tipinė žiniatinklio sistema, kur užklausos persiunčiamos į visą eilę įvairias paslaugas teikiančius serverius.

Klientas w

eb

serv

eris

Jav

a ap

lika

cijų

se

rver

is

apkr

ovos

bal

ansa

s

fire

wal

l

fire

wal

l

Duomenų bazė

Objektų saugykla

Page 23: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Kliento-serverio architektūros

naudojimas

Architektūra Taikymas

Dviejų lygių K/S architektūra su lengvais klientais

Liktinės sistemos, kuriose atskirti taikomuosius skaičiavimus ir duomenų valdymą yra nepraktiška. Tai intensyvių skaičiavimų taikymai, tokių kaip kompiliatoriai be arba su labai mažu duomenų valdymu (duomenys atmintyje). Taip pat užklausų ir paieškų taikymai beveik be taikomųjų skaičiavimų.

Dviejų lygių K/S architektūra su sunkiais klientais

Taikymai, kur taikomieji skaičiavimai atliekami kliente, užbaigtų sistemų pagalba (COTS), kaip Microsoft Exel. Taip pat taikymai, kur reikia intensyvių skaičiavimų duomenų apdorojimui, kaip duomenų avaizdavimui arba kur yra stabilios, gerai apibrėžtos galinio vartotojo funkcijos.

Trijų lygių arba daugelio lygių K/S architektūra

Didelės apimties taikymai su šimtais ar tūkstančiais klientų , kai nepastovūs duomenų bei taikymų skaičiavimai, kai integruojami duomenys iš daugelio šaltinių.

Page 24: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytų lygiaverčių objektų

architektūra

Paskirstytų lygiaverčių objektų architektūroje tarp klientų ir

serverių nėra skirtumų (pvz. P2P)

Kiekviena paskirstoma esybė yra objektas, kuris tiekia

servisus kitiems objektams ir priima servisus iš kitų objektų

Objektai bendrauja per tarpines programines priemones,

vadinamas objekto užklausos tarpininku (ORB)

Tai sudėtingiau projektuojam nei kliento serverio sistemas.

Page 25: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Lygiaverčių ryšių architektūros

Lygiaverčių ryšių (P2P) sistemos yra decentralizuotos

sistemos, kur skaičiavimai gali būti vykdomi bet kuriame

tinklo mazge.

Tokia sistema skirta efektyviai išnaudoti daugelio tinklo

kompiuterių skaičiavimų resursus.

Dauguma P2P sistemų buvo personalinės sistemos, bet ši

technologija vis labiau plinta ir verslo sistemose.

P2P sistemose nereikalingas centralizuotas valdymas ir

kontrolė.

Page 26: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytų objektų architektūra

o1 o2 o3 o4

o5 o6

S (o1) S (o2) S (o3) S (o4)

S (o5) S (o6)

Programinės įrangos magistralė

Page 27: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Privalumai

Paskirstytų lygiaverčių objektų architektūra leidžia

sistemos projektuotojui neapibrėžti kur ir kaip

paslaugos turėtų būti teikiamos

Tai labai atvira sistemos architektūra, kuri leidžia

prijungti naujus resursus pagal reikalavimus

Sistema yra lanksti ir išplečiama

Įmanoma dinamiškai keisti sistemos konfigūraciją su

objektais migruojančiais per tinklą.

Page 28: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Komunikacijos principai

Tinkle programų sistemos komunikuoja siųsdamos viena kitai

pranešimus (messages). Pranešimų kontekste programos gali būti:

Siuntėjas – programa, kuri suformuoja ir išsiunčia pranešimą.

Gavėjas – programa, kuriai skirtas pradinio siuntėjo

suformuotas pranešimas.

Tarpininkas – programa, kuri persiunčia pranešimą galutiniam

gavėjui arba sekančiam tarpininkui.

Tarpininkas paprastai nekeičia paties pranešimo turinio, tačiau

gali keisti jo meta-duomenis, įdėti jį į eilę, valdyti transakcijas.

Page 29: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Komunikacijos sluoksniai

Page 30: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Nuotolinis procedūrų kvietimas (RPC)

Paskirstytos sistemos turi sąveikauti t.y. apsikeiti pranešimais, duomenimis ir t.t..

Žemo lygio tinklo specifikacijos turi būti paslėptos nuo programų, todėl naudojami API.

Nuotolinis procedūrų kvietimas (RPC) – tai komunikacinė technologija, skirta komunikacijoms tarp procesų užtikrinti, kurios pagalba galima iškviesti funkciją nutolusiame kompiuteryje.

Programuotojas rašo tokį pat kodą, lyg dirbtų su lokalia funkcija.

Page 31: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Įprastinis procedūros kvietimas

Įprastinis procedūros kvietimas programose atliekama

naudojant call & return veiksmus. Nors kompiliatorius

realiai atlieka tokius veiksmas:

• Parametrų perdavimą

• Lokalių kintamųjų deklaravimą

• Duomenų grąžinimą

Pavyzdys: x = skaičiuok (a, “testas”, 5);

Kompiliatorius sugeneruoja tokį kodą:

a. Patalpina reikšmę 5 į steką

b. Patalpina eilutės „testas“ adresą į steką

c. Patalpina kintamojo a reikšmę į steką

d. Generuoja funkcijos skaičiuok() kvietimą

Page 32: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

RPC paskirtis

RPC tikslas – simuliuoti lokalios procedūros kvietimą panaudojant API.

RPC nepriklauso nuo kompiuterio architektūros ar OS.

Toks požiūris leidžia RPC būti pogramavimo kalbos lygmens konstrukcija vietoj OS lygio konstrukcija.

Page 33: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

RPC nauda

Realizuojama įprastinė procedūrų kvietimo sąsaja.

Paskirstytų programų kūrimas supaprastinas

• RPC paslėpia visus tinklinius procesus API

• Programuotojas nesirūpina apie lizdus, portų numerius,

bitų sekasi r t.t.

RPC priskiriamas prezentacijų lygmeniui OSI

modelyje.

Page 34: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

RPC programavimas

Programavimo kalbos

• Dauguma programavimo kalbų (C, C++, Java, …) neturi realizuotų RPC procedūrų – tai reiškia, kad šių kalbų kompiliatoriai negeneruoja kliento ir serverio programų automatiškai

Sprendimas:

• Naudoti atskirą kompiliatorių (pre-compiler), kuris atliktų šiuos veiksmus.

Page 35: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Sąsajos apibrėžimo kalba (Interface Definition Language)

IDL leidžia programuotojui apibrėžti RPC sąsają (vardus, parametrus, grąžinamas reikšmes)

C++ like sintaksė

Pre-kompiliatorius gali būti naudojamas generuojant kliento ir serverio programų dalis.

Pre-kompiliatorius veikia panašiai kaip klasių šablonai ar funkcijų prototipai

Suderinamumas (mappings): • C, C++, Java, COBOL, Smalltalk, ADA, Lisp, Python

Page 36: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

RPC kompiliavimas

IDL RPC

compiler

Kliento kodas (main)

Serverio funkcija

kliento dalis

antraštės

serverio šablonas

duomenų konvert.

duomenys. compiler

compiler Serveris

Klientas

Programuotojo kodas

RPC kompiliatoriaus kodas

Page 37: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

IDL pavyzdys CORBA

Page 38: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

IDL pavyzdys

Page 39: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

IDL pavyzdys

Kodas sugeneruotas, idl2java kompiliatoriaus:

Page 40: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

RPC implementacijos

DCE RPC

DCOM

CORBA

Java RMI

XML RPC,

SOAP /.NET,

AJAX, REST

RPC – populiari paradigma kliento serverio architektūrai kurti.

Žemiau pateikti įvairios RPC principų realizacijos:

Page 41: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

DCOM

Pagrindinės savybės • DCOM - tik Microsoft palaikomas RPC sprendimas

• Palaiko lygiagrečiai daug klientų

• Suderintas su DCE RPC

• Reikalauja specialios ugniasienės konfigūracijos, nes pranešimai siunčiami

dvejetainiame formate, todėl ugniasienė tai laiko kenkėjiška veikla.

Distributed Component Object Model (DCOM) – tai Microsoft

technologija, skirta komunikacijoms tarp programinių komponentų,

paskirstytų tinkle realizuoti.

Tradiciniai COM komponentai gali realizuoti komunikacijas tarp

procesų, dirbančių vienos mašinos rėmuose.

Page 42: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

DCOM konifgūravimas

dcomcnfg.exe komandos langas

Page 43: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA

CORBA (Common Object Request Broker Architecture)

yra tarptautinio standarto objekto užklausų tarpininkas –

tarpinė programa, skirta bendravimo tarp paskirstytų

objektų valdymui,

CORBA apibrėžė Objektų Valdymo Grupė (OMG)

CORBA – tai OMG sukurtas nuo gamintojo

nepriklausoma specifikacija skirta apibrėžti

komunikacijų architektūrą naudojamą paskirstytose

tinklinėse aplikacijose.

Alternatyva - Microsoft DCOM.

Page 44: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA

CORBA – tai priemonė (specifikacija), kurios pagalba

galima užtikrinti, jog bet kokio gamintojo programų

sistemos, veikiančioms bet kurioje operacinėje

sistemoje, parašytomis bet kuria programavimo kalba

veikti drauge (komunikuoti) panaudojant CORBA

sąsajas, sukurtas bet kurio gamintojo, parašytas bet kuria

kalba ir veikiančias bet kurioje operacinėje sistemoje.

Page 45: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA logika

Objektas Klientas

ORB

Page 46: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA veikimo schema

Client

App. / Applet

IDL

Stub

ORB

Servant

(Server)

Skeleton

ORBIIOP

POA

Client Call

Return Value

Page 47: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA sudėtiniai elementai

IDL

• Interface Definition Language

Kliento - serverio CORBA objektai

• Abstraktūs objektai, kuriami konkrečioms objektų

implementacijos

ORB (Object Request Broker)

• valdo prašymus skirtus objektų servisams

GIOP / IIOP

• General and Internet Inter-Object Protocols

Page 48: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA architektūra

Page 49: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

CORBA objektai

CORBA objektai yra palyginami su C++ ir Java

objektais

Jie privalo turėti skirtingus sąsajos apibrėžimus,

išreiškiamus naudojant bendrą kalbą (IDL)

Objektai, aprašyti skirtingomis programavimo kalbomis,

gali tarpusavyje bendrauti, nes naudojama IDL.

Page 50: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Objektų užklausų brokeris (ORB)

ORB valdo objektų bendravimą. Jis žino visus sistemos

objektus ir jų sąsajas. • Suranda reikiamus objektus

• Persiunčia užklausą ir gautus rezultatus

• Informuoja kitus ORB apie savo veiksmus

Naudojant ORB, kviečiantis objektas pririša IDL „kelmą”

(“stub”), nustatantį kviečiamo objekto sąsają.

Rezultatas gaunamas kreipiantis į ORB, kuris kviečia

reikalaujamą objektą per paskelbtą IDL šabloną

(skeleton) ir susieja sąsaja su serviso realizavimu.

Page 51: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

ORB objektų bendravimas

Page 52: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Išorinis-ORB bendravimas

ORB dažniausiai nėra atskiros programos, o yra

objektų rinkinys bibliotekoje, kuris susiejamas su

kuriama programa.

ORB valdo bendravimą tarp objektų naudojamų

tame pačiame mechanizme.

Gali būti prieinami keletas ORB ir kiekvienas

kompiuteris paskirstytoje sistemoje turės savo ORB

Išorinio ORB bendravimai yra naudojami paskirstytų

objektų kvietimams.

Page 53: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Išorinis-ORB bendravimas

o 1 o 2

S ( o 1 ) S ( o 2 )

I D L I D L

o 3 o 4

S ( o 3 ) S ( o 4 )

I D L I D L

Objektų užklausos

tarpininkas (ORB)

Objektų užklausos

tarpininkas (ORB)

Tinklas

Page 54: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

DCOM ir CORBA

DCOM palaiko OO modelį, nors nepalaiko tokių

savybių kaip polymorfizmo. Paslaugos teikiamos per

keletą skirtingų sąsajų.

CORBA – tai atvira OMG specifikacija, palaikoma

skirtingų gamintojų.

CORBA gali būti naudojama žymiai platesnėje

aplinkoje, nes priešingai nei DCOM palaikoma

visose operacinėse sistemoje, tuo tarpu DCOM

naudojama tik Windows aplinkoje.

Page 55: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytos žiniatinklio sistemos

Paskirstytose žiniatinklio (web) programų sistemose

naudojami (pvz. web clawler, monitoringo sistemos)

naudojami kiti programų sistemų modeliai:

SOA (service oriented architecture) – grindžiama

veiksmų atlikimu.

ROA (resources oriented architecture) – grindžiama

duomenų apdorojimu.

Page 56: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

SOA (service oriented architecture)

SOA – tai naujas programinės įrangos architektūros

modelis, pagrįstas paslaugų teikimu.

Paslauga – tai standartizuota pasikartojanti verslo užduotis,

pvz., patikrinti, ar prekė yra sandėlyje, arba prekės

pardavimo procedūra. Kiekviena didesnė įmonė turi

daugybę tokių sukurtų paslaugų, ir visos jos turi

„bendradarbiauti“ tarpusavyje.

SOA pagrindas - standartizuotas centrinis modulis (Enterprise

service bus), per kurį jungiami visi kiti moduliai. Šis modulis

užtikrina, kad visos paslaugos naudotų vienodus standartus,

jungia ir transformuoja skirtingus standartus ir sumažina jungčių

skaičių. Visos paslaugos yra derinamos tik prie centrinio

modulio, todėl jas lengva pakeisti kitomis.

Page 58: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

ROA (resources oriented architecture)

ROA – tai programinės įrangos architektūros

modelis, grindžiamas resursais ir jų apdorojimu.

ROA naudoja 4 pagrindines operacijas resursams

apdoroti: GET, PUT, POST ir DELETE

ROA remiasi REST (representational state transfer)

arba HTTP servisais

Page 59: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

REST principai

REST architektūros principais:

Konkretų resursą identifikuoja URI, kuriuo kreipiamasi į web

servisą

HTTP GET užklausa naudojama paimti resurso turiniui, kuris

grąžinamas HTTP atsakyme

HTTP PUT arba POST užklausa naudojama resursui keisti

arba naujam resursui sukurti. Užklausos kūne nurodomas

naujasis resurso turinys

HTTP DELETE užklausa naudojama resursui trinti

Pranešimų turinys dažniausiai koduojamas XML, Jason

formatu

Komunikacijoms naudojamas HTTP protokolas

Page 60: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

REST privalumai

Paprastumas

Komunikacijai naudojamas vienintelis HTTP protokolas

Pakanka keturių operacijų: GET, POST, PUT ir DELETE

Universalumas

HTTP protokolą supranta bet kokia tinklo programinė įranga, jį

palaiko praktiškai visi programavimo karkasai

Web servisą galima iškviesti su bet kuria naršykle, įrašius jo

atstovaujamo resurso URL į adresų lauką

Prieinamumas

Jei REST publikuojama XML informacija, ji tampa pasiekiama

HTML puslapiuose (per nuorodas) ir XML dokumentuose.

Page 61: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Paskirstytos sistemos remia resursų dalinimą, atvirumą,

lygiagretiškumą, išplečiamumą, klaidų toleranciją ir

permatomumą.

Kliento-serverio architektūra apima serverių teikiamus

servisus programoms, veikiančioms kliento pusėje.

Vartotojo sąsajos programinė įranga visada veikia pas klientą

ir duomenys valdomi serveryje. Taikomosios programos gali

būti pas klientą arba serveryje.

Paskirstytų lygiaverčių objektų architektūroje nėra skirtumo

tarp klientų ir serverių.

Santrauka

Page 62: Programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/PSI/PSI_7.pdf · • RPC paslėpia visus tinklinius procesus API • Programuotojas nesirūpina apie lizdus, portų numerius,

Santrauka

Paskirstytų objektų sistemos reikalauja tarpinių programinių

priemonių objektų bendravimui.

CORBA standartai yra tarpinių programinių priemonių aibė,

kuri remia paskirstytų objektų architektūras.

Paskirstytų žiniatinklio programų sistemoms dažnai

naudojama SOA ir ROA architektūros modeliai.