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