Sunteți pe pagina 1din 5

SUBIECTE SD 2013

La examen vei primi dou subiecte din lista de mai jos. Combinaia de dou subiecte va fi generat n mod aleatoriu. Timpul de rezolvare pentru ambele subiecte va fi de 2 ore. Modul de interpretare a subiectelor este urmtorul: o cerina (1., 2., ...) poate avea mai multe subpuncte notate cu litere (a., b., ...); n acest caz, un subiect este de exemplu: 1.a. de asemenea, oriunde este caracterul /, la generarea subiectelor se va alege doar una din opiunile respective. un exemplu de subiect generat este 7.b cu BinaryFormatter i TcpChannel.

Lista de subiecte

[L2 - Delegai, evenimente, generice, fire de execuie] 1. Realizai o aplicaie care s permit citirea a n fiiere text i scrierea ntr-un alt fiier. Citirea i scrierea se vor face linie cu line. Fiierele vor fi citite n paralel. a. De fiecare dat cnd a fost citit o linie de text, este aruncat un eveniment care este prins de entitatea care face scrierea. b. Pentru citire se vor folosi fire de execuie create cu ajutorul clasei Thread. c. Citirea trebuie s se fac asincron prin utilizarea unui delegat asincron. [L3 - Sincronizare] 2. Realizai o aplicaie care s creeze n fire de execuie productor (valoare lui n este citit de la tastatur). Fiecare fir de execuie productor va genera la fiecare 300 milisecunde un ir de caractere format din concatenarea id-ului firului respectiv i un numr aleatoriu ntre 0 i 1000. irurile vor fi introduse ntr-o coad generic comun (System.Collections.Generic.Queue). Un fir de execuie consumator va extrage irurile din coad i le va scrie ntr-un fiier text. Pentru a crea firele de execuie se va folosi clasa Thread / ThreadPool (QueueUserWorkItem) / BackgroundWorker, iar pentru sincronizare se va folosi clasa Monitor / Mutex. [L4 - Socket-uri]

3. Realizai o aplicaie client-server care s suporte mai muli clieni. a. Serverul trebuie s fie de tip multicast-echo: orice mesaj trimis de client ajunge la toi clienii (inclusiv la cel care a trimis mesajul). Pentru implementare se vor folosi socket-uri Tcp i metodele blocante Send() i Receive(). b. Serverul trebuie s fie de tip echo: orice mesaj trimis de client ajunge napoi la client. Pentru implementare se vor folosi socket-uri Tcp, metoda blocant Send() i metoda BeginReceive() pentru recepionarea asincron a datelor att la server ct i la client. c. Serverul trebuie s fie de tip echo: orice mesaj trimis de client ajunge napoi la client. Pentru implementare se vor folosi socket-uri Tcp, metoda blocant Send() i metoda BeginReceive() pentru recepionarea asincron a datelor att la server ct i la client. Acceptarea conexiunii cu un client trebuie realizat asincron prin metoda BeginAccept() din clasa Socket. [L6 - XML, L2 - generice] 4. Realizai o aplicaie care s permit serializarea i deserializarea n format XML a unei liste de perechi de valori, precum i arhivarea i dezarhivarea listei respective. O pereche de valori este reprezentat de clasa Pair<T,U> care folosete generice. Fiierul XML va conine i tipul prii reale i a prii imaginare a valorilor stocate. Tipul celor dou valori din Pair poate fi o clas oarecare, nu neaprat unul dintre tipurile de baz (string, int, ). Pentru determinarea tipului de dat n urma deserializrii, se va folosi Reflection. [L6 - XML] 5. Realizai o aplicaie folosind Windows Forms care s gestioneze o list de cri. Pentru o carte se vor reine urmtoarele informaii: titlu, autor, isbn, an apariie i editur. Aplicaia trebuie s permit adugarea de cri noi, tergerea crilor, precum i editarea lor. Crile sunt reinute ntr-un fiier XML care va putea fi salvat i ncrcat din interfa. Problema trebuie rezolvat fr a folosi colecii sau o clas care s reprezinte o carte; se va opera direct cu XML-ul. Scrierea documentului XML se va face folosind clasa XmlDocument/ XmlWrite, iar citirea se va face folosind clasa XmlDocument/ XPathNavigator/ XmlReader. [L7 - MSMQ] 6. Realizai dou aplicaii care s utilizeze serviciul de mesaje din Windows (MSMQ). Prima aplicaie va scrie n MSMQ obiecte de tipul Student (care va conine cmpurile: nume, prenume i grupa) la fiecare 3 secunde, iar a doua va citi datele n mod

