NexxDigital - računala i operativni sustavi

Dobar dan svima. Alexey Gulynin je u kontaktu. U ovom prvom članku o C#, želio bih govoriti o platformi .NET Framework. Jezik C# i sama platforma su se prvi put pojavili 2002. godine. Glavni cilj njihovog stvaranja bio je pružiti jednostavniji, skalabilniji i, što je najvažnije, snažniji programski model od COM modela programiranja. Na temelju .NET Frameworka možete graditi aplikacije za Windows obitelj operativnih sustava, također možete graditi aplikacije za Unix, Linux, Mac OS X. Ispod je kratak popis značajki koje podržava .NET Framework:

1) Sposobnost interakcije s postojećim kodom. Ova prilika omogućuje kompajliranje, na primjer, binarnih COM komponenti i .NET komponenti.
2) Podrška za razne programske jezike. .NET aplikacije mogu se izraditi pomoću različitih programskih jezika, kao što su C#, Visual Basic, F#.
3) Opći izvršni mehanizam. Poanta je da .NET ima određeni skup tipova koje svaki jezik koji podržava .NET može razumjeti.
4) Integracija jezika. Možete napisati klasu u Visual Basicu i zatim je proširiti u C#.
5) Velika knjižnica osnovnih klasa. Zahvaljujući ovoj biblioteci, možemo zaboraviti na složenost implementacije API poziva niske razine i samo se usredotočiti na programiranje.
6) jednostavan model raspoređivanje. Za razliku od COM knjižnice, .NET ne mora biti registriran u registru. Može postojati kao assembly.dll.

Možda sam ovdje pisao o nekim nejasnim stvarima, na primjer, klasama, API-jima. Za sada nije vrijedno gnjavaže. U principu, možete programirati bez znanja o svemu tome, ali kako učimo, razrijedimo praksu teorijom.
Kako bih vas potpuno završio s teorijom, ispričat ću vam o glavnim sastavnim dijelovima .NET platforme:

1) CLR (Common Language Runtime) - okruženje zajedničkog jezika. Primarni zadatak ovog okruženja je učitavanje i upravljanje .NET objektima (tako da programer to ne mora raditi ručno). Osim toga, CLR se brine o brojnim detaljima niske razine, kao što su upravljanje memorijom, izgled aplikacije i sigurnosne provjere aplikacije.
2) CTS (Common Type System) – sustav zajedničkog tipa. Ovdje su opisani svi mogući tipovi podataka koje podržava runtime okruženje (CLR). Morate biti svjesni da jedan jezik možda neće podržavati apsolutno sve značajke definirane CTS specifikacijom. Stoga postoji:
3) CLS (specifikacija zajedničkog jezika). Opisuje podskup uobičajenih tipova i programskih konstrukcija koje moraju podržavati svi programski jezici za .NET Framework.

Uz CLR i CTS/CLS specifikacije, .NET platforma pruža biblioteka osnovne klase, koji je dostupan za sve .NET programske jezike. Ova biblioteka vam omogućuje upravljanje, na primjer, I/O datotekama, grafikom, raznim vanjskim uređajima, tokovima podataka i raznim uslugama na visokoj razini (bez razmišljanja o detaljima implementacije).

Nisam majstor u pisanju teorije, pa ću reći da onima koji žele dublje razumjeti filozofiju .NET-a, preporučujem čitanje prvog poglavlja knjige Andrewa Troelsena "Programski jezik C# 5.0 i .NET 4.5 Platforma, objavljena 2013. godine”. Ovaj sažetak .NET platforme dolazi iz ove knjige. Problem s kojim sam se susreo proučavajući ovu knjigu je teškoća prezentiranja gradiva za početnika. Možda ne mislite tako, ovo je samo moje mišljenje.

Pa, prijatelji moji, želite li i dalje učiti C#? Onda idemo hrabro dalje, obećavam da će ubuduće biti minimalno teorijskih članaka (makar samo na početku učenja C#), samo jedna praksa. Ako vam treba teorija - "popušite" knjigu Andrewa Troelsena.
I tako, ako trebate bilo kakve informacije o klasi ili njezinoj metodi, idite izravno na

Vrste .NET aplikacija

Jezik C# može se koristiti za stvaranje konzolnih aplikacija - tekstualnih aplikacija koje se izvode u DOS prozoru. Najvjerojatnije će se takve aplikacije koristiti za testiranje biblioteka klasa. Međutim, češće će se C# koristiti za stvaranje aplikacija koje imaju pristup mnogim tehnologijama povezanim s .NET-om. Ovaj članak daje kratak pregled različitih vrsta aplikacija koje možete napisati u C#.

Izrada ASP.NET aplikacija

U početku je pojava ASP.NET 1.0 iz temelja promijenila model web programiranja. ASP.NET 4 glavno je izdanje proizvoda i temelji se na naslijeđu. ASP.NET 4 predstavlja velike revolucionarne korake za poboljšanje produktivnosti. Glavni cilj ASP.NET 4 je omogućiti vam da izgradite moćne, sigurne, dinamične aplikacije koristeći što je moguće manje koda.

Značajke ASP.NET-a

Prvo, a možda i najvažnije, jest da stranice strukturiran. To jest, svaka stranica je zapravo naslijeđena klasa Klasa .NET System.Web.UI.Page, koji može nadjačati skup metoda pozvanih tijekom životnog ciklusa objekta stranice. (Ove događaje možete smatrati srodnicima događaja specifičnih za stranicu OnApplication_Start I OnSession_Start, koji je došao u datotekama global.asax u klasičnom ASP-u.) Budući da se funkcionalnost stranica može izolirati u rukovatelje događajima za određenu svrhu, ASP.NET stranice su puno lakše razumljive.

