Programiranje

Nove funkcije in izboljšave v .Net Framework 4.5

Microsoft .Net Framework je v zadnjih nekaj letih veliko dozorel. Uvedene so bile nove funkcije in izboljšave, ki jih optimizirajo in naredijo hitrejše, varnejše, stabilnejše in zmogljivejše. V tem članku bi rad predstavil ptičje perspektive pomembnih izboljšav v .Net Framework 4.5.x.

Strašne izjeme Out of Memory

To je grozna napaka in lahko za vas lahko postane nočna mora. Izjeme, ki nimajo pomnilnika, lahko prekinejo nadzor nad vašo aplikacijo, tudi če imate nameščenega dovolj fizičnega pomnilnika. Se šališ? Ni šans! Naj pojasnim, zakaj se to lahko zgodi in kako je bilo to vprašanje obravnavano v .Net Framework 4.5.

Predmeti, ki jih ustvari upravljano okolje, so shranjeni v kopici. Čez nekaj časa se lahko kopica razdrobi zaradi ustvarjanja in odstranjevanja predmetov. Fragmentacija se nanaša na razpršene luknje v pomnilniku (prosti pomnilnik). V takem primeru bi pogosto opazili izjeme Out of Memory, če vaša aplikacija uporablja veliko količino pomnilnika in ker čas izvajanja ne bi mogel dodeliti prostora, kadar in če bi bilo potrebno, tudi če bi bilo prostora na voljo.

Sliši se čudno? No, vsota lukenj v pomnilniku morda zadostuje za to zahtevo, toda ker so te luknje v pomnilniku razpršene, jih runtime ne more uporabiti.

Zbiranje kupa velikih predmetov na zahtevo

Na novo je uvedeno zbijanje kupa velikega predmeta na zahtevo, da se kompaktno kopiči in odpravi drobljenje kopice. Zbijanje pomeni stiskanje vseh teh razpršenih pomnilniških lukenj v en blok. Ta funkcija je na voljo (samo na zahtevo) v .Net Framework 4.5.1 za ublažitev težav z izjemo brez pomnilnika. Če želite omogočiti to funkcijo, morate nastaviti lastnost LargeObjectHeapCompactionMode.

Mimogrede, ta lastnost ima lahko eno od dveh vrednosti: Default in CompactOnce. Prvi, če bi bil nastavljen, bi prezrl stiskanje velike kopice predmetov med ciklom GC. Če uporabite slednjo, bi bil velik kup predmetov stisnjen v naslednjem ciklu.

Podpora za odpornost ADO.Net Connection

Za vzpostavitev prožnosti povezave za vzpostavitev nedejavnih ali prekinjenih povezav vam ni več treba pisati kode. .Net Framework 4.5.1 ima vgrajeno to funkcijo za ponovno ustvarjanje prekinjenih povezav do baze podatkov.

Izboljšan čas zagona: optimizacija profila

Optimizacija profila je funkcija, ki je bila uvedena v .Net Framework 4.5 in zmanjšuje čas zagona aplikacije. Kako to deluje? Profil je datoteka, ki vsebuje metode, ki bi jih aplikacija potrebovala ob zagonu. Ko se aplikacija zažene, Just in Time Compiler (JIT) deluje v niti v ozadju in v več procesorjih, da ustvari izvorno kodo iz kode IL.

Izboljšave zbiranja smeti: predstavljen strežnik GC

V upravljanem okolju .Net zbiranje smeti uporablja za čiščenje neuporabljenih ali nereferenciranih predmetov - predmetov, ki niso več potrebni. V starejših različicah .Net Framework je GC začasno zaustavil niti aplikacije, ko je bil zaseden s čiščenjem pomnilnika. To je bilo veliko ozko grlo pri zmogljivosti, saj je morala vaša aplikacija počakati, da je GC končal svoje delo.

Z .Net Framework 4.5 to ni več težava; strežnik GC je bil na novo predstavljen, da olajša čiščenje objektov dveh generacij z uporabo niti v ozadju in tako zmanjša obremenitev glavne niti GC, saj so niti aplikacij veliko manj pogoste. Z .Net Framework 4.5 je zbiranje smeti v ozadju podprto v strežniku in na GC delovne postaje. Zdaj je podprto tudi sočasno zbiranje smeti; namenska nit po potrebi izvede zbiranje smeti.

Opazne izboljšave v .Net Framework 4.5.2

Microsoft je nedavno izdal .Net Framework 4.5.2. Izdanje je objavil Microsoft v blogu .Net Framework. Tu je povezava: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Poleg izboljšav pri profiliranju in odpravljanju napak obstajajo opazne izboljšave v ASP.Net v .Net Framework 4.5.2. Zdaj lahko z metodami HostingEnvironment.QueueBackgroundWorkItem asinhrono načrtujete majhna opravila v ozadju. Če želite pregledati in spremeniti glave odzivov in odzivne kode, lahko uporabite metode HttpResponse.AddOnSendingHeaders in HttpResponseBase.AddOnSendingHeaders. Za nadaljnje branje si lahko ogledate ta članek MSDN: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

Kaj sledi?

Microsoft je novembra lani izdal predogledno različico .Net Framework 4.6. Kopijo .Net Framework 4.6 lahko prenesete od tukaj: //www.microsoft.com/en-us/download/details.aspx?id=44928

Programski velikan je tudi napovedal, da bo preklical podporo za .Net Framework različice 4.x do 4.5.1 po januarju 2016. Več o tem preberite tukaj: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx

$config[zx-auto] not found$config[zx-overlay] not found