Šta je to .NET Standard?

Share

Uvod

Kada je .NET Framework objavljen pre 16. godina, služio je kao jedinstvena platforma za razvoj Windows desktop i Web aplikacija. Ubrzo zatim, objavljen je .NET Compact Framework, koji je predstavljao podskup .NET Framework-a i koji je vise odgovarao manjim uredjajima i mobilnim telefonima koji su na sebi imali Windows Mobile operativni sistem. Ideja je bila da se iz .NET Framework-a izdvoji posebna vertikala koja je u sebi uključivala: runtime, framework i aplikacioni model(App Model). Nakon toga, Microsoft je par puta ponovio istu formulu, napravio je jos par podskupova: Silverlight, Windows Phone i Windows Store. To je dovelo do fragmentacije, jer .NET platforma vise nije jedan entitet, vec set platformi koje su u vlasnistvu različitih timova i koje se posebno održavaju.

Slika1 Preuzeto sa zvaničnog Microsoft sajta

Šta je problem sa fragmentacijom? Ako želimo da radimo na samo jednoj platformi, dobijamo set API-ja koji je optimizovan za tu platformu, što je super. Problem nastaje kada želimo da podelimo neku funkcionalnost na više platformi. U današnje vreme je uobičajena praksa da imamo aplikacije čiji se delovi nalaze na različitim uređajima: back end se nalazi na web serveru, front end se nalazi na Windows desktopu, i postoji set mobilnih aplikacija koje su dostupne za različite uređaje.

Deljenje neke komponente ili biblioteke između platformi, za developere znači ponovno pisanje istih samo prilagođenih za željenu platformu.

Da bi rešio ovaj problem, Microsoft je lansirao novi tip biblioteka nazvan Portable class libraries. To je omogućilo developerima da krejiraju fleksibilne biblioteke koje su sadržavale samo one Base Class Libraries (BCL) koje su zajedničke za željene platforme. Prilikom krejiranja PCL, developeri su imali opciju da izaberu između kojih frameworka žele da dele biblioteku.

Slika2 Visual Studio prozor za Portable Class Libraries

Iako je ovaj tip biblioteka omogućio deljenje koda između više platformi, postojale su određene mane. Kada bi smo želeli da podržimo novu platformu ili framework, morali bi smo da re-kompajliramo biblioteku sa podešenim novim platformama. Nekada bi se desilo da su se gubili API-ji koji nisu više bili zajednički za sve izabrane platforme.

Gde je tu .NET Standard?

U ovome trenutku možemo da kažemo da postoje tri glavne platforme za razvoj u okviru .NET eko sistema: .NET Framework, .NET Core i Xamarin. Kao što se vidi na slici, svaka od njih ima poseban Base Class Library.Da bi se razvila neka funkcionalnost koja može da se koristi na sve tri platforme, neophodno je da se poznaju karakteristike svake.

Slika3 Najpopularnije plarforme u okviru .NET

.NET Standard je Microsoftovo rešenje za problem sa višestrukim bibliotekama. Ovime je sprečena dalja fragmentacija .NET platforme.

The .NET Standard is a set of APIs that are implemented by the Base Class Library of a .NET implementation. More formally, it’s a specification of .NET APIs that make up a uniform set of contracts that you compile your code against. These contracts are implemented in each .NET implementation. This enables portability across different .NET implementations, effectively allowing your code to run everywhere.–Preuzeto sa zvaničnog Microsoft sajta

Ukoliko ste imali šansu da radite sa .NET Framework-om, sigurno ste upoznati sa postojanjem BCL biblioteka. BCL biblioteke predstavljaju skup osnovnih API-ja koji su nezavisni od korisničkih interfejsa kao I aplikativnih modela. To obuhvata primitivne tipove, I/O fajlove, refleksiju, serijalizaciju, XML I ostalo.

Slika4 Preuzeto sa zvaničnog Microsoft sajta

Dakle, .NET Standard nije nešto što može da se instalira – to je formalna specifikacija API-ja koji su dostupni za implementaciju. Dobro poređenje bi bilo HTML i pretraživači: gde bi .NET Standard predstavljao HTML specifikaciju, a različite .NET platforme, poput .NET Framework-a, .NET Core-a i Xamarin-a, bi bile različiti pretraživači. .NET Standard polako zauzima mesto Portable Class Library bibliotekama kao alat za kreiranje .NET biblioteka koje mogu da se koriste na više platformi jer predstavlja njhovu naprednu verziju.