Još jedna zgodna značajka ASP.NET stranica je da se mogu kreirati u Visual Sludio 2010, istom okruženju u kojem se programiraju poslovna logika i komponente pristupa podacima koje koriste te iste ASP.NET stranice. Projekt vizualni studio 2010 ili rješenje sadrži sve datoteke povezane s aplikacijom. Štoviše, klasične ASP stranice mogu se otklanjati pogreške izravno u uređivaču. U starim danima s Visual InterDev-om, postojala je dosadna potreba da se posebno konfiguriraju InterDev i web poslužitelj projekta kako bi se omogućilo uklanjanje pogrešaka.

Radi veće jasnoće, značajka iza koda ASP.NET omogućuje vam da još više proširite strukturirani pristup. ASP.NET vam omogućuje da izolirate funkcionalnost poslužitelja stranice u klasi, kompajlirate ovu klasu zajedno s drugim stranicama u DLL i smjestite ovaj DLL u direktorij ispod HTML dijela. Direktiva @Page na vrhu stranice pridružuje ovu datoteku klasi. Kada preglednik zatraži stranicu, web poslužitelj pokreće događaje na klasi koja se nalazi u datoteci klase stranice.

Posljednje, ali ne i najmanje važno svojstvo ASP.NET-a koje treba spomenuti je povećana izvedba. Dok su se klasične ASP stranice tumačile svaki put kada se pristupilo stranici, ASP.NET stranice se pohranjuju u predmemoriju na web poslužitelju nakon kompilacije. To znači da su svi sljedeći zahtjevi ASP.NET stranica brži od prvog.

ASP.NET također olakšava pisanje stranica koje prikazuju obrasce u pregledniku koji se može koristiti u korporativna mreža. Tradicionalno stajalište o aplikacijama temeljenim na obrascima jest da one pružaju bogato korisničko sučelje, ali ih je teže održavati jer se izvode na mnogim klijentskim računalima. Iz tog razloga ljudi se oslanjaju na aplikacije temeljene na obrascima samo kada je potrebno bogato sučelje i kada je moguće pružiti pouzdanu korisničku podršku.

Web obrasci

Kako bi dizajn web stranica bio još lakši, Visual Studio 2010 nudi biblioteku Web Forms. Ovaj vam alat omogućuje grafičku izradu ASP.NET stranica na isti način na koji stvarate prozore u Visual Basicu 6 i C++Builderu. Drugim riječima, morat ćete povući potrebne kontrole s alatne trake na površinu obrasca, zatim malo prilagoditi kod obrasca i napisati rukovatelje događajima za kontrole. Kada koristite C# za stvaranje web obrasca, stvarate C# klasu koja nasljeđuje osnovnu klasu Stranica i ASP.NET stranicu koja prikazuje tu klasu kao svoj kod iza. Naravno, ne morate koristiti C# za izradu web obrasca; za to možete koristiti i Visual Basic 2010 ili bilo koji drugi .NET-orijentirani jezik.

U prošlosti je složenost web razvoja spriječila neke razvojne timove da ga pokušaju ovladati. Da biste bili uspješni u razvoju web aplikacija, morali ste znati mnogo toga različite tehnologije kao što su VBScript, ASP, DHTML, JavaScript itd. Primjena koncepata web obrazaca na web stranice znatno je olakšala izradu web aplikacija.

Kontrole web poslužitelja

Kontrole koje se koriste u web obrascima nisu kontrole u istom smislu kao ActiveX kontrole. Umjesto toga, to su XML oznake koje pripadaju ASP.NET imenskom prostoru koje web preglednik dinamički transformira u HTML oznake i skripte na strani klijenta kada se zatraži stranica. Nevjerojatna stvar je da web poslužitelj može prikazati iste kontrole na strani poslužitelja različiti putevi, generirajući transformaciju koja odgovara određenom web pregledniku koji je poslao zahtjev. To znači da sada možete jednostavno kreirati savršena korisnička sučelja web stranice bez brige o tome kako natjerati stranicu da radi u bilo kojem od dostupnih preglednika - Web Forms se brine za to.

XML web usluge

Danas HTML stranice čine većinu svjetskog prometa. široka mreža. Međutim, uz XML, računala dobivaju format neovisan o uređaju koji se može koristiti za komunikaciju na Internetu. U budućnosti će računala moći koristiti XML za razmjenu informacija umjesto međusobnog slanja poruka preko iznajmljenih linija u zaštićenom formatu kao što je EDI (Electronic Data Interchange). XML web-usluge dizajnirane su za web-okruženje orijentirano na usluge u kojem udaljena računala međusobno daju dinamičke informacije koje se mogu analizirati i preformatirati prije nego što se korisniku predstave u konačnom obliku. XML Web Services jednostavan je način na koji računala mogu pružiti informacije u XML obliku drugim računalima na Internetu.

U tehničkoj terminologiji, XML Web Service u .NET-u je ASP.NET stranica koja vraća XML umjesto HTML-a kada to klijenti zatraže. Ove se stranice oslanjaju na DLL-ove iza koda koji sadrže klase koje nasljeđuju WebService. Visual Studio 2010 IDE pruža mehanizam koji olakšava stvaranje web usluga.

Poduzeće ili organizacija može odabrati korištenje XML web usluga iz dva glavna razloga. Prvi razlog je taj što se temelje na HTTP-u; web usluge mogu koristiti postojeće mreže temeljene na HTTP-u kao posrednike za prijenos informacija. Drugi razlog je taj što budući da XML Web Services koristi XML, format podataka koji se prosljeđuje je samodokumentirajući, otvoren i neovisan o platformi.

Stvaranje Windows obrazaca

