Semestrálnà práce (2004/2005):
Vytvoøte systém pro distribuci zpráv zpravodajskou agenturou.
Základnà úloha:
Vytvoøte CORBA server, který bude zaji¹»ovat distribuci zpráv
zpravodajskou agenturou skrz jednotlivé zpravodajské
kanály, jednoduchĂ©ho klienta pro pøĂjem zpráv a
administrátorskou konzoli pro správu serveru a rozesĂlánĂ zpráv.
Server bude implementovat nìkolik druhĂą rozhranĂ:
- RozhranĂ zastupujĂcĂ server jako celek. Referenci na implementaci tohoto rozhranĂ server zaregistruje u sluÂľby Naming Service.
Operace tohoto rozhranà budou umo¾òovat:
- Zjistit seznam zpravodajských kanálù.
- ZĂskat referenci na zpravodajskĂ˝ kanál.
- RozhranĂ reprezentujĂcĂ jeden zpravodajskĂ˝
kanál. Od tohoto rozhranĂ bude v jednom procesu vĂce objektĂą.
Toto rozhranĂ bude poskytovat operace pro:
- ZĂskánĂ bli¾¹Ăch informacĂ o kanálu.
- Pøihlá¹enĂ klienta pro pøĂjem zpráv zaslánĂ˝ch timto kanálem.
- Odhlá¹enà ji¾ pøihlá¹eného klienta z tohoto kanálu.
- ZĂskánĂ seznamu klientĂą pøihlá¹enĂ˝ch do tohoto kanálu.
- Odhlá¹enà v¹ech klientù.
- Zaslánà zprávy (jejà rozeslánà v¹em pøihlá¹eným klientùm).
RozhranĂ
urèenĂ© pro zprávu serveru. Toto rozhranĂ je urèenĂ© pouze pro pouÂľitĂ
administrátorskou konzolĂ. Toto rozhranĂ bude taktĂ©Âľ registrovanĂ© u
Naming Service. Toto rozhranĂ bude poskytovat operace pro:
- Vytvoøenà nového kanálu
- Smazánà kanálu
- Zji¹tìnà seznamu v¹ech posluchaèù (klientù).
- Odhlá¹enĂ konkrĂ©tnĂho klienta ze vÂąech zpravodajskĂ˝ch kanálĂą na tomto serveru, do kterĂ˝ch je pøihlá¹en.
Technická poznámka: Toto rozhranĂ mù¾e bĂ˝t definováno jako rozÂąĂøenĂ rozhranĂ (1).
Administrátorská konzole bude pøedevÂąĂm vyuÂľĂvat administrátorskĂ©
rozhranĂ serveru, ale bude implementovat i svĂ© CORBA rozhranĂ. NenĂ nutnĂ© k nĂ vytváøet sloÂľitĂ© uÂľivatelskĂ©
rozhranĂ, jednoduchĂ© textovĂ© rozhranĂ vyuÂľĂvajĂcĂ standardnĂ vstup a
vĂ˝stup plnì postaèĂ.
- Administrátorská konzole musà poskytovat operace
pro:
- Vytvoøenà nového kanálu
- Smazánà kanálu
- Zaslánà zprávy do kanálu
- Vypsánà seznamu kanálù
- Vypsánà seznam klientù pøihlá¹ených do vybraného kanálu
- Administrátorská konzole dále bude implementovat CORBA rozhranĂ,
kterým ji server bude informovat o dùle¾itých událostech. Toto rozhranà bude
zejmĂ©na pøijĂmat události o:
- Pøihlá¹enà a odhlá¹enà klienta do/z nìjakého kanálu
- Neúspì¹né doruèenà zprávy klientovi
HlavnĂmi Ăşkoly klienta je pøihlásit se do vybranĂ˝ch zpravodajskĂ˝ch
kanálĂą a pøijĂmat z nich zprávy. Pro implementaci klienta staèà tĂ©Âľ
velmi jednoduchĂ© uÂľivatelskĂ© rozhranĂ pomocĂ standardnĂho vstupu a
vĂ˝stupu. Klient bude takĂ© implementovat CORBA rozhranĂ, kterĂ© bude
umo¾òovat následujĂcĂ operace:
- Pøijmout zprávu zaslanou skrz diskusnà skupinu.
- VrátĂ
seznam zpravodajskĂ˝ch kanálĂą, do kterĂ˝ch je klient pøihlá¹en. (SouèástĂ
vrácené informace mù¾e být i identifikace serveru, pod který daný kanál
patøĂ).
OÂąetøete v serveru pøĂpad, kdy klient pøestane pøijĂmat CORBA volánĂ
(byl ukonèen) ani¾ by se odhlásil ze zpravodajských kanálù - tento fakt by
nemìl vĂ˝raznì ovlivnit zasĂlánĂ zpráv ostatnĂm klientĂąm. Opakovanou chybu pøi doruèenĂ je moÂľnĂ© povaÂľovat za ¾ádost o odhlá¹enĂ.
RozÂąĂøená Ăşloha (varianta A - rozÂąĂøenĂ funkcionality):
Roz¹iøte základnà úlohu o alespoò dva z tìchto bodù:
- Základnà úloha pøedpokládá, ¾e klient bude pracovat pouze s
jednou zpravodajskou agenturou, jejĂÂľ CORBA referenci zĂská z
NamingService na základì pøedem známého jména. Roz¹iøte klienta o
souèasnou práci s vĂce zpravodajskĂ˝mi agenturami (vĂce instancemi
serveru. Tedy, aby napø. klient mohl bĂ˝t souèasnì pøihlá¹en do vĂce
kanálù na rùzných serverech. Toto samozøejmì musà být podporováno i
uÂľivatelskĂ˝m rozhranĂm. Reference mù¾e klient napøĂklad zĂskat
prohledávánĂm NamingService a vĂ˝bìrem podle kind.
- Rozdìlenà rozhranà ke kanálu na administrátorskou a u¾ivatelskou èást.
Hodnocenou souèástĂ tohoto rozÂąĂøenĂ Ăşlohy je i správnĂ˝ vĂ˝bìr operacĂ
do jednotlivĂ˝ch rozhranĂ.
- Poskytnìte na rozhranĂ zpravodajskĂ©ho kanálu operaci pro obnovenĂ
pøihlá¹enĂ, která klientovi
za¹le v¹echny zprávy, které byly kanálem rozeslány v dobì, kdy klient
nebyl schopen pøijĂmat zprávy. Poskytnìte i operaci pro pozastavenĂ
pøihlá¹enĂ
(napø. pøed odpojenĂm od sĂtì) . Ukládejte zprávy, kterĂ© mìly bĂ˝t
zaslány klientovi s pozastavenĂ˝m pøihlá¹enĂm. SystĂ©mová vĂ˝jimka
pøi pokusu doruèit klientovi zprávu se implicitnì pova¾uje také za
¾ádost o pozastavenà pøihlá¹enà - které se vztahuje u¾ i na zprávu, pøi
jejĂmÂľ doruèovánĂ vĂ˝jimka nastala.
RozÂąĂøená Ăşloha (varianta B - persistentnĂ reference):
Zajistìte, aby si klient i server externì ukládali stavová data (zejména
server seznam zpravodajských kanálù a seznam klientù do nich pøihlá¹ených)
tak, aby restart jednoho procesu (klienta, serveru) byl pro server
(klienta) transparentnĂ.
Tj.,
po restartu serveru na nìm budou existovat v¹echny pùvodnà zpravodajské
kanály v nich budou pøihlá¹enà v¹ichni klienti, kteøà tam byli
pùvodnì pøihlá¹eni. Po restartu klienta budou dál korektnì doruèovány
zprávy (pokud server nezdetekoval chybu bìhem restartu klienta, nemìl
by se o restartu dozvìdìt).
StaèĂ, kdyÂľ budete podporovat ĂşmyslnĂ˝ restart, nemusĂte bĂ˝t schopni øeÂąit pád v libovolnĂ˝ okamÂľik.
Datum zadánà úlohy: 29.3.2005
Datum odevzdánĂ pøedbì¾nĂ© verze IDL specifikace rozhranĂ: 10.4.2005
Datum odevzdánĂ: 3.5.2005
Nahlá¹enà slo¾enà týmù: do 5.4.2005
ZpĂąsob odevzdánĂ:
Vypracované zápoètové úlohy mi za¹lete e-mailem. Proto¾e zadánà zámìrnì
nespecifikuje v¹echny detaily, musà odevzdaná práce obsahovat
dokumentaci (tedy struèný popis toho co vá¹ program dìlá, jak to dìlá,
jakým zpùsobem se program pou¹tà a ovládá). Rozsah dokumentace by nemìl pøekroèit 1 strana A4.
HodnocenĂ, podmĂnky udìlenĂ zápoètu:
Za základnĂ Ăşlohu lze zĂskat maximálnì 40 bodĂą, za bonusovou Ăşlohu pak
maximálnì dalÂąĂch 13 bodĂą. Za kaÂľdĂ˝ den zpoÂľdìnĂ oproti datu odevzdánĂ
se strhávajĂ 4 body. Nutnou a postaèujĂcĂ podmĂnkou udìlenĂ zápoètu je
vyøe¹enà alespoò základnà úlohy. U zkou¹ky bude 100 bodù "tvoøit" 40%
známky (tj. maximálnì mo¾ných 53 bodù bude tvoøit 53% známky).