Toto je vyrovnávacia pamäť Google pre http://wiki.cnl.tuke.sk/QoSProjekt/WebRozhranieKMonitorovaciemuSyst%E9muZalo%BEen%E9muNaArchitekt%FAreIPFIX. Je to snímka stránky, ako sa zobrazila dňa 23. mar. 2009 07:03:44 GMT. Aktuálna stránka sa odvtedy mohla zmeniť. Viac informácií

Len textová verzia
 
WebRozhranieKMonitorovaciemuSystémuZaloženémuNaArchitektúreIPFIX < QoSProjekt < TWiki
r12 - 24 Feb 2009 - 11:09:19 - TomasMihokYou are here: TWiki >  QoSProjekt Web  > WebRozhranieKMonitorovaciemuSystémuZaloženémuNaArchitektúreIPFIX

Úvod

Cieľom by malo byť (a aj je) vyprodukovanie webového rozhrania k celému projektu, ktoré by malo byť do istej miery schopné kooperácie s ďalšími časťami a rovnako tak by malo byť schopné brať ohľad na schopnosti a požiadavky používateľa (JOE vs. administrátor).

Analýza

Očakávaným výstupom práce by malo byť web rozhranie k celému projektu vo forme modulárnej web aplikácie ako aj modul pre získavanie informácií z databázy. Vytvorený modul by mal okrem iného slúžiť aj ako ukážka a návod ako vytvoriť a integorvať ďalšie moduly, ktoré by rozširovali funkčnosť celej aplikácie.

Analýza sa bude skladať z týchto častí:

  • Analýza architektúry
  • Analýza možností návrhu
  • Analýza súčastného stavu
  • Analýza použitej technológie

Analýza archutektúry

//Zatial iba navrh toho co by tu malo byt - prediskutovat s Durom!!! //Momentalne citam vsetky dostupne bakalarky (11.1.2008) tak snad zajtra to tu uz bude.

1. Opis vsetkych vrstiev 2. Miesto prace v ramci architektury 3. Slovnik pomjov

Analýza možností návrhu

Cieľom práce je vytvoriť aplikáciu, ktorá implementuje funkčnosť pomocou modulov a sama o sebe slúži iba ako jadro poskytujúce prostredie pre jednotlivé moduly. Toto je možné dosiahnúť objektovým prístupom a rozhraniami, ktoré budú jednotlivé moduly implementovať. Vhodne navrhnuté a implementované "jadro" aplikácie by mohlo umožniť využiť aj funkčnosť už existujúcich častí, ktoré nemusia byť implementované pomocou rovnakej technológie ako samotná aplikácia.

Analýza súčastného stavu

V súčastnosti v rámci projektu neexistuje rozhranie, ktoré by plnilo požadované funkcie. Preto bude jeho návrh a implementácia pre projekt prínosom a umožní zastrešenie ako nových tak aj existujúcich súšastí pod jediný kontrolný bod.

Analýza použitej technológie

Pre implementačnú fázu som sa rozhodol využiť technológiu Java od spoločnosti Sun Microsystems. Hlavným dôvodom bola možnosť prenositeľnosť výstupu medzi rôznymi platformami ako aj existencie viacerých súčastí projektu, ktoré využívajú rovnakú technológiu čo bude viesť k vyššej kompatibilite. Technológia Java v sebe zahŕňa viacero súčastí, ktoré sa využívajú v konkrétnych situáciách a na špecifické úlohy. Pre tento prípad je najvhodnejším technológie J2EE (Java 2 Enterprise Edition), ktorá obsahuje nástroje pre tvorbu efektívnych webových aplikácií.

Na ukladanie dát je využívaná databáza PostgreSQL?, ktorá v čase tvorby aplikácie už existovala a preto bolo jej využitie veľmi praktické.

Pri štúdiu podobných existujúcich aplikácií som narazil na návrhový vzor, ktorý rieši problematiku návrhu webových aplikácií. Jedná sa o návrhový vzor MVC alebo Model View Controller.

Návrhový vzor MVC