Iako su C# i .NET dizajnirani posebno za web razvoj, oni i dalje podržavaju takozvane "debele klijentske" aplikacije - tj. aplikacije koje se moraju instalirati na stroj krajnjeg korisnika, gdje se obavlja većina obrade. To omogućuje biblioteka Windows obrazaca (Windows Forms).

Međutim, ako počinjete učiti .NET platformu, ja bih nije preporučio naučite Windows Forms i odmah prijeđite na učenje najnovije WPF tehnologije.

Windows Presentation Foundation (WPF)

Jedan od najnovije tehnologije revolucionarne naravi je Windows Presentation Foundation (WPF). Prilikom izrade aplikacija, WPF se oslanja na korištenje XAML-a. Kratica XAML je kratica za Extensible Application Markup Language - proširivi jezik za označavanje aplikacija. Prvi put predstavljen 2006., ovaj novi način izgradnje aplikacija unutar Microsoftovog okruženja dio je .NET Framework 3.0, 3.5 i 4. To znači da za pokretanje bilo koje WPF aplikacije morate osigurati da klijentsko računalo ima . Instaliran NET Framework. .NET Framework 3.0, 3.5 ili 4. WPF aplikacije dostupne su za Windows 7, Windows Vista, Windows XP, Windows Server 2003 i Windows Server 2008 (samo ti operativni sustavi dopuštaju instalaciju .NET Framework 3.0 , 3,5 ili 4).

XAML je XML deklaracija koja se koristi za stvaranje obrazaca koji predstavljaju sve vizualne aspekte i ponašanje WPF aplikacija. Budući da se WPF aplikacijom može manipulirati programski, ova tehnologija predstavlja korak u smjeru deklarativnog programiranja prema kojem se danas kreće cijela industrija. Deklarativno programiranje znači da umjesto stvaranja objekata pisanjem koda u kompajliranom jeziku kao što je C#, VB ili Java, sve se deklarira pomoću programiranja sličnog XML-u.

Windows usluge

Windows usluga ( Windows usluga, izvorno nazvan NT Service) je program dizajniran za rad u pozadini na Windows NT/2000/XP/2003/Vista/7 (ali ne i Windows 9x). Ove su usluge korisne kada trebate održavati programe spremnima da odgovore na događaje bez potrebe da ih izričito pokrećete na inicijativu korisnika. Dobar primjer je World Wide Web Service na web poslužiteljima, koji osluškuje web zahtjeve klijenata.

Razvijanje usluga u C# je vrlo jednostavno. U imenskom prostoru Sustav.Usluga.Proces dostupne su osnovne klase .NET okruženja koje vam omogućuju rješavanje većine zadataka predložaka povezanih s usluge sustava. Osim toga, Visual Studio .NET omogućuje stvaranje C# Windows Service projekta koji koristi izvor C#.

Windows Communication Foundation (WCF)

Dok istražujete kako Microsoftove tehnologije premještaju podatke i usluge s jedne lokacije na drugu, otkrit ćete da imate širok izbor moguća rješenja. Na primjer, možete koristiti ASP.NET Web Services, .NET Remoting, Enterprise Services ili MSMQ. Koju tehnologiju odabrati? Odgovor na ovo pitanje diktira ono što pokušavate postići, budući da je svaka od ovih tehnologija poželjnija u određenoj situaciji.

Imajući ovo na umu, Microsoft je doista objedinio sve ove tehnologije, au verziji .NET Framework 3.0, kao i njenom uključivanju u .NET Framework 3.5 i 4, postoji jednostruki način kretanje podataka - Windows Communication Foundation (WCF). Knjižnica WCF pruža mogućnost početne izgradnje usluge i zatim isporuke ove usluge na različite načine (čak i preko različitih protokola) jednostavnom promjenom konfiguracijske datoteke. WCF je vrlo moćno novo sredstvo međusobnog povezivanja distribuiranih sustava.

Windows Workflow Foundation (WF)

Usluga Windows Workflow Foundation (WF) prvi put je predstavljena u .NET Framework 3.0, ali je sada prošla veliku reviziju, s rezultatom da će je mnogi sada smatrati mnogo korisnijom. Vidjet ćete da je Visual Studio 2010 uvelike poboljšao WF iskustvo, čineći mnogo lakšim stvaranje vlastitih radnih niti. Također ćete pronaći nove kontrole toka, klasu Dijagram toka i niz novih radnji kao što su DoWhile, ForSvaki i ParallelForEach.

Jer. NETO Framework je moćna platforma za razvoj aplikacija, omogućuje vam razvoj aplikacija potpuno različitih vrsta.

desktop aplikacije (aplikacije koje se pokreću na lokalnom računalu korisnika);

web aplikacije (aplikacije koje rade unutar web poslužitelja i dostupne su korisniku putem preglednika koristeći HTTP/HTTPS protokol);

Web aplikacije s bogatim korisničkim sučeljem (aplikacije koje se isporučuju korisniku putem HTTP/HTTPS protokola unutar preglednika i izvršavaju na strani klijenta);

web usluge (softverski kod koji se izvodi na strani poslužitelja i može se pozvati s klijenta za primanje podataka ili izvođenje operacije);

mobilne aplikacije (aplikacije koje rade na Mobilni uredaji Oh).

Za svaku od navedenih vrsta aplikacija u sastavu. NETO Framework, postoje odgovarajuće tehnologije koje vam omogućuju izradu aplikacija. Osim, . NETO Framework sadrži uobičajene biblioteke koje se mogu koristiti u različitim vrstama aplikacija. Ove biblioteke uključuju sljedeće biblioteke:

· za rad sa žicama;

za rad s matematičkim funkcijama;

za rad s grafikom

pristup podacima;

· rad s datotekama i druge ulazno-izlazne operacije;

obavljati kriptografske operacije;

· organizirati sinkronizaciju podataka između izvora podataka;

i ogroman broj drugih knjižnica.

