[one_second]rest1[/one_second][one_second]Razvoj internet infrastrukture doveo je do značajnog povećanja u protoku količine podataka, odnosno do ubrzanja interneta. Ovo je u mnogome uticala i na pravac u kome se kreće razvoj web aplikacija. Za razliku od interneta od pre dvadeset godina koji je bio sačinjen od statičkog teksta i tek po neke sličice (na koju je trebalo čekati i po nekoliko minuta da se učita), današnji internet sadržaj je mnogo bogatiji. Reklo bi se na prvi pogled da kada razvijamo neku web aplikaciju ne moramo toliko više da brinemo o količini prenetih podataka.[/one_second]

Medjutim čovekova želja za napretkom i poboljšanjem dovodi do razvoja novih koncepata koji vremenom postaju standardi u razvoju aplikacija.

[one_second]Umesto da učitavamo celu stranicu sa servera, sada koristimo AJAX (https://en.wikipedia.org/wiki/Ajax_(programming)) kako bi dohvatili samo deo stranice i u pozadini ga osvežili. Kao rezultat našeg AJAX poziva moguće je vratiti i JSON (https://en.wikipedia.org/wiki/JSON) objekat kako bi se smanjila količina prenetih podataka. Web servisi su još jedan korak ka granulaciji internet sadržaja i omogućavaju nam distribuirani pristup resursima i funkcionalnostima. Jedna od formi web servisa je i REST (Representational state transfer)[/one_second]
[one_second]ajax[/one_second]

( https://en.wikipedia.org/wiki/Representational_state_transfer) koji upotrebom predefinisanog seta stateless operacija manipuliše tekstualnom reprezentacijom podataka (JSON, XML, HTML). Preporuke kako bi REST servis trebalo da izgleda možete pogledati na ovde (https://www.slideshare.net/stormpath/rest-jsonapis).

Đorđe Miljković

Senior Developer

 

IEqualityComparer (https://msdn.microsoft.com/en-us/library/ms132151(v=vs.110).aspx) je interfejs koji definiše metode za upoređivanje objekta. Možemo implementirati IEqualityComparer komparer za Dictionary kolekcije.
Equals metod je metod koji upoređuje vrednost 2 objekta. Ako su vrednosti objekata jednake vraća true, u suportnom vraća false.

 
GetHashCode (https://msdn.microsoft.com/en-us/library/system.object.gethashcode(v=vs.110).aspx) je metod koji vraća integer hash kod za prosleđen objekat. Hash kod u stvari predstavlja memorijsku adresu objekta. Ako su hash vrednosti objekata iste onda će sam komparer vratiti vrednost true. Hash kod bi trebalo da bude jedinstven do kraja životnog veka objekta. Zbog toga polja kojima se kalkulišu hash vrednosti moraju biti Immutable.

 
Primer generisanja komparer klase:

 

public class CustomerComparer : IEqualityComparer<Customer>
 {
public bool Equals(Customer customer1, Customer customer2)
{
    return customer1.Id == customer2.Id;
}
public int GetHashCode(Customer customer)
{
    return customer.Id.GetHashCode();
}
}

 

Milena Tošović

Senior Developer

Single sign-on (SSO) je proces autentikacije sesije korisnika koji dozvoljava  da se samo jednim unošenjem korisničkog imena i lozinke izvrši logovanje u više aplikacija. Postoji više načina na koji se ovo može postići, a mi smo se odlučili za sledeći koncept.

Autentikacija funkcioniše  tako što se kreira autentikacioni cookie na domenu. Kada ima više domena logovanje na npr. domen1 kreira autentikacioni cookie za domen1 i nemoguće je istovremeno kreirati i autentikacioni cookie za domen2. Iz tog razloga uveli smo poseban domen SSO. Sada prilikom logovanja na domen1 korisnik se redirektuje na SSO i na domenu SSO se kreiraju cookie-ji sa ključevima koji označavaju domen1 i domen2. Ovi cooki-ji će značiti da se korisnik ulogovao na određeni domen iako na tom domenu nema autentikacionog cookie-ja. Npr. korisnik se loguje na domen1 i autentikacioni cookie se kreira na tom domenu ali takođe i odgovarajući cookie-ji sa ključevima koji označavaju domen1 i domen2 na SSO domenu. Zatim korisnik pokušava da pristupi domenu 2, ali na njemu nema autentikacionog cooki-ja. Korisnik se redirektuje na SSO i tamo se pronalazi cookie sa ključem za domen 2 što znači da je korisniku već odobren pristup. Korisnik se redirektuje na domen 2,  kreira se autentikacioni cookie na domenu 2 i korisnik pristupa željenoj strani bez ponovnog logovanja.

Kako bi se ovo implementiralo koristili smo http handler-e. Oni nam omogućavaju da jednostavnim deploy-om dll-a i podešavanjem web.config file-a proširimo funkcionalnost host domena bez promene njegovog  koda. Npr. u našem primeru kada korisnik prvi put pristupa domenu 1 pa se zatim redirektuje na SSO, on na SSO upisuje korisničko ime i lozinku. Zatime se vrši redirektovanje na domen1 kako bi se proverilo da li korisnik može da se uloguje? Taj request obrađuje login http handler koji smo implementirali koristeći MembershipProvider.  Pozivamo metodu MembershipProvider-a ValidateUser i to je jedina metoda koja u ovom slučaju mora da bude implementirana i u kodu domena1. Kada dobije rezultat logovanja login handler redirektuje nazad na SSO kako bi bilo izvšeno kreiranje opisanih cooki-ja u slučaju uspešnog logovanja. Zatim SSO redirektuje request na http handler na izvorišnom domenu (domen1) koji izvrši kreiranje autentikacionog cooki-a na svom domenu i redirektuje korisnika na traženu stranicu na domenu 1.

Srećno kodiranje!

Nebojša Golubović
Senior Developer