Sunteți pe pagina 1din 4

- Metode Asynchrone (async/await)

Metoda care va fi rulata asincron trebuie sa intoarca void, Task, sau Task<T>. Metoda
apelanta care foloseste in interiorul ei apelul await trebuie marcata ca async. Compilatorul ar
putea deduce automat acest pattern fara sa oblige programatorul sa marcheze metodele cu
async.
Await foloseste SynchronizationContext pentru a continua pe acelasi thread pe care
metoda async a pornit
. Rularea seriala datorata await este valabila doar in contextul metodei care contine apelul.
Nu doar pentru obiecte de tipul Task se poate apela await. Se poate apela await pentru
orice tip care detine o metoda cu numele GetAwaiter. Nu exista o interfata ce trebuie
implentata, doar o metoda GetAwaiter ce intoarce un tip cu urmatoarea semnatura de
metode: IsCompleted, OnCompleted(Action), GetResult(). Vestea buna este ca aceste
metode pot fi metode de extensie. Putem extinde astfel orice tip ( in masura in care are sens)
pentru a suporta pattern-ul await.

- Task and Threads


Conceptul de thread (fir de execuie) definete cea mai mic unitate de procesare ce poate fi
programat spre execuie de ctre sistemul de operare. Este folosit n programare pentru a
eficientiza execuia programelor, executnd poriuni distincte de cod n paralel n interiorul
aceluiai proces. Cteodata ns, aceste portiuni de cod care constituie corpul threadurilor, nu sunt
complet independente i n anumite momente ale execuiei, se poate ntampla ca un thread s
trebuiasc s atepte execuia unor instructiuni din alt thread, pentru a putea continua execu ia
propriilor instruciuni. Aceast tehnic prin care un thread asteapt execuia altor threaduri nainte de
a continua propria execuie, se numete sincronizarea threadurilor.
Task, Task<T> Reprezinta o abstractizare la un nivel mai inalt decat acela de Thread. Un task
poate fi sau nu rulat pe un thread dedicat. Task-urile pot fi inlantuite folosind continuations, iar
executia acestui lant de task-uri poate fi conditionata in functie de terminarea cu success sau nu a
task-ului precedent.

- Protocolul HTTP
Este un protocol la nivel aplicatie destinat sistemelor de informare distribuite, "colaborative", de genul
hypermedia. Aparut ca protocol de baza pentru WWW nca din 1990, a cunoscut o serie de
transformari, o versiune "finala" neexistnd nici n prezent.
Numele este acronimul pentru HyperText Transfer Protocol, desi la origine "hypertext" a fost
definitoriu, practica curenta l-a dus destul de repede nspre "hypermedia" - documentele vehiculate
cuprinznd nu numai text, ci si sunet, imagine sau informatii structurate.
Aplicatiile care folosesc protocolul - cei doi parteneri n discutie, cele doua capete ale unei conexiuni snt entitati abstracte din punct de vedere al protocolului. Ele trebuie "doar" sa poata comunica ntre
ele ceea ce nseamna, n principiu, posibilitatea de a primi sau formula cereri si de a formula sau
receptiona raspunsuri.
Cererile formulate n protocolul HTTP se refera la informatii care se pot afla stocate n diverse baze de
date, n diverse formate, pe diverse calculatoare. Cum anume se traduc n cereri "concrete" date
diferite, este o problema care depaseste protocolul: sarcina lui este doar sa fixeze regulile care trebuie
respectate de cele doua aplicatii participante la un moment dat n comunicare pentru ca sa se poata
ntelege fara nici un fel de risc de interpretare eronata a unei cereri sau a unui raspuns.

- Metodele i cmpurile prot. HTTP