Pogledajmo pregled svake vrste aplikacija. Kao što je gore navedeno, za svaku od vrsta aplikacija na platformi. NETO Okvir, postoje posebni predlošci projekta.

Aplikacije za stolna računala razlikuju se po tome što se pokreću izravno na računalu korisnika. Ovo je najčešći tip aplikacije. Aplikacije za stolna računala obično imaju pristup na resurse korisničkog računala, kao što su HDD, audio oprema itd. Prednosti ove vrste primjene uključuju interaktivnost korisničko sučelje i mogućnost rada aplikacije bez obzira na mrežnu vezu Internet i druge resurse. Međutim, da bi takve aplikacije radile, moraju biti instalirane na lokalu Računalo.

Desktop aplikacije mogu se podijeliti u tri vrste - prozorske aplikacije, konzolne aplikacije i usluge. Windows. Prozorske aplikacije imaju grafičko sučelje. Konzolne aplikacije obično izgledaju ovako naredbeni redak, A sučelje takve su aplikacije tekstualne, a ne grafičke. Na kraju, usluge Windows uopće nemaju korisničko sučelje, već rade u pozadini.

Za izradu aplikacija s prozorskim grafičkim sučeljem unutar platforme. NETO Mogu se koristiti tehnologije okvira Windows Obrasci (dostupni na . NETO Okvir 1.0) i Windows Presentation Foundation(dostupno od NETO Okvir 3.0). Najnovija tehnologija je novija i više obećava.


Web aplikacije razlikuju se od stolnih po tome što rade na daljinu na web poslužitelju. Korisnik koristi mogućnosti web aplikacija kroz preglednik i protokol http/https. Prednost ove vrste aplikacija je što ih nije potrebno instalirati Računalo svaki korisnik - primjena potrebno je instalirati na webu poslužitelj, nakon čega postaje dostupan svim korisnicima. Međutim, nedostatak takvih aplikacija je ograničena mogućnost izgradnje korisničkih sučelja. To je zbog činjenice da korisničko sučelje na temelju formata HTML, css i JavaScript, koji su prilično ograničeni. Stoga je funkcionalnost korisničkih sučelja obično prilično ograničena.

Budući da web aplikacije imaju ozbiljan nedostatak - hendikepiran Po oblikovanje korisničkog sučelja – pojavila se nova vrsta aplikacije koja je tzv bogate internetske aplikacije ili Internetske aplikacije s bogatim korisničkim sučeljem (Rich Internet Applications, RIA). Filozofija ovih aplikacija je da u preglednik poseban dodatak(plugin) koji može prikazati dodatne Vrsta sadržaja. Nakon toga, kada korisnik otvara stranicu u pregledniku, programski kod koji radi unutar ovog dodatka prenosi se na stranu klijenta. Budući da se u ovom slučaju sav kod izvršava na strani klijenta, programeri imaju više opcija. Po formiranje korisničkih sučelja.

Postoji nekoliko tehnologija za izradu ove vrste aplikacija. Jedna od najpoznatijih tehnologija je Adobe tehnologija. Bljesak. Osim toga, tu je i tehnologija Microsoft Silverlight, koja vam omogućuje najprikladniju integraciju s ostatkom tehnologija unutar okvira. NETO okvir.

Druga vrsta aplikacija su Usluge(ili web usluge). Usluge su neka vrsta programskog koda koji se nalazi na poslužitelju i radi Po zahtjev od korisnika. Na primjer, možete stvoriti skup usluga Po rad s podacima iz Baza podataka pohranjeni na poslužitelju. Obično druge vrste aplikacija (stolne aplikacije, web aplikacije itd.) pristupaju uslugama kako bi izvršile neku operaciju na poslužitelju ili primile podatke s poslužitelja.

Unutar platforme. NETO Framework, postoji niz tehnologija koje vam omogućuju stvaranje usluga. Najstarija tehnologija je A.S.P..NET Web usluge. Omogućuje vam stvaranje jednostavnih web usluga koje rade Po protokol http/https. Sljedeći razvoj bila je tehnologija Windows Communication Foundation(WCF). Ova platforma je najmoćniji i najfleksibilniji alat koji podržava različite vrste kanala ( http, TCP, imenovane cijevi itd.) i značajno proširuje mogućnosti programera Po stvaranje usluga.

Postoje i dodatne grane WCF projekta - ovo je WCF Sindikacija Proširenja (WCF REST) ​​​​i TEŠKOĆA.NET podaci usluge. Ovi su projekti osmišljeni kako bi olakšali izgradnju usluga pristupa podacima.

Konačno, posljednja vrsta aplikacija su mobilne aplikacije. Mobilne aplikacije rad unutar mobilnih uređaja temeljenih na operativnom sustavu Windows Mobile. Za mobilne uređaje također postoji implementacija podskupa mogućnosti. NETO Framework koji je tzv. NET Compact okvir.

Dakle, cijeli niz tehnologija unutar platforme. NETO Okvir se može prikazati sljedećim dijagramom.

.NET Framework je integrirana Windows komponenta koja podržava izgradnju i pokretanje sljedeće generacije XML aplikacija i web usluga. Prilikom razvoja .NET Frameworka uzeti su u obzir sljedeći ciljevi.

· Pružanje konzistentne objektno orijentirane programske okoline za lokalno pohranjivanje i izvođenje objektnog koda, za lokalno izvođenje koda distribuiranog preko Interneta ili za daljinsko izvođenje.

Pružanje okruženja za izvršavanje koda koje minimizira sukobe implementacije softver i kontrola verzija.

· Pružanje okruženja za izvršavanje koda koje jamči sigurno izvršavanje koda, uključujući kod koji je stvorila nepoznata ili treća strana kojoj se ne vjeruje u potpunosti.