Tento návrhový vzor (môže byť chápaný aj ako agregačný návrhový vzor alebo architektonický vzor) rozdeľuje aplikáciu na 3 funkčné celky:

  • Dátový model
  • Používateľské rozhranie
  • Riadiacujednotku

Dátový model reprezentuje statické dáta uložené pokope napríklad vo forme databázy. Používateľské rozhranie už podľa názvu reprezentuje grafické rozhranie aplikácie teda časť, ktorá zabezpečuje interakciu s používateľom. Riadiaca logika je kód (aplikácia), korá zabezpečuje presun a kontrolu informácií, ktoré prúdia medzi dvoma predošlími časťami. Jej hlavnou úlohou je riadenie komunikácie medzi dátami a rozhraním.

Jedná sa teda o "rozvrstvenie" aplikácie na prezentčnú, doménovú a dátovú vrstvu. Tento návrhový vzor môže byť implementovaný viacerými spôsobmi vo všeobecnosti však funguje na nasledujúcom princpe:

1. Používateľ vykoná akciu využitím GUI rozhrania (napr. stlačenie tlačidla)

2. Riadiaca jednotka obdrží informácie o tejto akcie od objektu používateľského rozhrania

3. Potom táto pristúpi k doménovej vrstve a podľa potreby ju aktualizuje (príkladom môže byť aktualizácia nákupného košíka v elektronickom obchode).

4. Využitím doménovej logiky sa vykonajú všetky potrebné úkony (napr. prepočet celkovej ceny), tieto však nie sú priamo súčasťou návrhového vzoru a sú závislé od konkrétnej aplikácie a jej zamerania.

5. Prezentačná vrstva pristúpi k doménovej a aktualizuje údaje (pohľad - z ang. view) podľa toho ako sa doménová vrstva zmenila. Je nutné podotknúť, že doménová vrstva nepotrebuje prístup k prezentačnej vrstve a to kedy sa má pohľad aktualizovať má na starosti riadiaca jednotka.

6. Prezentačná vrstva (GUI rozhranie) opäť čaká na akciu od používateľa.

V súčastnosti je k dispozícií viacero frameworkov, ktoré implementujú tento návrhový vzor. V mojom prípade výber padol na framework Wicket od nadácie Apache. Výber bol robený na základe komunikácie s viacerými programátormi, ktorí pôsobia v tejto oblasti a ich odporúčaniach. Táto technológia je novšia a implementovala pozitívne hodnotené časti ostatných frameworkov, pričom vynechala veci, ktoré používatelia nemali v obľube. Ďalším kladom je kvalitná dokumentácia celého projektu ako aj existencia pluginov do vývojového prostredia.

Návrh

Cieľom návrhu je vytvoriť rozhranie k celému projektu s dôrazom na komfort ako pre používateľov tak aj pre programátorov, ktorí by sa v budúcnosti rozhodli rozšíriť funkčnosť riešenia doplnkami. Na základe analýzy som dospel k záveru, že najjednoduchšie bude použiť framework implementujúci návrhový vzor MVC.

Súčasťou analýzy bolo aj vybrať konkrétny framework a naštudovať jeho možnosti. Vybraný bol Wicket a v súčastnosti stále študujem dostupnú literatúru (som hotový na cca 80 percent).

Návrh hlavnej aplikácie

Cieľom je implementovať do hlavnej aplikácie aboslútne minimum aby funkčnosť aplikácie nezávisela priamo od jadra ale iba od modulov. To ušetrí mnohé problémy, ktoré by sa vyskytli pri nemodulárnej aplikácii. Okrem toho sa aplikácia stane znovupoužiteľná a bude možné ju použiť aj na iné účely jednoduchou zmenou doplnkov.

Aplikáciu bude tvoriť rozhranie vytvorené jazykom HTML. Hlavnou súčasťou rozhrania budú framy, ktoré rozdelia hlavné okno na niekoľko častí. Stred obrazovky bude vyhradený pre zobrazovanie funkčnej náplne aplikácie - napr. pluginov.