Cmpuri din header: Cookie, ETag, Location, HTTP referrer, DNT, XForwarded-For
Metodele snt de fapt operatiile care pot fi aplicate obiectelor constituite de resursele din retea, n
acceptiunea protocolului HTTP. Metoda va trebui sa fie totdeauna primul element dintr-o linie de
cerere. Metodele snt urmatoarele: OPTIONS, GET, HEAO, POST, PUT, PATCH, COPY, MOVE, DELETE,
LINK, UNLINK, TRACE, WRAPPED.
OPTIONS semnifica o cerere relativa la informatiile ce definesc optiunile de comunicare disponibile pe
conexiunea catre URI-ul specificat n cerere. Metoda permite determinarea optiunilor si/sau
posibilitatilor unui server, fara sa determine o actiune din partea resursei adresate.
GET este una dintre cele mai importante metode si singura care era disponibila n prima versiune a
protocolului, HTTP/0.9. GET este metoda care "aduce" ceva de la resursa; mai concret, daca resursa
este un proces care produce date (o cautare de pilda), raspunsul la metoda GET va fi o entitate care sa
cuprinda acele date. Raspunsul este unul singur: aceasta este o caracteristica de baza a protocolului.
Chiar daca volumul de date care trebuie incluse n raspuns este mare, nu se face o fractionare n
bucatele mai mici, care sa permita transferul mai usor al raspunsului. Din punct de vedere al
protocolului HTTP, discutia este totdeauna simpla: o ntrebare are un raspuns. Nu se pot pune mai
multe ntrebari pentru a obtine un singur raspuns, nu se pot formula mai multe raspunsuri la o
ntrebare.
HEAD este o metoda similara cu GET, folosita n principiu pentru testarea validitatii si/sau
accesibilitatii unei resurse, sau pentru a afla daca s-a schimbat ceva. Sintaxa este similara metodei
GET; spre deosebire de GET nsa, datele eventual produse de resursa n urma cererii nu snt transmise;
doar caracteristicile acestora, si un cod de succes sau eroare. Ceva de genul "daca ti-as cere sa
executi cererea mea, ce mi-ai raspunde?".
POST este metoda prin care resursei specificate n cerere i se cere sa si subordoneze datele incluse n
entitatea care trebuie sa nsoteasca cererea. Cu POST se poate adauga un fisier unui anumit director,
se poate trimite un mesaj prin posta electronica, se poate adauga un mesaj unui grup de stiri, se pot
adauga date unei baze de date existente, etc. Metoda POST este generala; care snt procesele pe care
un anumit server le accepta sau cunoaste i snt strict specifice.
PUT este o metoda care cere serverului ceva mai mult dect POST: sa stocheze/memoreze entitatea
cuprinsa n cerere cu numele specificat n URI. Daca resursa specificata exista deja, entitatea noua
trebuie privita ca o versiune modificata care ar trebui sa o nlocuiasca pe cea existenta. Serverul,
binenteles, va accepta sau nu aceasta cerere, functie de drepturile de acces pe care i le-a acordat
clientului, si va raspunde cererii cu informatii corespunzatoare ("s-a facut", "nu pot", "nu ai voie sa faci
treaba asta" etc.). Pentru a evita situatii care sa duca la ncarcarea excesiva si nejustificata a retelei de exemplu, un client care vrea sa "posteze" un text de 10 MB, fara sa tina seama de faptul ca serverul
nu mai are att loc att o cerere de tipul POST ct si una de tipul PUT se desfasoara n doi timpi: nti,
clientul trimite numai parametrii metodei, fara sa trimita datele efective pe care le vrea postate. Dupa
care asteapta 5 secunde. n acest timp, daca serverul raspunde, clientul ia n seama si analizeaza
raspunsul serverului (iar daca acesta este "nu mai am loc", datele nu se mai transmit). Daca nu
soseste nici un raspuns n timpul de asteptare, se considera implicit ca serverul accepta datele si
acestea snt transmise de catre client.
PATCH este o metoda similara lui PUT, dar nu contine toate datele care sa defineasca resursa, ci
numai diferentele fata de versiunea existenta pe server. Cu toate informatiile necesare care sa i
permita serverului sa reconstruiasca o versiune la zi a resursei.
COPY, MOVE si DELETE snt metode prin care se cere ca resursa specificata n URI-ul din cerere sa fie
copiata n locatiile specificate ca parametri pentru metoda, mutata acolo sau respectiv doar stearsa.
LINK si UNLINK snt metode prin care resursa specificata n cerere este legata/dezlegata de alte
resurse, stabilind una sau mai multe relatii cu acestea din urma, specificate ca parametrii pentru
metoda. Ar putea fi de exemplu un index pentru o baza de date, un cuprins pentru un set de
documente, etc.
TRACE este o metoda care i permite clientului sa vada cum ajung cererile sale la server, pentru a
verifica/diagnostica conexiunea, pentru a se verifica pe sine sau pentru a determina felul n care

eventualele proxy-uri de pe parcurs au modificat cererea initiala. Serverul, n raspuns la aceasta


cerere, va trimite n ecou cererile care i vin de la client, fara sa le mai trateze ca cereri "reale".
WRAPPED este o metoda care "contrazice" principiul protocolului de a trimite totdeauna o singura
cerere si a astepta un singur raspuns. Via WRAPPED, mai multe cereri, care n mod obisnuit ar fi
succesive, snt "mpachetate" ntr-una singura. Iar o alta aplicare a metodei tinteste masuri de
securizare - o cerere poate fi cifrata si transmisa prin metoda WRAPPED, ceea ce va determina serverul
sa actioneze n doi pasi: nti sa descifreze cererea reala, iar apoi sa i dea curs acesteia.

- XML/Json (metode de serializare/deserializare)


Serializarea este procesul prin care convertim un obiect intr-o secventa liniara de bytes (octeti) care
poate fi stocata sau transferata.
Deserializarea este procesul invers serializarii
Platforma .NET include mai multe metode deformatare a datelor serializate:
-

BinaryFormatter: cea mai eficienta metoda deserializare date in .NET


SoapFormatter: format bazat pe XML folositor pentru schimbul in retea de fisiere.

Serializare XML
-

XML foloseste un format de organizare a datelor de tip arborescent si este un format


standardizat, bazat pe text, pentru stocarea unor informatii ce pot fi citite usor de aplicatii.
XML poate fi folosit pentru stocarea oricarui tip de date inclusiv documente, imagini, filme,
muzica, etc.
.NET framework ofera mai multe biblioteci pentru citire si scriere fisiere XML

Cand folosim serializare XML?


-

Este recomandat sa folosim serializarea XML atunci cand dorim ca fisierele produse sau
modificate de aplicatia noastra sa fie usor citibile de aplicatii ce nu sunt scrise in.NET
In consecinta serializare XML are urmatoarele avantaje: Interoperatibilitate mai mare
Fisierele pot fi editate usor cu editoare normale text Versionare mai usoara

Json este un acronim n limba englez pentru JavaScript Object Notation, i este un format de
reprezentare i interschimb de date ntre aplicaii informatice. Este un format text, inteligibil pentru
oameni, utilizat pentru reprezentarea obiectelor i a altor structuri de date i este folosit n special
pentru a transmite date structurate prin reea, procesul purtnd numele de serializare. JSON este
alternativa mai simpl, mai facil dect limbajul XML. Elegana formatului JSON provine din faptul c
este un subset al limbajului JavaScript , fiind utilizat alturi de acest limbaj. Tipul de media pe care
trebuie s l transmit un document JSON este application/json. Extensia fiierelor JSON este .json.

- notiuni generale i moduri de utilizare RegEx


O expresie regulat, pe scurt denumit i RegEx sau RegExp, este un ir de
caractere care descrie un model de cutare n alt ir de caractere sau, de ce nu,
ntr-un fiier ntreg. Cu ajutorul expresiilor regulate poi gsi sau nlocui anumite
pri dintr-un text. Sunt o metod puternic de verificare pentru validitatea
adreselor de e-mail, domenii de internet sau coduri potale. Un e-mail valid trebuie
s se muleze pe un model prestabilit. Cu RegEx putem verifica dac o adres e-mail
se muleaz sau nu se muleaz pe respectivul model. Deasemenea cu ajutorul
expresiilor regulate putem s analizm fiiere tot mai mari de text n cutarea
informaiilor dorite. Exist diferite definiii pentru expresiile regulate, fiecare
ncercnd s delimiteze mai bine acest concept. O definiie pentru expresiile
regulate este urmtoarea: o expresie regulat care se mai numete i pattern, este
o expresie care descrie un ir de caractere. Acest ir de caractere se interpreteaz i

identific anumite iruri de caractere. Practic irul de caractere din ablonul


expresiei regulate este schema general sau formula.
n aplicaiile practice din dezvoltarea software, expresiile regulate bazate pe acest set simplu de
operatori ar duce la scrierea unor expresii regulate insuficient de concise. De aceea, s-au elaborat
unele notaii pentru expresiile regulate speciale pentru utilizarea n practic. Cele mai importante
dintre acestea sunt expresiile regulate POSIX, folosite pentru comenzile UNIX ce folosesc expresii
regulate, precum i expresiile regulate Perl, sintax dezvoltat pentru limbajul de programare Perl,
preluat i extins i de alte limbaje de programare, cum ar fi Java, JavaScript, Ruby i Python.
Exist mai multe tehnici de identificare ce se pot utiliza pentru validarea unui ir printr-o expresie
regulat. Cea mai simpl tehnic este cea backtracking,
O alt metod o reprezint aa-numita compilare a expresiei regulate, ceea ce presupune
crearea automatului finit determinist (AFD) care valideaz limbajul regulat definit de expresie, i apoi
rularea acestui automat pentru validarea irului.

- HTML Parsing/xPath
Parsarea html se realizeaza cu 2 scopuri
-

Ofera o interfata pentru programatori pentru a accesa cu usurinta si modifica


codul html
de a imbunatati codul html ca exemplu parserul html Tidy
Sunt o multime de biblioteci special pentru parsarea documentelor html in
diferite limbaje de programare. In C# cea mai folosita e Html Agility Pack aceasta
biblioteca inclusa in .NET functioneaza aproximativ ca parsarea XML

XPath (XML Path Language) este un limbaj de expresii utilizat pentru a selecta por iuni dintr-un
document XML sau pentru a calcula valori (iruri de caractere, numere, sau valori buleene) pe baza
coninutului unui document XML
Limbajul XPath este structurat pe reprezentarea sub form de arbore a documentului XML, oferind
posibilitatea de a naviga n acest arbore, prin selecia nodurilor XML care satisfac diferite criterii. n
utilizarea frecvent (care nu este o specificaie oficial), o expresie XPath este deseori numit un
XPath.
Motivaia apariiei acestui limbaj a fost dorina de a folosi aceeai sintax i acelai model att
pentru XPointer ca i pentruXSLT, XPath s-a ncetenit printre programatori ca fiind un mic limbaj
de interogare, iar anumite pri ale sale sunt folosite n specificaiile W3C pentru XML
Schema i XForms.