· Omogućite okruženje za izvršavanje koda koje eliminira probleme s izvedbom kod okruženja skriptiranja ili interpretiranog koda.

Osiguravanje jedinstvenih principa rada programera za različiti tipovi aplikacije kao što su Windows aplikacije i web aplikacije.

· Razvijte interop koji je industrijski standard koji integrira kod .NET Frameworka s bilo kojim drugim kodom.

Dvije glavne komponente .NET Frameworka su Common Language Runtime (CLR) i .NET Framework Class Library. Jezgra .NET Frameworka je CLR. Runtime se može smatrati agentom koji upravlja kodom tijekom runtimea i pruža osnovne usluge kao što su upravljanje memorijom, threading i udaljeni rad. Ovo nameće stroge uvjete tipkanja i druge vrste provjera točnosti koda koje osiguravaju sigurnost i pouzdanost. Zapravo, glavni zadatak runtimea je upravljanje kodom. Kod koji pristupa vremenu izvođenja naziva se upravljani kod, a kod koji ne pristupa vremenu izvođenja naziva se neupravljani kod. Druga ključna komponenta .NET Frameworka, biblioteka klasa, pruža kompletnu objektno orijentiranu kolekciju tipova koji se koriste za razvoj aplikacija u rasponu od uobičajenih naredbenog retka ili GUI aplikacija do aplikacija koje koriste najnovije značajke ASP.NET tehnologije. , kao što su web obrasci i XML web usluge.

.NET Framework mogu ugostiti neupravljane komponente koje učitavaju Common Language Runtime (CLR) u vlastite procese i pokreću upravljani kod, čime se stvara okruženje za programiranje koje omogućuje i upravljane i neupravljane alate za izvršavanje. .NET Framework ne samo da pruža višestruko osnovno vrijeme izvođenja, već također podržava razvoj osnovnih izvođenja treće strane.


Na primjer, ASP.NET ugošćuje runtime kako bi pružio skalabilno okruženje na strani poslužitelja za upravljani kod. ASP.NET radi izravno s runtime za omogućavanje ASP.NET aplikacija i XML-a web usluge, o čemu se raspravlja kasnije u ovoj temi.

Internet Explorer je primjer neupravljane aplikacije koja ugošćuje vrijeme izvođenja (u obliku proširenja tipa MIME). Korištenje Internet Explorera za hosting runtimea omogućuje vam ugrađivanje upravljanih komponenti ili Windows Forms kontrola u HTML dokumente. Hostiranje vremena izvođenja na ovaj način čini upravljani mobilni kod (slično Microsoft® ActiveX® kontrolama) mogućim, ali uz značajna poboljšanja koja samo upravljani kod može ponuditi, kao što je polu-pouzdano izvođenje i izolirana pohrana datoteka.

Sljedeća ilustracija prikazuje odnos vremena izvođenja zajedničkog jezika i knjižnice klasa s vašim aplikacijama i cjelokupnim sustavom. Ilustracija također pokazuje kako upravljani kod funkcionira unutar veće arhitekture.

NET Framework u kontekstu

Sljedeći odjeljci detaljnije opisuju glavne komponente i značajke .NET Frameworka.


Na primjer, ASP.NET ugošćuje runtime i pruža skalabilno okruženje za upravljani kod na strani poslužitelja. ASP.NET radi izravno s runtimeom za pokretanje ASP.NET aplikacija i XML web usluga o kojima se govori kasnije u ovoj temi.

Internet Explorer primjer je neupravljane aplikacije koja ugošćuje runtime okruženje (u obliku ekstenzija tipa MIME). Hosting vremena izvođenja u Internet Exploreru omogućuje vam ugrađivanje upravljanih komponenti ili elemenata Windows kontrole Obrasci u HTML dokumente. Ovakav smještaj okoliša omogućuje izvođenje kontrolirano mobilni kod(slično Microsoft® ActiveX® kontrolama), ali sa značajnim prednostima upravljanog koda, kao što je djelomično pouzdano izvršavanje i izolirana pohrana datoteka.

Sljedeća slika prikazuje odnos između vremena izvođenja zajedničkog jezika (CLR) i biblioteke klasa sa korisničke aplikacije i cijeli sustav. Slika također pokazuje kako upravljani kod funkcionira unutar šire arhitekture.

NET Framework u kontekstu

Sljedeći odjeljci pružaju detaljniji opis glavnih komponenti i značajki .NET Frameworka.

Uvod

PLATFORMA je najmanje okruženje za izvršavanje programa i ... još nešto što određuje značajke razvoja i izvršavanja programskog koda - programske paradigme, programski jezici, skupovi osnovnih klasa.

Microsoft.NET (.NET Framework) je softverska platforma. Sadrži sljedeće glavne komponente: okruženje zajedničkog jezika (CLR) i biblioteku klasa .NET Framework (.NET FCL).