//Nechcem tu ešte dávať, konkrétne zdrojáky ani grafy lebo už som začal aj implementovať a narážam na veci, ktoré vyžadujú zmenu takže to tu hodím keď budem //mať väčšiu časť uzavretú.

Návrh komunikácie medzi hlavnou aplikáciou a modulmi (API)

Pluginy budú s aplikáciou komunikovať prostredníctvom rozhrania (API), ktoré implementujú priamo pri objektovom návrhu.

//Opäť mením to každú hodinu počas toho ako to robím a nechcem to tu prepisovať po každej zmene //Zatiaľ mám jasné to, že každý modul bude môcť mať nastavenia - settings, čiže súčasťou rozhrania bude aj metóda, ktorá vykreslí stránku s nastaveniami modulu //pričomtúto implementuje pogramátor podľa svojich potrieb. Ak modul nepotrebuje nastavenia tak tam iba vypíše hlášku alebo informácie o sebe...

Návrh modulov

Pri návrhu modulov je potrebné naštudovať dokumentáciu priloženú k aplikácii a pochopiť spôsom komunikácie medzi jednotlivými frejmami. Pri tvorbe modulu je navyše potrebné použiť priložené rozhranie a implementovať metódy v ňom zahrnuté!

//Inštalácia modulu ešte nie je poriešená - buď to bude cez deploy (čo by som nechcel) alebo ho bude stačiť nakopírovať (zabaelný/rozbalený???) do priečinku a //aplikácia ho nájde sama (to by som chcel)

Odkaz

Chcel by som týmto odkázať všetkým, ktorých moje rozhodnutie používať JSP ovplyvnilo tak, že ho používajú aj oni, že najjednoduchšie ako to rozbehať na PC je nainštalovať:

1.) JDK

2.) Netbeans + Web (Je to ten 139 mb balík)

Potom nainštalovať JDK a pri inštalácii je Netbeans je voľba nainštalovať 2 servre (Tomcat a GlassFish?). Ja preferujem ten druhý ale ak chcete môžte si nainštalovať aj Tomcat. Po inštalácii a spustení Netbeans sú v ľavom hornom rohu (pod hlavnou ponukou) 3 voľby - Projects, Files a Services. Kliknite na Services a úplne dole nájdete server GlassFish?. Potom už iba pravý klik a Start.

K ovládaniu servera sa pristupuje cez http://localhost:4848 a k samotnej stráke, ktorú naprogramujete a pridáte na server (voľba Deploy) cez http://localhost:8080.

Ešte jedno info: Ak ste pri inštalácii nič nemenili tak prihlasovacie meno na server je admin a heslo adminadmin.

Požiadavky

  • JDK
  • GlassFish? V2 alebo TomCat? (GlassFish? je preferovaný)
  • PostgreSQL?

Ciele

Modularita - Stránka by mala fungovať na základe "holej aplikácie", ktorá by podporovala pridávanie modulov (napr. samostatných .war archívov). Pre každý modul by vytvorila vlastný link a ten by už fungoval samostatne

MVC Prístup - Využiť jeden z existujúcich frameworkov aby som úspešne implementoval MVC design pattern (čiže oddelenie interfejsu od funkčnej časti aplikácie). Vyýber frameworkov:

  • Struts2 - Neexistuje uspokojivý NetBeans? plugin, resp. nie je implementovaná plná funkčnosť
  • JSF - Stále prliš veľa XML
  • Wicket
  • Spring - Toto je pre XML masochistov

TO-DO

  • Dať dokopy Wiki stránku
  • Vymyslieť ako stránku vytvoriť tak aby podporovala moduly
  • Vyplniť zadávací list
  • Dať dokopy požiadavky na server kde bude aplikácia bežať
  • Vybrať framework pre MVC
  • Naštudovať Wicket

Odkazy na webe

toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
docdoc zl.doc manage 13.5 K 13 Nov 2008 - 13:44 TomasMihok v0.1
docdoc Zadávací_List.doc manage 27.5 K 12 Jan 2009 - 00:34 TomasMihok  
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r12 < r11 < r10 < r9 < r8 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback