Showing posts with label csc. Show all posts
Showing posts with label csc. Show all posts

Wednesday, March 16, 2016

Šta su sklopovi?


Još pre pojave .Net platforme, rad sa *.dll datotekama koje izvoze globalne funkcije i *.dll datoteke koje izvoze COM klase, su pravile ogromne probleme, da je Microsoft sa pravom uveo frazu „DLL pakao“ za navedenu problematiku. Aplikacije nisu radile ispravno jer bi novo instalirana aplikacija prebrisala *.dll datoteku koju je koristila druga aplikacija. Ponekad bi instalacija nove aplikacije zamenila novi *.dll starijom verzijom ili novi *.dll datoteka nije bila kompatibilna sa starijom verzijom. Tek od Windows 2000 se uvela mogućnost instaliranja *.dll datoteka u direktorijum aplikacije. Najveći problem je bio što konfiguracija COM komponente nije bila smeštena u samoj *.dll komponenti, nego u bazi Windows Registry. Za ovaj pakao, kao odgovor je stigao sklop.


( GAC - Global Assembly Cashe Folder )

Sklop je osnovna jedinica aplikacije .Net-a. Sklop je samoopisujuća kolekcija koda, resursa i meta podataka. Jednostavno govoreći, sklop je projekat koji se kompajlira u izvršnu datoteku *.exe ili u *.dll datoteku biblioteke. Sklopovi mogu biti privatni ili javni tj. deljeni. Sklop koji se nalazi u direktorijumu vaše aplikacije je privatan sklop, dok deljeni sklop je sklop smešteni u GAC - Global Assembly Cache pomoću alata Gacutil.exe ili Windows Installer-a. To su sklopovi smešteni u C:\Windows\Microsoft.NET\assembly\GAC_MSIL folderu. Deljene sklopove ili sklopove koje se nalaze u GAC-u može da koristi više aplikacija, dok privatni sklop može da koristi samo aplikacija koja sadrži sklop u svom direktorijumu. Da bi ste kreirali deljeni sklop neophodno je da vašem sklopu dodelite Strong name – strogo ime.

var assembly = Assembly.GetExecutingAssembly();
WriteLine(assembly.FullName);
// Result: AssemblyCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Kao što vidite strogo ime se sastoji od imena sklopa, verzije, kulture i parnog ključa. Navedena aplikacija u kodu AssemblyCS nema dodeljeno strogo ime, što definitivno ukazuje da je reč o privatnom sklopu. Najvažnija stvar za jedan sklop je deklaracija sklopa koja sadrži informacije o tome od čega se sastoji sklop. Sklop može da sadrži samo jednu deklaraciju sklopa i ona sadrži sve podatke opisa za sklop. Deklaracija sklopa može da se nalazi u svojoj odvojenoj datoteci ili da se nalazi unutar jednog od modula sklopa.

Šta sadrži sklop?

Sunday, March 13, 2016

Arhitektura Microsoft .NET Framework-a

Microsoft .NET Framework je razvojna platforma ili kako je još zovu „Operativni sistem u operativnom sistemu“ koje omogućava lakše, brže i bezbednije programiranje i izvršavanje aplikacija i servisa pisanih za .Net tehnologiju. Microsoft .NET Framework radi na Microsoft Windows operativnim sistemima i sastoji se iz dva dela. Prvi deo je osnovna komponenta CLR – Common Language Runtime što bi se na srpskom jeziku moglo prevesti kao „Zajednički jezik u vreme izvršavanja“. CLR je u stvari virtualna mašina koja izvršava aplikacije i servere pisane za .Net tehnologiju, dok drugi deo čini BCL zajedno sa FCL (BCL\FCL). BCL – Base Class Library – Biblioteka baznih klasa je standardna biblioteka dostupna svim programskim jezicima koji koriste Microsoft .NET Framework , sadrži ogromnu kolekciju klasa, interfejsa i tipova podataka dok FCL – Framework Class Library je nadskup na BCL, koji uključuje Microsoft imenske prostore. Inače, većina programera FCL posmatra kao Microsoft-ovu implementaciju BCL-a. BCL se deli na korisnički definisanu biblioteku klasa, koju zovemo Assembly – sklop i predefinisanu biblioteku klasa koju zovemo Namespace – imenski prostor. Obadve biblioteke klasa kao jedna celina pre svega programerima omogućavaju brže, lakše i bezbednije programiranje jer programer pored gotovih isprogramiranih klasa nema potrebe da programira kod koji je već savršeno isprogramiran. Ali to nije sve, već ceo Microsoft .NET Framework omogućava i upravljanje resursima, ponovo korišćenje koda, specijalizaciju koda, razvoj programerske višejezičnosti, bezbednost, administraciju, eksploataciju itd.


( .NET Framework komponente)

Napretkom tehnologije i Microsoft .NET Framework konstantno napreduje i njegova zadnja verzija dok još pišem ovaj post je 4.6.1 realizovana 17 novembra 2015 godine. Microsoft .NET Framework je besplatan, uglavnom se instalira i update-tuje sa Microsoft Visual Studio-om iako ga možete instalirati i bez IDE, zato što je neophodan da bi aplikacije i servisi za .Net tehnologiju uopšte mogle da rade. Programeri uglavnom imaju instalirane više ili sve verzije Microsoft .NET Framework-a, tako da je retkost i videti da na jednom računaru imate instaliran samo jednu verziju Microsoft .NET Framework-a . Prva verzija Microsoft .NET Framework-a se pojavila još u januaru 2002 godine, da bi već u aprilu 2003 godine bila nadograđena na Microsoft .NET Framework verziju 1.1. Ali prava vrednost Microsoft .NET Framework-a nastaje tek od novembra 2005 godine pojavom Microsoft .NET Framework-a 2.0. Ona je sa sobom donela .Net programskim jezicima generike, partialne tipove, anonimne metode, iritatore, tip Nullable kao i delegate. U novembru 2007 godine izlaskom Microsoft .NET Framework-a 3.0 pojavile su se tehnologije poput WF, WCF i WPF i njegovom nadogradnjom na Microsoft .NET Framework 3.5 omogućene su nam auto-propertiji, anonimni tipovi, extension metode, Query izrazi kao i Lambda što u celini predstavlja programski jezik LINQ. U aprilu 2010 godine nam dolazi Microsoft .NET Framework 4.0 karakterističan po integrisanim SilverLight aplikacijama i Dynamic binding - kasnom povezivanju. Od Microsoft .NET Framework 4.5 omogućene su nam pravljenje metro aplikacija i asinhronizovane metode dok trenutna verzija Microsoft .NET Framework 4.6.1 donosi sa sobom pre svega mnogo ispravljenih bagova i poboljšanja svih segmenata, posebno u sferi kriptografije. Zahvaljujući svim izmenama i progresu Microsoft .NET Framework-a, danas na primer programski jezik C# 6.0 ima znatne izmene u samom kodiranju što omogućava brže i kraće pisanje koda.

Osnove CLR – Common Language Runtime-a