From Wikipedia, the free encyclopedia
Microsoft .NET je ogrodje za razvijanje programske opreme, ki teče pretežno na operacijskih sistemih Microsoft Windows. Najnovejša različica je 4.8. .NET vključuje obsežno knjižnico razredov (FCL) in zagotavlja medopravilnost jezikov (vsak programski jezik lahko uporablja kodo napisano v drugih programskih jezikih skladnih s specifikacijo CLI). Programi napisani za .NET se izvajajo v programskem okolju (v nasprotju s strojnim okoljem kot pri C ali C++) (CLR), vrsti aplikacijskega virtualnega računalnika, ki je definiran v specifikaciji CLI. Izvajalsko okolje CLR zagotavlja storitve kot so varnost, upravljanje s spominom (v obliki GC) in upravljanje z izjemami, zaradi česar je koda napisana za .NET upravljano kodo.
Osnovna knjižnica (FCL) in izvajalsko okolje (CLR) skupaj tvorita ogrodje .NET. FCL zagotavlja orodja za uporabniške vmesnike, podatkovni dostop, povezljivost z bazami podatkov, kriptografske postopke, funkcije za razvoj spletnih aplikacij, numerične postopke in spletno komunikacijo. Razvijalci izdelujejo knjižnice in aplikacije s kombiniranjem lastne izvorne kode s knjižnicami ogrodja .NET in drugimi knjižnicami. Za .NET je na voljo veliko odprtokodnih in komercialnih knjižnic, katerih velik del je prenosljiv na različne platforme. Prenosljivost je vgrajena v osnovne koncepte ogrodja in čeprav originalna Microsoftova izvedba cilja na operacijski sistem Windows, alternativne izvedbe kot je Mono zagotavljajo prenosljivost na številne sodobne platforme. Ovira za prenosljivost je lahko odvisnost knjižnic od sistemskih klicev ali od knjižnic v strojnem jeziku, ki niso napisane za .NET (primer je WPF). Ogrodje .NET je med drugim namenjeno uporabi v večini novejših aplikacij za platformo Windows. Za razvoj programov so na voljo številna integrirana razvojna okolja, od katerih je najbolj razširjena uporaba okolij Visual studio in MonoDevelop.
Razvoj ogrodja .NET se je začel v obliki zaprtega komercialnega sistema, vendar je podjetje že v začetnih fazah razvoja (pred prvo objavo) delovalo tudi v smeri standardizacije. Kljub standardizaciji pomembnih delov ogrodja so različni razvijalci (predvsem tisti iz odprtokodnih skupnosti) izražali bojazni pri uporabi ogrodja za razvoj aplikacij v povezavi s patenti in določenih delov implementacij. Microsoft je zato spreminjal strategijo razvoja okolja .NET na načine, ki so bolj skladni s sodobnimi modeli razvoja programske opreme na podlagi projektov v lasti skupnosti. Poleg izdajanja dodatni patentnih obljub, ki ščitijo razvijalce pred morebitnimi patentnimi tožbami, je Microsoft v zadnjem času večje dele razvoja okolja prenesel na model, pri kateremu se uporabljajo proste odprtokodne licence in je razvoj dostopen širši skupnosti razvijalcev.
Iz okolja .NET je izšla družina platformov skladnih z .NET za razvoj mobilnih aplikacij, vljučenih naprav, alternativnih operacijskih sistemov in vtičnikov za internetne brskalnike. Zmanjšana različica ".NET Compact Framework" je dostopna za platforme Windows CE (vključno z napravami na osnovi Windows Mobile). Ogrodje .NET Micro Framework je prilagojeno sistemom z zelo omejenimi strojnimi zmogljivostmi. SilverLight je bil razvit kot vtičnik za internetne brskalnike. Mono je na voljo za številne operacijske sisteme in je med drugim prilagojeno za operacijske sisteme za pametne telefone (Android in iOS) in igralne naprave. Ogrodje .NET Core ja namenjeno razvoju aplikacij prenosljivih med različimi platformami, razvoju v oblaku in Univerzalni Windows Platformi (UWP).
Čeprav nekateri verjamejo, da je tehnologijo .NET razvil Microsoft kot njihovo verzijo ogrodja Java, je v resnici dosti skupin, ki so delali na .NET ogrodju, nameravalo izdelati COM+ 2.5. Ostali oddelki so prav tako izboljševali druge Microsoftove tehnologije - oddelek za mrežne strežnike je, na primer, razvijal ASP 4.0 in ostali oddelki so razvijali »Next-Generation Web Services«. Delo različnih oddelkov se je na koncu združilo v en sistem, ki se sedaj imenuje .NET.
Ko se je Microsoft leta 1998 odločil, da bo prenehal z uporabo Sun-ove tehnologije Java, se je začela transformacija Microsoftovega produkta J++ v začetke projekta .NET. Za razliko od aplikacij v Javi, ki so napisane v enem jeziku za mnogo različnih platform, so bile na začetku razvoja aplikacije v .NET lahko napisane v več različnih jezikih, toda samo za en operacijski sistem (Windows). Pozneje se je s pojavom alternativnih izvedb ogrodja .NET (predvsem okolja Mono s prvim izidom leta 2003) pojavila možnost pisanja aplikacij za različne platforme.
Decembra 2001 sta bila CLI in C# ratificirana kot ECMA standarda. [1] Ustrezna ISO standarda sta sledila aprila 2003. Trenutni verziji standarda sta ISO/IEC 23271:2012 in ISO/IEC 23270:2006.[2][3]
12. novembra 2014 je Microsoft najavil izdajo .NET Core pod odprtokodno licenco, kot del naporov za prenosljivo podporo .NET na različnih platformah in odprtokodni model razvoja pod okriljem .NET Foundation.[4] .NET Core naj bi bila osnova prihodnjih platform .NET. Istočasno je bila najavljena sprememba licence za referenčno izvorno kodo .NET v bolj odprto licenco kot je Ms-RSL.[5][6][7]
V novembru 2014, je Microsoft naznanil tudi izdajo prenovljenih patentnih obljub (zagotovila, da Microsoft ne bo pravno uporabil patentne zaščite proti razvijalcem tehnologij temelječih na .NET). Zaradi omejitev v prejšnjih zagotovilih glede patentov povezanih z .NET so bili projekti kot je Mono v pravni sivini, ker so se zagotovila nanašala striktno na 4. edicijo standardov ECMA-334 in ECMA-335. Nova patentna obljuba ni vezana na določeno verzijo standarda in razširi pokritje na vse .NET tehnologije, ki so dokumentirane v MSDN, tudi, če te niso specifirane v standardih ECMA. To omogoča Monu in sorodnim projektom, da so v koraku z novimi značilnostmi ogrodja .NET, ne da bi njihovi razvijalci tvegali tožbe na osnovi patentnih zahtev. Zagotovilo pa zahteva, da mora vsaka impementacija ogrodja .NET ohranjati minimalno skladnost z obveznimi določili specifikacije CLI.[8]
31. marca 2016 je Microsoft na svoji letni konferenci oznanil, da bodo v celoti licencirali ogrodje Mono pod Licenco MIT, tudi v delih, ko je bila prej potrebna komercialna licenca. [9] Microsoft je dodatno razširil svojo prejšnjo patentno obljubo za Mono z izjavo, da ne bo sprožil patentnih zahtev proti nikomur, ki bo "uporabljal, prodajal, ponujal v prodajo, uvažal ali distribuiral okolje Mono". [10][11] Projekt Mono je bil prenešen pod skrbništvo organizacije .NET Foundation. Microsoftovo sporočilo za javnost poudarja, da bo strežniški del ogrodja .NET v celoti odprtokoden in bo omogočal razvoj prenosljiv med različnimi platformami, da pa Microsoft nima načrtov izdati ogrodj WPF ali Windows Forms pod odprtokodno licenco. [12][13]
"Common Language Infrastructure" (CLI) zagotavlja platformo za razvoj in izvajanje aplikacij, ki je neodvisna od jezika. CLI vsebuje funkcije za ravnanje z izjemami (angleško "exception handling"), avtomatično čiščenje spomina (angleško "garbage collection"), varnost in medopravilnost (izvajanje kode, ki je napisana v ratzličnih programskih jezikih). Specifična Microsoftova izvedba CLI, ki se uporablja v ogrodju .NET, se imenuje Common Language Runtime (CLR) in služi kot izvajalsko okolje ogrodja .NET. Vsi programi za .NET se izvajajo pod nadzorom CLR, kar zagotavlja določene lastnosti na področjih upravljanja s spominom, varnosti in upravljanja z izjemami.
Programi, ki se izvajajo na CLI, so najprej prevedeni v vmesni jezik (Common Intermediate Language, CIL, v nasprotju s prevajanjem v strojno kodo pri jezikih kot je C++). Ob izvedbi programa poseben prevajalnik ("just-in-time compiler", JIT) pretvori kodo v CIL v strojno kodo. JIT lahko posamezne dele kode prevede ločeno, šele takrat, ko se zares izvedejo. Deli programa, ki se v določeni seansi nikoli ne izvedejo, se zaradi tega ne prevedejo, hkrati pa se vsak del kode ob izvajanju programa prevede v strojno kodo le enkrat, pri vseh nadaljnjih klicih v ta del kode se uporabi že prevedena strojna koda.
Zaradi načina izvajanja pravimo, da je koda programov za .NET (in sorodna okolja) upravljana koda (angleško managed code). Izraz se uporablja tako za izvorno kodo (npr. v jeziku C#) kot tudi za kodo v CIL. Kodi v vmesnem jeziku pravimo tudi bitna koda (angleško "byte code", podoben koncept pozna tudi Java). Sprotno prevajanje iz vmesnega jezika povzroča zakasnitve pri izvajanju. Za izboljšanje učinkovitosti je v ogrodju .NET na voljo "Native Image Generator" (NGEN), ki celoten program s pripadajočimi knjižnicami vnaprej prevede v strojno kodo (angleško temu postopku pravijo "ahead-of-time compilation").
Prevedena koda v vmesnem jeziku (CIL) je shranjena v CLI sklopih (angleško "CLI Assemblies"). Po specifikaciji morajo biti sklopi v datotečnem formatu Portable Executable (PE), v katerem so npr. datoteke .dll (dinamične knjižnice) in .exe (programi, ki se izvajajo) na operacijskem sistemu Windows. Vsak sklop je sestavljen iz ene ali več datotek, od katerih mora ena vsebovati manifest, v katerem so meta podatki za ta sklop. Polno ime sklopa (ki je različno od imena vsebujoče datoteke na disku) je sestavljeno iz enostavnega imena, številke verzije, kulture in simbola javnega ključa. Sklopi so za izvajalsko okolje (CLR) ekvivalentni, kadar imajo enako polno ime. Polno ime sklopa je lahko na primer:
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
V tem primeru je "mscorlib" enostavno ime sklopa. Niz "b77a5c561934e089" je simbol javnega ključa, ki enolično identificira pripadajoči javni ključ. Ta javni del para ključev za asimetrično enkripcijo, s katerim je bil sklop podpisan.
Sklopi so lahko podpisani s privatnim ključem razvijalca sklopa (vendar to ni nujno). V tem primeru vsebuje polno ime sklopa simbol javnega ključa, ki pripada paru ključev razvijalca, s katerim je bil sklop podpisan. Na ta način lahko izvajalsko okolje (CLI oz. CLR v primeru Microsoftove izvedbe .NET) preveri izvirnost (avtentičnost) sklopa. Pri povezovanju (angleško "linking") povezovalnik pri klicih v povezane sklope pove s polnim imenom, v katerem sklopu je koda, ki se bo izvedla (pri izvajanju se ta sklop naloži, če do trenutka klica še ni bil naložen, za to poskrbi izvajalsko okolje, CLI). Ker polno ime vsebuje simbol javnega ključa, lahko izvajalsko okolje pred nalaganjem sklopa preveri, ali gre resnično za pravi sklop, ki ga je podpisal določen razvijalec. Če bi nekdo na mesto izvirnega sklopa podtaknil ponarejen sklop z zlonamerno kodo, bi izvajalsko okolje zaznalo, da ne gre za izviren sklop (čeprav bi bilo polno ime in številne druge lastnosti enake), ker podpis sklopa ne bi ustrezal pravemu paru ključev. To je možno preveriti iz simbola javnega ključa (ki je del polnega imena), ker ta enolično identificira par ključev, od katerih je bil privatni ključ uporabljen pri podpisovanju izvirnega sklopa. Ta sistem preprečuje napade z zamenjavo sklopov z nepravimi sklopi, ki lahko vsebujejo škodljivo kodo.
To, da sta številka verzije in simbol javnega ključa del polnega imena sklopa, omogoča, da lahko imamo v isti shrambi več različic istega sklopa različnih razvijalcev. Tako lahko imamo programe, ki so odvisni od različnih izvedb nekega sklopa (npr. različnih verzij sklopa ali sklopa, ki izvira od različnih razvijalcev). Na primer, skupaj lahko hranimo sklop mscorlib, ki je del Microsoftove izvedbe .NET in ekvivalenten sklop, ki je del ogrodja Mono. Če isti program prevedemo najprej z uporabo .NET in nato z uporabo Mono, bosta tako narejeni različici naložili različni izvedbi sklopa, ki se morda razlikujeta le po simbolu javnega ključa. Takšnih različnih izvedb istega sklopa ne moremo hraniti v istem direktoriju, ker bi imele različne izvedbe tipično enako ime datoteke (to se navadno ujema z enostavnim imenom sklopa, vendar to po specifikaciji CLI ni nujno, razvijalci se lahko odločijo za nepovezana imena datotek). Zaradi tega imajo .NET in druge izvedbe posebno hrambo sklopov - Global Assembly Cache (GAC). CLI to shrambo obravnava, kot da gre za en direktorij, vendar je v resnici sestavljena iz vgnezdenih direktorijev, kjer je lahko shranjenih več različic istega sklopa.
Program v .NET lahko ima vse sklope (običajno s končnico .exe), od katerih je odvisen, skopirane v isti direktorij, v katerem je program (običajno s končnico .exe), lahko pa uporablja tudi sklove v GAC. V .NET lahko programi (ki so v sklopiih s končnico .exe) poleg dinamičnih knjižnic s končnico .dll uporalbjajo tudi kodo v drugih programih, torej v drugih sklopih s končnico .exe.
Različica | Verzija CLR | Dadum izdaje | Razvojno orodje | Vključena v: | Nadomesti | |
---|---|---|---|---|---|---|
Windows | Windows Server | |||||
1.0 | 1.0 | 2002-02-13 | Visual Studio .NET[16] | XP[a] | Ni na voljo | Ni na voljo |
1.1 | 1.1 | 2003-04-24 | Visual Studio .NET 2003[16] | Ni na voljo | 2003 | 1.0[17] |
2.0 | 2.0 | 2005-11-07 | Visual Studio 2005[18] | Ni na voljo | 2003, 2003 R2,[19] 2008 SP2, 2008 R2 SP1 | Ni na voljo |
3.0 | 2.0 | 2006-11-06 | Expression Blend[20][b] | Vista | 2008 SP2, 2008 R2 SP1 | 2.0[14] |
3.5 | 2.0 | 2007-11-19 | Visual Studio 2008[21] | 7, 8[c], 8.1[c], 10[c] | 2008 R2 SP1 | 2.0, 3.0[14] |
4.0 | 4 | 2010-04-12 | Visual Studio 2010[22] | Ni na voljo | Ni na voljo | Ni na voljo |
4.5 | 4 | 2012-08-15 | Visual Studio 2012[23] | 8 | 2012 | 4.0[14] |
4.5.1 | 4 | 2013-10-17 | Visual Studio 2013[24] | 8.1 | 2012 R2 | 4.0, 4.5[14] |
4.5.2 | 4 | 2014-05-05 | Ni na voljo | Ni na voljo | Ni na voljo | 4.0–4.5.1[14] |
4.6 | 4 | 2015-07-20 | Visual Studio 2015[25] | 10 | Ni na voljo | 4.0–4.5.2[14] |
4.6.1 | 4 | 2015-11-17[26] | Visual Studio 2015 Update 1 | 10 verzija 1511 | Ni na voljo | 4.0–4.6[14] |
Opombe:
Microsoftova ogrodja in njihove komponente so licencirane na naslednje načine:
Komponenta | Licenca |
---|---|
Ogrodje .NET (redistributable) | Komercialna licenca[28] |
Referenčna izvorna koda ogrodij .NET 4.5 in zgodnejših | Microsoftova licenca za referenčno kodo (Ms-RSL)[29] |
Referenčna izvorna koda ogrodja .NET 4.6 | Licenca MIT[30] |
Mono | Licenca MIT[31] |
.NET Core CoreFX, CoreCLR in CLI |
Licenca MIT[32] |
Ogrodje .NET Mikro | Licenca Apache 2.0[33] |
Prevajalniška platforma .NET (kodno ime "Roslyn") | Licenca Apache 2.0[34] |
ASP.NET MVC, Web API in Web Pages (Razor) | Licenca Apache 2.0[35] |
ASP.NET Core | Licenca Apache 2.0[36] |
ASP.NET Ajax Control Toolkit | Licenca BSD[37] |
ASP.NET SignalR | Licenca Apache 2.0[38] |
Entity Framework | Licenca Apache 2.0[39] |
NuGet | Licenca Apache 2.0[40] |
Microsoftova polna komercialna implementacija ogrodja .NET je vezana predvsem na operacijske sisteme Windows. Poleg te obstajajo številne druge implementacije, od katerih nekatere delijo del izvorne kode s polno implementacijo in so lahko prenosljive med različnimi sistemi:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.