asincron i le va afia la consol. Se vor folosi formatorul BinaryMessageFormatter/ XmlMessageFormatter i canalul de comunicaie TcpChannel/ HttpChannel. [L8 - Remoting, L9 - ASP .NET] 7. a. Realizai un serviciu Web (care s ruleze pe portul 12345) i o aplicaie client care s permit realizarea operaiilor cu numere complexe. b. Realizai un server care expune un obiect wellknown (SAO) n modul Singleton/ SingleCall i un client care utilizeze obiectul respectiv pentru a permite realizarea operaiilor cu numere complexe. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) i canalul TCP (TcpChannel)/ HTTP (HttpChannel). c. Realizai un server care expune un obiect activat de client (CAO) i un client care utilizeze obiectul respectiv pentru a permite realizarea operaiilor cu numere complexe. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) i canalul TCP (TcpChannel)/ HTTP (HttpChannel). Pentru aceasta se va folosi o clas Complex n care vor fi reinute partea real i cea imaginar a unui numr complex n format double. De asemenea, vor exista metode de adunare, nmulire i calcularea modului, care vor fi expuse ca servicii. Fiecare calcul efectuat va fi reinut sub forma unui ir de caractere ntr-o list generic (care conine elemente de tip string), iar la apelarea unui serviciu (listaOperatii) se va returna lista respectiv. Exemplu de intrare n list: (5+7*i)-(8-4*i). [L8 - Remoting, L9 - ASP .NET] 8. a. Realizai un serviciu Web (care s ruleze pe portul 12345) i o aplicaie client care s permit notarea studenilor la diverse materii. Serviciile care vor fi disponibile sunt: b. Realizai un server care expune un obiect wellknown (SAO) n modul Singleton/ SingleCall i un client care utilizeze obiectul respectiv. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) i canalul TCP (TcpChannel)/ HTTP (HttpChannel). Metodele din obiectul remote sunt: c. Realizai un server care expune un obiect activat de client (CAO) i un client care utilizeze obiectul respectiv. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) i canalul TCP (TcpChannel)/ HTTP (HttpChannel). Metodele din obiectul remote sunt: adaugaMaterie(nume) => idMaterie (generat de server),

adaugaStudent(nume, grupa) => idStudent (generat de server), adaugaNota(nota, idStudent, idMaterie), returneazaNote(idMaterie) => o list de perechi numeStudent-nota (se poate folosi o structura de tip Dictionary), returneazaStudenti(grupa) => o lista cu numele studenilor din grupa respectiv.

[L9 - ASP.NET, L2 - Generice] 9. a. Realizai o aplicate Web care s permit vizualizarea, adugarea i editarea crilor dintr-o bibliotec. b. Realizai un serviciu Web (care s ruleze pe portul 12345) i o aplicaie client care s permit vizualizarea, adugarea i editarea crilor dintr-o bibliotec. c. Realizai un server care expune un obiect wellknown (SAO) n modul Singleton/ SingleCall i un client care utilizeze obiectul respectiv pentru a permite vizualizarea, adugarea i editarea crilor dintr-o bibliotec. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) i canalul TCP (TcpChannel)/ HTTP (HttpChannel). d. Realizai un server care expune un obiect activat de client (CAO) i un client care utilizeze obiectul respectiv pentru a permite vizualizarea, adugarea i editarea crilor dintr-o bibliotec. Implementarea va folosi formatorul binar (BinaryFormatter)/ SOAP (SoapFormatter) i canalul TCP (TcpChannel)/ HTTP (HttpChannel). Crile vor fi reinute la server ntr-o list generic care va conine obiecte de tip Carte (id, titlu, autor, anAparitie). [L11 - Interoperabilitate COM] 10. Realizai o aplicaie care s utilizeze funcia Win32 API Beep (definit n kernel32.lib) pentru a reda sunete. Frecvenele i duratele sunetelor sunt citite din trei fiiere text. Utilizai fire de execuie pentru a reda sunetele pe msur ce sunt citite n paralel din cele trei fiiere text. [L12 - Internaionalizare] 11. Realizai o aplicaie Windows Forms care s suporte dou limbi de redare a interfeei grafice (romn i englez). Aplicaia trebuie afieze un formular de introducere a informaiilor despre o persoana (nume, prenume, varsta, cnp), i, de asemenea, trebuie s existe posibilitatea de a schimba limba de redare a aplicaiei. Pentru

aceasta se vor folosi fiiere de resurse n format text/ resx care vor fi compilate n assembly-uri satelit. Clasele necesare se gsesc n namespace-ul System.Globalization (CultureInfo, ResourceManager).