Semestrální práce:
Vytvořte distribuovaný systém pro diskusní skupiny.
Základní úloha:
Vytvořte CORBA server, který bude zajišťovat fungování
diskusních skupin a jednoduchého klienta k tomuto systému.
Server bude
implementovat dva druhy 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 diskusních skupin.
- Vytvořit novou diskusní skupinu
- Zrušení diskusní skupiny
- Rozhraní reprezentující jednu diskusní skupinu.
Operace tohoto
rozhraní budou umožňovat:
- Přihlásit se do diskusní skupiny
- Zaslat zprávu všem členům diskusní skupiny
- Zjistit seznam členů diskusní skupiny
- Odhlásit se z diskusní skupiny.
Klient bude
implementovat rozhraní, které bude umožňovat následující operace:
- Přijmout zprávu zaslanou skrz diskusní skupinu.
- Přijmout zprávu přímo zaslanou jiným uživatelem.
- Vrátí seznam diskusních skupin, kam je uživatel přihlášen.
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 z diskusních skupin - tento fakt by neměl
výrazně ovlivnit zasílání zpráv ostatním klientům.
Rozšířená úloha (varianta A):
Přidejte k rozhraní diskusní skupiny
operaci, která umožní propojit dvě diskusní skupiny - zpráva zaslaná do jedné se
zašle i do všech (transitivně) propojených skupin. Ošetřete cyklus.
Přidejte k rozhraní klienta operaci, která klienta přihlásí do všech skupin,
do kterých je přihlášen jiný klient - "zkopíruje jeho přihlášení".
Upřesnění: Jedná se o operaci CORBA rozhraní klienta,
uživatelské rozhraní by mělo umožnit ji zavolat lokálně přes "své" CORBA
rozhraní, i zavolat ji na "cizím" rozhraní.
Rozšířená úloha (varianta B):
Zajistěte, aby si klient i server externě
ukládali stavová data (klient seznam, všech diskusních skupin, kde je přihlášen,
server seznam všech diskusních skupin a uživatelů v nich přihlášených) tak, aby
restart klienta (serveru) byl pro server (klienta) transparentní.
Tj., po restartu serveru na něm budou existovat všechny původní diskusní
skupiny a v nich budou přihlášení všichni klienti, kteří tam byli původně
přihlášeni. Po restartu klienta bude korektně vracet seznam diskusních skupin,
kam je přihlášen (a obnoví přihlášení, pokud jej server mezitím odhlásil).
Stačí, když budete podporovat úmyslný restart, nemusíte být schopni řešit pád
v libovolný okamžik.
Datum odevzdání: 20.4.2004
Nahlášení složení týmů: do 30.3.2004
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 to pouští a ovládá). Vzhledem k jednoduchosti úlohy by
dokumentace neměla být moc dlouhá (ideální délka je 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).