5 lutego 2011 1 Cel Projektu Celem projektu byªo napisanie chmury która przetrzymywaªa by pliki w nomenklaturze technicznej zwanej storage controler. Dzi ki moduªowej organizacji stworzonego oprogramowania zapewnili±my du» rozszerzalno± o kolejne warstwy. Gªównym zaªo»oniem byªo umo»liwienie przetrzymywania plików na 'node'. Jednak nic nie stoi na przeszkodzie aby zwi kszy mo»liwo±ci poprzez dodanei moduªu który umo»liwiaªby przetrzymywanie plików cho by nawet na serwerze ftp lub innym plikowym systemie. 2 U»yte technologie Ze wzlg du na ró»ne zapotrzebowania strony serwera jak i klienta postanowili±my u»y dwóch ró»nych j zyków programowania. Strona serwera, zostaªa napisan w j zyku c++, który umo»liwia du»o lepsz optymalizacj pod wzgl dem wykorzystywanych zasobów jak i szybko±ci dziaªania. Bardzo przydatna okazaªa si biblioteka libcommonc++ która zapewniaªa bardzo dobr osbªug bazy danych socketów oraz w tków. U»ycie bilioteki znacznie przyspieszyªo prac nad projektem. Wa»nym elementem wykorzystywanym jest baza SQLite - jest to plikowa baza danych, która zapewnia bardzo du»e mo»liwo±ci (zagnie»d»one zapytania, transakcj, wyzwalacze) dzi ki czemu nie ust puj ona baz danych takim jak postgres, mysql. Natomiast gdy korzysta z niej jeden u»ytkownik jest du»o bardziej wydajnieszja. Podana baza znalazªa zastosowanie mi dzy innymi w Firefoxie i Androidzie. Natomiast strona clienta zostaªa napisana w j zyku java - ze wzgl du na to»e szybko± nie miaªa tak wysokiego priorystetu, natomiast szybko± tworzenia oprogramowania i ªatwo± wykrywania usterek miaªa wysoki priorytet. Zastosowanie dwóch ró»nych j zyków programowania spowodowaªa. 3 Budowa Systemu Ze wzgl du na optymalizacj budowy systemu zostaª on podzielony na 3 logicznie cz ±ci, które wykonuj odzielne czynno±ci, jednak ±ci±le ze sob poª czonych. Podane cz ±ci to: client server transfer 1
3.1 Client Gªównym stawianym celem aplikacji klienckiej jest interfejs urzytkownika, zwªaszcza jego szbko± dziaªania oraz intuicyjno±. GUI zapenia takie mo»liwo±ci jak: rejestracja u»ytkownika logowanie do serwera. pobieranie listy katalogów oraz plików znajduj cych si na serwerze pobieranie plików edycj plików wysyªanie plików na serwer. 3.2 Server Serwer jest aplikacj zarz dzaj c wszystkimi serwerami oraz kieruj cymi ruch poszczególnych plików z clienta do pozostaªych 'node' czyli pod serwerów przechowywuj cych pliki. zmiana hasªa. tworzenie konta pobranie informacji na temat konta logowanie u»ytkownika zmiana priorytet pliku tworzenie pliku ±ci ganie pliku przenoszenie pliku usuwanie pliku zmiana nazwy pliku wysªanei pliku na serwer tworzenie folderu przesªanie folderu usuwanie folderu zmiana nazwy folderu pobranie folderu 2
3.3 Transfer Transfer jest odpowiedzialny za przetrzymywanie plików na wybranym 'node'. Aplikacja czasu rzeczytsistego w której jest jeden w tke który co 30 sekund próbuj ª czy si z gªównym serwerem. Oraz pobieranie jobów do wykonania, do których nale» wysªanie pliku na serwer przy u»yciu serwera. wysªanie pliku na serwer przy u»yciu klienta. pobieranie pliku przy u»yciu klienta. pobieranie plikku przy u»yciu serwera. indeksacja 4 Wykonanie Diagram klas dla zada«wykonywanych po stronie clienta. Diagram klas dla zada«wykonywanych po stronie serwera. AccountChangePasswordJob - zadanie zmiany hasªa dla u»ytkownika AccountLoginJob - zadanie logowania u»ytkownika 3
DownloadFileFromServer - zadanie pobrania pliku z serwera FileRemoveJob - zadanie usuwania pliku FolderRemoveJob - zadanie usuwania folderu LockManager - do blokowania zasobów UploadFileToServer - zadanie wysyªania pliku na serwer AccountCreateJob - zadanie tworzenia konta AccountServer - serwer zarz dzaj cy poª czeniami z kilentami FileChangePriorityJob - zadanie zmiany priorytetu pliku FileRenameJob - zadanie zmiany pliku FolderRenameJob - zadanie zmiany nazwy katalogu Manager - gªówny zarz dzaca zada«accountgetinfojob - zadanie pobrania informacji zadania BaseAccount - konto bazowe - odpowiada za zarz dzanie w obr bie jednego u»ytkownika FileCreateJob - zadanei stworzenia pliku 4
FileUploadJob - zadanie wysªania pliku na serwer GetFolderJob - zadanie pobrania folderu Server - klasa bazowa dla serwerów (wirtualna) Account - konto u»ytkownika Database - Data acces object - pobiera dane z bazy danych FileDownloadJob - zadanie pobrania pliku FolderCreateJob - zadanie tworzenie pliku IndexServer - zadanei indeksowania zawarto±ci serwera ServerJob - klasa bazowa dla zada«serwera AccountJob - klasa bazowa dla zada«u»ytkownika DataServer - gªówny zarz dca FileMoveJob - zadanie przeniesienia pliku FolderMoveJob - zadanie przeniesienia katalogu Job - klasa bazowa zada«transferserver - klasa 'node' CommandThread - GlobalFunctions - IndexJob - Job - LocalFileTransfer SocketRead Diagram klas dla interfejsu u»ytkownika. CloudClientApp - gªówna klasa zarz dzaj ca GUI CloudClientView - formatka wy±wietlaj ca podstawowe informacj LoginForm - formatka logowania RegisterForm - formatka rejestrowania Diagram klas dla bazy danych. 5
6
7