projekty zaliczeniowe

Transkrypt

projekty zaliczeniowe
Programowanie Usług Sieciowych
Zgrubne specyfikacje projektów.
Serwer nazewniczy
System klient/serwer, umożliwiający zapytania o wartość do bazy kluczy, zapisanej w sposób
trwały po stronie serwera.
Założenia, własności, warianty rozbudowy:
klient w postaci biblioteki funkcji: postać minimalna - incjalizacja
(połączenie/wyspecyfikowanie serwera), zapytanie o wartość klucza, zapytanie
odwrotne;
założenie minimalistyczne: jednoznaczność klucza i jego wartości, założenie
podnoszące poziom trudności: wieloznaczność zarówno klucza jak i wartości; przy
drugim założeniu opracowanie strategii poboru danych wielokrotnych (strumień =
łatwo czy iterator = trudno);
inicjalizacja z autoryzacją i wynikające z niej prawa dostępu (sensowne by było,
gdyby miejscem ich przechowywania była sama baza serwera nazewniczego),
ograniczające dostęp do części interfejsu;
interfejs aktualizujący dane w przestrzeni trwałej serwera;
hierarchiczność (obiekty typu "katalog" czy "kontener", zamykające podzbiory kluczy
oraz inne katalogi);
zapytania niejednoznaczne (np. oparte na wyrażeniach regularnych)
praca wieloserwerowa z mechanizmami uczenia się (cache serwerów, dzierżawa
danych);
partycjonowanie bazy, mechanizmy delegacji (autorytatywna obsługa przez jeden
serwer jedynie fragmentu bazy);
Komunikator
System peer-to-peer do przesyłania komunikatów on-line, ze scentralizowanym serwerem
rendez-vous (wiązań nick-adres).
Założenia, własności, warianty rozbudowy:
rejestracja i wyrejestrowywanie się w scentralizowanej bazie wiązań, umożliwiające
znalezienie rozmówcy poprzez nick;
przeszukiwanie bazy wiązań;
monitorowanie (w najprostszym przypadku: przez serwer wiązań) stanu klientów
(aktywny/nieaktywny);
buforowanie komunikatów kierowanych do klientów nieaktywnych (w najprostszym
przypadku: przez serwer wiązań);
możliwość przesyłania/udostępniania plików (w technologii "push" = wysyłając do
klienta lub "pull" = poprzez stworzenie warunków do downloadu);
priorytety i potwierdzenia dostarczenia;
Serwer plików zdalnych A (kopiujący)
Serwer udostępniający pliki metodą kopiowania całego pliku do systemu plikowego klienta
na czas trwania sesji plikowej.
Założenia, własności, warianty rozbudowy:
klient w postaci nowych funkcji rozszerzających funkcjonalność posiksowych open i
close; operacje wewnątrz sesji wykonywane są lokalnie, przez standardowe funkcje
read, write, lseek;
serwer współbieżny;
mechanizm blokad/transakcji, rozwiązujący problemy z synchronizacją dostępu
jednoczesnego;
system praw dostępu, niezależny od systemu platformy uruchomieniowej;
połączenie funkcjonalności serwera i klienta celem stworzenia mechanizmów
minimalizujących konieczność transportu plików lub stwarzających możliwość
pobrania ich z wielu miejsc;
Serwer plików zdalnych B (strumieniowy)
Serwer udostępniający pliki jako strumienie danych poprzez zmodyfikowany interfejs
posiksowy.
Założenia, własności, warianty rozbudowy:
realizacja w kliencie nowego interfejsu posiksowych strumieni (open,
read/write/lseek, close), realizującego wywołania funkcji bibliotecznych w przypadku
plików lokalnych oraz dodatkową funkcjonalność w przypadku zdalnych;
identyfikacja pliku zdalnego zrealizowana w formie nieprzezroczystej (z nazwy
wynika nielokalnosc oraz ewentualnie koordynaty serwera) lub przezroczystej
(trudniej!);
serwer współbieżny w modelu jedna sesja kliencka na jeden element aktywny (proces,
wątek) serwera;
blokady dostępu jednoczesnego (na poziomie całego pliku = wariant prosty, na
poziomie np. regionów pliku = wariant skomplikowany);
system praw dostępu rozszerzający odziedziczony po systemie uruchomieniowym (lub
od niego niezależny);
funkcje katalogowe po stronie zdalnej;
Pamięć rozproszona z przezroczystym dostępem
Podstawowym założeniem projektu jest uzyskanie interfejsu dostępowego do pamięci
maksymalnie ukrywającego przed użytkownikiem fakt jej rozproszonego (zdalnego)
charakteru. Proponowane rozwiązanie to definicja klasy (klas) w języku C++
implementującej jakąś strukturę dynamiczną, której elementy są w sposób transparenty
ściągane do przestrzeni adresowej klienta z sieci. Mile widziane wykorzystanie możliwości
przeciążenia operatorów = oraz []. Rozbudowa o możliwość współdzielenia pamięci, wraz z
systemem zabezpieczeń przed niespójnością jednoczesnych zmian.
Zdalne wykonywanie programów o ustalonej logice
System umożliwiający wykonywanie programów na zdalnej maszynie, przy zachowaniu
możliwości zasilania ich danymi wejściowymi i odbioru danych wyjściowych w środowisku
lokalnym.
Założenia, własności, warianty rozbudowy:
w najprostszym przypadku realizacja logiki dane ze standardowego wejścia przetwarzanie - wyniki na standardowe wyjście;
interpreter poleceń, pozwalający na delegację zadania do sieciowego serwera
uruchomieniowego i stosowne podłączenie strumieni wejściowych i wyjściowych do
gniazd sieciowych;
znajdowanie "najlepszego" serwera do delegacji, na podstawie statycznych (łatwo) lub
dynamicznych (trudno) przesłanek maksymalizujących wydajność przetwarzania;
założenie heterogeniczności systemów i przesyłanie nie obrazów aplikacji binarnych a
źródeł w ustalonym, standardowym języku programowania i ich (w razie
konieczności) kompilacja na serwerze zdalnych uruchomień;
monitory obciążenia;
Mariusz Jarocki, 22/12/2004