CLS (Common Language Specification) je opća specifikacija za programske jezike. To je skup konstrukcija i ograničenja koji daju smjernice autorima biblioteka i prevoditelja u .NET Frameworku. Knjižnice izgrađene prema CLS-u mogu se koristiti iz bilo kojeg programskog jezika koji podržava CLS. CLS-kompatibilni jezici (uključujući Visual C#, Visual Basic, Visual C++) mogu se međusobno integrirati. CLS je temelj za međujezičnu interoperabilnost unutar Microsoft.NET platforme.

CLR (Common Language Runtime) - Runtime Environment ili Virtual Machine. Osigurava da je montaža izvršena. Glavna komponenta .NET Frameworka. Virtualni stroj je apstrakcija enkapsuliranog (odvojenog) upravljanog operativnog sustava visoke razine koji omogućuje izvođenje programskog koda i uključuje rješavanje sljedećih zadataka:

§ upravljanje kodom (učitavanje i izvođenje),

§ upravljanje memorijom prilikom postavljanja objekata,

§ izolacija memorije aplikacije,

§ sigurnosna provjera koda,

§ pretvaranje srednjeg jezika u strojni kod,

§ pristup metapodacima (informacije proširenog tipa),

§ rukovanje iznimkama, uključujući međujezične iznimke,

§ interakcija između upravljanog i neupravljanog koda (uključujući COM objekte),

§ podrška za razvojne usluge (profiliranje, otklanjanje pogrešaka, itd.).

Ukratko, CLR je skup usluga potrebnih za izvođenje izgradnje. U ovom slučaju, programski kod sklopa može biti ili upravljan (kod, kada ga CLR posebno izvršava, aktivira sustav upravljanja memorijom) ili neupravljan ("stari" programski kod).

Sam CLR sastoji se od dvije glavne komponente: jezgre (mscoree.dll) i biblioteke osnovnih klasa (mscorlib.dll). Prisutnost ovih datoteka na disku siguran je znak da je računalo barem pokušalo instalirati .NET framework.

Jezgra runtime implementirana je kao biblioteka mscoree.dll. Kada je sklop povezan, u njega su ugrađene posebne informacije koje, kada se pokrene aplikacija (EXE) ili kada se učita biblioteka (pristup DLL-u iz neupravljanog modula - pozivanje funkcije LoadLibrary za učitavanje upravljanog sklopa), uzrokuje CLR koji treba učitati i inicijalizirati. Nakon što se CLR učita u adresni prostor procesa, runtime kernel radi sljedeće:

§ pronalazi mjesto montaže,

§ učitava sklop u memoriju,

§ analizira sadržaj sklopa (identificira klase, strukture, sučelja),

§ analizira metapodatke,

§ osigurava kompilaciju koda srednjeg jezika (IL) u upute specifične za platformu (kod asemblera),

§ vrši sigurnosne provjere,

§ koristeći glavnu nit aplikacije, prenosi kontrolu na fragment montažnog koda pretvoren u instrukcije procesora.

FCL (.NET Framework Class Library) je objektno orijentirana biblioteka klasa, sučelja i sustava tipova (tipovi vrijednosti) koji su uključeni u Microsoft .NET platformu, a odgovaraju CLS specifikaciji.

Ova biblioteka omogućuje pristup funkcionalnost sustav i namijenjen je kao osnova za razvoj .NET aplikacija, komponenti, kontrola.

NET, biblioteka klasa je druga komponenta CLR-a.

NET FCL mogu koristiti SVE .NET aplikacije, bez obzira na namjenu, arhitekturu koja se koristi za razvoj programskog jezika. Konkretno, sadrži:

§ ugrađeni (elementarni) tipovi, predstavljeni kao klase (na .NET platformi sve je izgrađeno na strukturama ili klasama),

§ klase za razvoj grafičkog korisničkog sučelja (Windows Form),

§ nastava za razvoj web aplikacija i web servisa temeljenih na ASP.NET tehnologiji (Web Forms),

§ klase za razvoj XML i Internet protokola (FTP, HTTP, SMTP, SOAP),

§ klase za razvoj aplikacija koje rade s bazama podataka (ADO.NET),

§ i mnogo više.

NET aplikacija je aplikacija dizajnirana za rad na Microsoft.NET platformi. Implementiran je u programskim jezicima koji odgovaraju CLS-u.

MSIL (Microsoft Intermediate Language, aka IL - Intermedia Language) je međujezik Microsoft.NET platforme. Izvorni kodovi za .NET aplikacije napisani su u programskim jezicima koji su u skladu s CLS specifikacijom. Za programske jezike koji su u skladu sa CLS specifikacijom, može se izgraditi pretvarač u MSIL. Dakle, programi na ovim jezicima mogu se prevesti u MSIL međukod. Zbog usklađenosti s CLS-om, kao rezultat prijevoda programskog koda napisanog na različitim jezicima, dobiva se kompatibilan IL kod.

Zapravo, MSIL je asembler virtualnog procesora.

METADATA - prilikom pretvaranja programskog koda u MSIL formira se i blok METADATA koji sadrži informacije o podacima koji se koriste u programu. Zapravo, to su skupovi tablica koje sadrže informacije o tipovima podataka definiranim u modulu, o tipovima podataka na koje ovaj modul upućuje. Prije su se ove informacije pohranjivale odvojeno. Na primjer, aplikacija može uključivati ​​informacije o sučeljima koja su opisana u Interface Definition Language (IDL). Metapodaci su sada dio upravljanog modula.

Konkretno, metapodaci se koriste za:

§ očuvanje informacija o tipovima. Prilikom kompajliranja, datoteke zaglavlja i biblioteke više nisu potrebne. Kompajler čita sve potrebne informacije izravno iz upravljanih modula,

§ provjera koda tijekom izvođenja modula,

§ dinamičko upravljanje memorijom (oslobađanje memorije) tijekom izvođenja modula,

§ kada razvijate program koristeći standardne alate (Microsoft Visual Studio.NET)

§ Na temelju metapodataka pruža se dinamički savjet (IntelliSense).

Jezici za koje je implementiran MSIL prijevod:

i još mnogo drugih jezika.

Izvršna datoteka - Bez obzira na kompilator (i izvorni jezik), rezultat prevođenja .NET aplikacije je upravljana izvršna datoteka (upravljani modul). Ovo je standardna prijenosna izvršna datoteka (PE - Portable Executable) Windows datoteka.

Elementi upravljanog modula prikazani su u tablici.

Upravljani modul sadrži upravljani kod.

Upravljani kod je kod koji se izvodi u CLR-u. Kod je izgrađen na temelju struktura i klasa deklariranih u izvornom modulu koji sadrži deklaracije metoda. Upravljani kod mora odgovarati određenoj razini informacija (metapodataka) za okruženje vremena izvođenja. Kodom za C#, Visual Basic i JScript upravlja se prema zadanim postavkama. Visual C++ kodom se ne upravlja prema zadanim postavkama, ali kompajler može proizvesti upravljani kod dajući argument u naredbenom retku (/CLR). Jedna od značajki upravljanog koda je prisutnost mehanizama koji vam omogućuju rad s UPRAVLJANIM PODACIMA.

Upravljani podaci - objekti koji su alocirani u upravljanoj memoriji (na upravljanoj hrpi) tijekom izvođenja koda modula i uništava ih CLR skupljač smeća. Podacima C#, Visual Basic i JScript .NET upravlja se prema zadanim postavkama. C# podaci također se mogu označiti kao neupravljani.

Sklop je osnovni građevni blok aplikacije u .NET Frameworku. Upravljani moduli kombiniraju se u sklopove. Sklop je logično grupiranje jednog ili više upravljanih modula ili datoteka resursa. Upravljani moduli u sklopovima pokreću se u Runtime Environment (CLR). Sklop može biti ili izvršna aplikacija (u .EXE datoteci) ili knjižnični modul (u .DLL datoteci). U isto vrijeme, sklop nema ništa zajedničko s običnim (starim stilom!) izvršnim aplikacijama i modulima knjižnice.

Skupštinska deklaracija (Manifest) - komponenta sklopovi. Drugi skup tablica metapodataka koji:

§ identificira sklop u obliku tekstualnog naziva, njegove verzije, kulture i digitalnog potpisa (ako se sklop dijeli među aplikacijama),

§ određuje datoteke uključene u sastav (po imenu i hash-u),

§ navodi vrste i resurse koji postoje u sklopu, uključujući opis onih koji se izvoze iz sklopa,

§ navodi ovisnosti o drugim sklopovima,

§ Određuje skup prava potrebnih za pravilan rad sklopa.

Ove se informacije koriste tijekom izvođenja kako bi aplikacija radila ispravno.

Procesor NE MOŽE izvršiti IL kod. A prevođenje IL koda provodi JIT kompajler (just in time - at the right time), koji po potrebi aktivira CLR i izvršava ga procesor. U ovom slučaju, rezultati JIT prevodioca pohranjuju se u RAM. Uspostavlja se korespondencija između fragmenta prevedenog IL koda i odgovarajućeg memorijskog bloka, što kasnije omogućuje CLR-u da prenese kontrolu na instrukcije procesora snimljene u ovom memorijskom bloku, zaobilazeći ponovljeni poziv JIT kompajleru.

Zajednički jezik za izvođenje omogućuje suradnju i interakciju softverskih komponenti implementiranih u različitim programskim jezicima.

Na temelju prethodno formiranog bloka metapodataka, CLR pruža UČINKOVITU interoperabilnost između pokrenutih .NET aplikacija.

Za CLR, svi sklopovi su isti, bez obzira na to na kojim programskim jezicima su napisani. Glavna stvar je da su u skladu s CLS-om. Zapravo, CLR uništava granice programskih jezika (međujezična interoperabilnost). Stoga, zahvaljujući CLS-u i CTS-u, .NET aplikacije zapravo ispadaju MSIL (IL) aplikacije.

CLR rješava mnoge probleme koji su tradicionalno bili u fokusu programera aplikacija. Funkcije koje obavlja CLR uključuju:

§ provjera i dinamička (JIT) kompilacija MSIL koda u instrukcije procesora,

§ upravljanje memorijom, procesima i nitima,

§ organizacija interakcije između procesa,

§ rješavanje sigurnosnih problema (u okviru sigurnosne politike koja postoji u sustavu).

AppDomain je logički spremnik sklopa koji se koristi za izolaciju aplikacije unutar adresnog prostora procesa. Svi objekti koje generira aplikacija, stvaraju se unutar određene aplikacijske domene. U jednom procesu operacijskog sustava može postojati više aplikacijskih domena. CLR izolira aplikacije upravljanjem memorijom unutar domene aplikacije.

Kod koji se izvodi u CLR-u (CLR proces) odvojen je od ostalih procesa koji se istovremeno izvode na računalu.

Uobičajeni proces pokreće sustav unutar posebno dodijeljenog adresnog prostora za taj proces. CLR pruža mogućnost pokretanja više upravljanih aplikacija u JEDNOM PROCESU. Svaka upravljana aplikacija povezana je s vlastitom domenom aplikacije (skraćeno AppDomain). Uz glavnu domenu, u aplikaciji je moguće kreirati nekoliko dodatnih domena.

Struktura CLR runtimea prikazana je na slici.

Svojstva domene:

§ domene su međusobno izolirane. Objekti stvoreni unutar jedne domene nedostupni su iz druge domene,

§ CLR može osloboditi domene zajedno sa svim sklopovima pridruženim tim domenama,

§ moguće dodatna konfiguracija i zaštita domene

§ Implementiran je poseban mehanizam sigurnog pristupa (marshaling) za razmjenu podataka između domena.

§ .NET Framework je razvio vlastiti model komponenti čiji su elementi .NET sklopovi (.NET-assembly), a za naprijed i nazad kompatibilnost s COM/COM+ modelom, CLR ima ugrađene mehanizme (COM Interop) koji omogućuju pristup COM objektima prema .NET pravilima i .NET sklopovima prema COM pravilima. U isto vrijeme, .NET aplikacije ne zahtijevaju registraciju komponenti u registar sustava Windows.

Za pokretanje .NET aplikacije dovoljno je sklopove koji se odnose na ovu aplikaciju smjestiti u isti direktorij. Ako se u isto vrijeme sklop može koristiti u nekoliko aplikacija, tada se postavlja i registrira pomoću posebnog uslužnog programa u GAC (Global Assembly Cache).

CTS - Common Type System Podržavaju ga svi jezici platforme. Zbog činjenice da je .NET dijete OOP-a, ovdje govorimo o elementarnim tipovima, klasama, strukturama, sučeljima, delegatima i nabrajanjima.

Common Type System je važan dio runtimea, definira strukturu sintaktičkih konstrukata, kako se deklariraju, koriste i primjenjuju. OPĆI TIPOVI vrijeme izvođenja. CTS sadrži osnovne podatke o sustavu OPĆIH PREDEFINIRANIH tipova, njihovu upotrebu i upravljanje (pravila pretvorbe vrijednosti). CTS igra važnu ulogu u integraciji višejezičnih upravljanih aplikacija.

Prostor imena je način organiziranja sustava tipa u jednu grupu. Postoji zajednička knjižnica osnovnih klasa zajedničkog jezika. A koncept imenskog prostora pruža učinkovitu organizaciju i navigaciju u ovoj knjižnici. Bez obzira na programski jezik, pristup određenim klasama omogućen je njihovim grupiranjem unutar zajedničkih imenskih prostora.

Imenski prostor Svrha
Sustav
Sustav.Podaci Za pristup bazama podataka
System.Data.Common
System.Data.OleDb
System.Data.SqlClient
Sustav.Zbirke Klase za rad s kontejnerskim objektima
Sustav.Dijagnostika Klase za praćenje i otklanjanje pogrešaka koda
Sustav.Crtanje Grafičke potporne klase
System.Drawing.Drawing2D
Sustav.Crtanje.Ispis
Sustav.IO I/O podrška
System.Net Podrška za prijenos podataka preko mreža
Sustav.Odraz Rad s prilagođenim tipovima tijekom izvođenja
System.Reflection.Emit
System.Runtime.InteropServices Podrška za interakciju s "običnim kodom" - DLL-ovi, COM poslužitelji, daljinski pristup
System.Runtime.Remoting
Sustav.Sigurnost Kriptografija, dopuštenja
Sustav.Threading Rad s potocima
Sustav.WEB Rad s web aplikacijama
System.Windows.Form Rad s elementima Windows sučelje
Sustav.XML Podrška za XML podatke

Izvršenje neupravljanih izvršnih modula (obične Windows aplikacije) omogućuje izravno Windows sustav. Neupravljani moduli pokreću se kao "jednostavni" procesi u Windows okruženju. Jedini uvjet koji takvi moduli moraju zadovoljiti je da ispravno rade u Windows okruženju. Moraju raditi "ispravno" (nemojte popustiti sustav, izbjegavajte curenje memorije, ne blokirajte druge procese i ispravno koristite alate samog OS-a za rad u ime procesa). Odnosno, poklopiti najviše Opća pravila rad pod Windowsima.

Istovremeno, većina problema ispravnog izvođenja neupravljanog modula (problemi interakcije, dodjele i oslobađanja memorije) problemi su programera aplikacija. Na primjer, dobro poznata COM tehnologija je način organiziranja interakcije heterogenih komponenti unutar aplikacije.

Objekt je, u širem smislu, područje memorije (na stogu ili hrpi) dodijeljeno tijekom izvođenja programa za pisanje bilo koje vrijednosti. Karakterizira ga vrsta (fiksni skup svojstava koja određuju veličinu zauzetog područja, način na koji se vrijednost tumači, raspon vrijednosti, skup radnji dopuštenih prilikom manipuliranja objektom) mjestom u memoriji (adresa ).

Skupljanje smeća je mehanizam koji omogućuje CLR-u da odredi kada objekt više nije dostupan u upravljanoj memoriji programa. Skupljanje smeća oslobađa upravljanu memoriju. Za programera aplikacija, prisutnost mehanizma za skupljanje smeća znači da više ne mora brinuti o oslobađanju memorije. Međutim, to može zahtijevati promjenu stila programiranja, na primjer, posebnu pozornost treba obratiti na postupak oslobađanja resursa sustava. Morate implementirati metode koje oslobađaju sistemske resurse koji su pod kontrolom aplikacije.

Stog je posebno organizirano područje memorije dizajnirano za privremeno pohranjivanje vrijednosti objekata (varijabli i konstanti), za prosljeđivanje parametara pri pozivanju metoda, za pohranjivanje povratne adrese. Upravljanje hrpom prilično je jednostavno u usporedbi s hrpom. Temelji se na promjeni vrijednosti odgovarajućeg registra na vrhu steka. Kada se veličina hrpe smanji, objekti se jednostavno izgube.

Program u C#

Program je dobro oblikovan (koji C# prevodilac ne izaziva zamjerke) niz naredbi od kojih se formira sklop.

Općenito, programer stvara datoteku koja sadrži deklaracije klasa, koja se šalje prevoditelju kao ulaz. Rezultat kompilacije predstavlja prevoditelj kao sklop i određen je programerovim preferencijama. U principu, sklop može biti dvije vrste:

§ Prijenosna izvršna datoteka (PE datoteka s ekstenzijom .exe), pogodna za izravno izvršavanje od strane CLR-a,

§ Datoteka biblioteke dinamičke veze (DLL datoteka s ekstenzijom .dll) dizajnirana je za ponovnu upotrebu kao komponenta unutar aplikacije.

U svakom slučaju, na temelju ulaznog koda, prevoditelj gradi modul na IL-u, manifest i formira sklop. U budućnosti se asembler može izvesti nakon JIT kompilacije ili se može koristiti kao dio drugih programa.



Ako primijetite pogrešku, odaberite dio teksta i pritisnite Ctrl + Enter
UDIO:
NexxDigital - računala i operativni sustavi