Verzije .NET Standard-a

Kao i bilo koji framework, i .NET Standard ima svoje verzije. Različite implementacije .NET-a podržavaju određene verzije .NET Standard-a. Svaka .NET platforma prikazuje koja je naviša verzija .NET Standard-a ali to isto znači da je svaka prethodna takođe podržana.

U tableli ispod se mogu videte sve dostupne verzije .NET Standard-a kao i platforme koje ih podržavaju:

Slika5 Prikaz verzija .NET Standard-a kao i podržanih platformi

Postoje dva važna pravila kojim se Microsoft vodio kada je pravio svaku verziju .NET Standard-a:

  • Nadogradnja – Svaka nova verzija podržava sve prethodne
  • Nepromenjivost – Kada se jednom isporuči, verzija ostaje nepromenjiva. Ukoliko se nađe potreba za novim API-jima, nova verzija se krejira.

Kako možemo da napravimo .NET Standard biblioteku?

Uz najnoviju verziju Visual Studio razvojnog okruženja, Visual Studio 2017, dolazi nam i nova opcija za kreiranje klasnih biblioteka sa nazivom Class Library (.NET Standard), a koja je smeštena pod .NET Standard tabom.

Slika6 Slika iz Visual Studio 2017 okruženja

Kada kreiramo novu Class Library, možemo lagano da proverimo koje su verzije .NET Standard-a podržane kao i koja je verzija izabrana. Ako napravimo deski klik na projekat koji možemo da nađemo u Solution Explorer tabu I izaberemo opciju Properties. Na ekranu koji nam se otvori, možemo da nađemo labelu na kojoj piše Target Framework. Vrednost koja se nalazi u padajućem meniju ispod nam govori koja je trenutna verzija izabrana, kao I verzije koje su nam dostupne.

Slika7 Slika iz Visual Studio 2017 okruženja

Možemo da učinimo biblioteku dostupnom tako što ćemo je objaviti kao NuGet paket. Ako izaberemo Package tab, možemo da podesimo razne opcije vezane za taj paket: jedinstveni ID, verziju, autora, kompaniju kao i mnoge druge:

Slika8 Slika iz Visual Studio 2017 okruženja – Package configuration

Kada unesemo željene podatke za paket i završimo sa pisanjem koda, sačuvamo promene. Podesimo konfiguraciju na Release. Desni klik na projekat koji se nalazi u Solution Explorer-u nam otvara padajući meni gde izaberemo opciju Pack. Ova komanda kaže radnom okruženju da pokrene build process i posle toga napravi fajl sa ekstenzijom .nupkg.

Slika9 Slika iz Visual Studio 2017 okruženja

Zaključak

Microsoft je kreirao .NET Standard da bi olakšao deljenje i ponovno korišćenje koda između različitih .NET platformi. Za developere to znači da je dovoljno da savladaju samo jedan tip biblioteka umesto više dosadašnjih. Sve biblioteke koje su kreirane kao .NET Standard biblioteke će moći da budu korišćene na bilo kojoj .NET platformi. Ukoliko radite na razvoju modernih aplikacija, definitivno bi trebalo da razmotrite korišćenje .NET Standard biblioteka.

Share

Prijavi se da prvi dobijaš nove blogove i vesti.

Ostavite odgovor

Simo Vuleta

Software Engineer @ PRODYNA
mm

Simo Vuleta je Softver Inženjer u PRODYNA DOO, inovativnoj IT kompaniji, specijalizovan za razvoj veb aplikacija. Sa preko osam godina iskustva u softverskoj industiji, koristeći uglavnom Microsoft tehnologije, učestvovao je u izradi raznih softverskih rešenja kao što su: Saas, IoT, e-komerc, Sitecore… U slobodno vreme voli trčanje kao i čitanje knjiga. Aktivno učestvuje u svim PRODYNA sportskim aktivnostima a trenutno se sprema za maraton u Valensiji.

Prijavi se da prvi dobijaš nove blogove i vesti.

Kategorije