Systemy Rozproszone – Technologia ICE

Transkrypt

Systemy Rozproszone – Technologia ICE
Systemy Rozproszone
Technologia ICE
Zespół Systemów Rozproszonych (DSRG)
Katedra Informatyki AGH – Kraków
Kornel Skałkowski
[email protected]
Opracowano na podstawie książki: Henning M, Spruiell M. – Distributed Programming with Ice, ZeroC
Systemy Rozproszone – Technologia ICE
DSRG
Agenda
•
•
•
•
•
•
•
Wprowadzenie
Architektura
Możliwości
Tworzenie własnych aplikacji
Ćwiczenie
Projekt
Literatura
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
2
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Wprowadzenie
• ICE - Internet Communication
Engine
• Stworzona przez ZeroC corporation
• Middleware do budowy obiektowych
systemów rozproszonych
• Wsparcie dla wielu platform i
języków (C++, Java, C#, Ruby,
PHP, …)
• Nacisk na obiektowość, prostotę i
wydajność
• Aktualna wersja stabilna to 3.4.2
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
3
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Dlaczego jeszcze jedna technologia?
• CORBA – wysoki poziom złożoności,
niekompatybilność middleware’ów dostarczanych
przez różnych providerów
• .NET/WCF – ograniczona ilość języków i platform
• RMI – tylko JAVA
• WS – duże narzuty, brak komunikacji
asynchronicznej
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
4
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Architektura
Źródło: M. Henning, M. Spruiell „Distributed Programming with ICE”
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
5
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Modele wywołań
• Domyślna semantyka operacji to at-most-once
• Możliwość wyspecyfikowania operacji
idempotentnych
• Domyślnie wywołania są synchroniczne, dostępnych
jest także szereg modeli asynchronicznych (m.in.
oneway czy datagram)
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
6
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Dodatkowe możliwości
• Bardzo dobra i ustandaryzowana obsługa wyjątków (w
przeciwieństwie do CORBY)
• Mnogość modeli wywołań
• Facets – widoki obiektu (przydatne np. do wersjonowania)
• Dodatkowe usługi (Freeze, Glacier, IceGrid, IceStorm,
IceBox)
• Konfigurowalność za pomocą plików .properties
• Obsługa SSL
• Automatyczne gromadzenie statystyk konsumpcji pasma
(Ice:Stats)
• Wsparcie dla urządzeń mobilnych (np. Android)
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
7
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
SLICE
• Język specyfikacji interfejsu
• Gotowe generatory kodu dla różnych języków
(slice2java, slice2cpp)
• Zwyczajowo pliki mają rozszerzenie .ice
• Wiele usług ICE ma interfejsy SLICE
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
8
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
SLICE
• Typy danych:
– Proste: int, float, bool, double, string, …
– Złożone: sekwencje, wyliczenia, struktury, …
•
•
•
•
Interfejsy, klasy
Wyjątki
Operacje idempotentne
Możliwość przekazywania obiektów przez wartość
(domyślne) i referencję (np. Printer*)
• Moduły (por. przestrzenie nazw w C++/C#)
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
9
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Tworzenie aplikacji
•
•
•
•
•
•
Definicja interfejsów w SLICE
Generacja kodu
Implementacja serwantów
Implementacja serwera
Implementacja klienta
Kompilacja, uruchomienie i testowanie
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
10
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Tworzenie aplikacji
Źródło: M. Henning, M. Spruiell „Distributed Programming with ICE”
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
11
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Przykład
• Proszę pobrać i rozpakować plik
http://galaxy.agh.edu.pl/~skalkow/dydaktyka/issr/SampleIceAPP.zip
• Strona ICE: http://www.zeroc.com/download.html
• Proszę spróbować skompilować i uruchomić
aplikacje Server i Client (dla ułatwienia projekt
można zaimportować do Eclipse)
• Proszę przeanalizować zawartość plików
FileSystem.ice/DirectoryI.java/Server.java/Client.java
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
12
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Pliki C++
• <interface>.cpp i <interface>.h
• Klient
– <interface>Prx – proxy
– <interface>Ptr – pointer
• Serwer
– Implementacja klasy <interface> która jest skeletonem z
metodami virtual
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
13
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Pliki Java
• <interface>.java – interfejs
• <interface>Holder.java – wrapper interfejsu holder
(do przekazywania jako parametr out)
• <interface>Prx.java – interfejs proxy
• <interface>PrxHelper.java – rzutowanie proxy
• *Operations* – metody interfejsu <interface>
• _<interface>Disp.java – skeleton
• pozostałe – nieistotne
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
14
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Ćwiczenie
• Proszę dodać do pliku Slice interfejs DirectoryV2
zawierający metodę listFiles listującą tylko pliki z
katalogu podanego jako argument
• Skompiluj plik za pomocą programu slice2java,
podmień zawartość katalogu /src w przykładowej
aplikacji (zachowując klasy DirectoryI, Server i
Client)
• Dodaj klasę serwanta implementującego interfejs
DirectoryV2
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
15
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Ćwiczenie
• W implementacji serwera dodaj do adaptera
serwanta DirectoryV2 jako facet o nazwie
„DirectoryV2” (wskazówka: potrzebne będą metody
ObjectPrx.ice_getIdentity() – do pobrania identity
pierwszego serwanta oraz Adapter.addFacet() – do
dodania serwanta)
• W implementacji klienta za pomocą metody
statycznej DirectoryV2PrxHelper.checkedCast(dirPrx,
"DirectoryV2") zrzutuj proxy obiektu Directory do
interfejsu DirectoryV2 i wywołaj metodę listFiles()
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
16
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Literatura
• Henning M, Spruiell M. – Distributed Programming
with Ice, ZeroC 2003-2011
• Strona internetowa ZeroC www.zeroc.com
• Blogi, fora dyskusyjne
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
17
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Projekt
• Projekt http://galaxy.agh.edu.pl/~skalkow/dydaktyka/issr/projekt.html
• Pytania???
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
18
wersja 1.01
Systemy Rozproszone – Technologia ICE
DSRG
Dziękuję za uwagę!
© 2009-2011 Daniel Żmuda, Kornel Skałkowski, DSRG
19
wersja 1.01

Podobne dokumenty