b'\n_START_ARTICLE_\nMicrosoft .NET\n_START_PARAGRAPH_\nMicrosoft .NET je ogrodje za razvijanje programske opreme, ki te\xc4\x8de prete\xc5\xbeno na operacijskih sistemih Microsoft Windows. Najnovej\xc5\xa1a razli\xc4\x8dica je 4.7. .NET vklju\xc4\x8duje obse\xc5\xbeno knji\xc5\xbenico 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\xc4\x8dunalnika, 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 \xc4\x8desar je koda napisana za .NET upravljana koda._NEWLINE_Osnovna knji\xc5\xbenica (FCL) in izvajalsko okolje (CLR) skupaj tvorita ogrodje .NET. FCL zagotavlja orodja za uporabni\xc5\xa1ke vmesnike, podatkovni dostop, povezljivost z bazami podatkov, kriptografske postopke, funkcije za razvoj spletnih aplikacij, numeri\xc4\x8dne postopke in spletno komunikacijo. razvijalci izdelujejo knji\xc5\xbenice in aplikacije s kombiniranjem lastne izvorne kode s knji\xc5\xbenicami ogrodja .NET in drugimi knji\xc5\xbenicami. Za .NET je na voljo veliko odprtokodnih in komercialnih knji\xc5\xbenic, katerih velik del je prenosljiv na razli\xc4\x8dne platforme. Prenosljivost je vgrajena v osnovne koncepte ogrodja in \xc4\x8deprav originalna Microsoftova izvedba cilja na operacijski sistem Windows, alternativne izvedbe kot je Mono zagotavljajo prenosljivost na \xc5\xa1tevilne sodobne platforme. Ovira za prenosljivost je lahko odvisnost knji\xc5\xbenic od sistemskih klicev ali od knji\xc5\xbenic v strojnem jeziku, ki niso napisane za .NET (primer je WPF). Ogrodje .NET je med drugim namenjeno uporabi v ve\xc4\x8dini novej\xc5\xa1ih aplikacij za platformo Windows. Za razvoj programov so navoljo \xc5\xa1tevilna integrirana razvojna okolja, od katerih je najbolj raz\xc5\xa1irjena uporaba okolij Visual studio in MonoDevelop._NEWLINE_Razvoj ogrodja .NET se je za\xc4\x8del v obliki zaprtega komercialnega sistema, vendar je podjetje \xc5\xbee v za\xc4\x8detnih fazah razvoja (pred prvo objavo) delovalo tudi v smeri standardizacije. Kljub standardizaciji pomembnih delov ogrodja so razli\xc4\x8dni razvijalci (predvsem tisti iz odprtokodnih skupnosti) izra\xc5\xbeali bojazni pri uporabi ogrodja za razvoj aplikacij v povezavi s patenti da dolo\xc4\x8dene dele implementacije. Microsoft je zato spreminjal strategijo razvojo okolja .NET na na\xc4\x8dine, ki so bolj skladni s sodobnimi modeli razvoja programske opreme na podlagi projektov v lasti skupnosti. Poleg izdajanja dodatni poatentnih obljub, ki \xc5\xa1\xc4\x8ditijo razvijalce pred morebitnimi patentnimi to\xc5\xbebami, je Microsoft v zadnem \xc4\x8dasu ve\xc4\x8dje dele razvoja okolja prenesel na modelj, kjer se uporabljajo proste odprtokodne licence in je razvoj dostopen \xc5\xa1ir\xc5\xa1i skupnosti razvijalcev. _NEWLINE_Iz okolja .NET je iz\xc5\xa1a dru\xc5\xbeina platform skladnih z .NET za razvoj mobilnih aplikacij, vlju\xc4\x8denih naprav, alternativnih operacijskih sistemov in vti\xc4\x8dnikov za internetne brskalnike. Zmanj\xc5\xa1ana razli\xc4\x8dica ".NET Compact Famework" je dostopna za platforme Windows CE (vklju\xc4\x8dno z napravami na osnovi Windows Mobile). Ogrodje .NET Micro Framework je prilagojeno sistemom z zelo omejenimi strojnimi zmogljivostmi. SilverLight je bil razvit kot vti\xc4\x8dnik za internetne brskalnike. Mono je na voljo za \xc5\xa1tevilne 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 penosljivih med razli\xc4\x8dimi platformami, razvoju v oblaku in Univerzalni Windows Platformi (UWP).\n_START_SECTION_\nZgodovina\n_START_PARAGRAPH_\n\xc4\x8ceprav 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\xc5\xa1evali druge Microsoftove tehnologije - oddelek za mre\xc5\xbene stre\xc5\xbenike je, na primer, razvijal ASP 4.0 in ostali oddelki so razvijali \xc2\xbbNext-Generation Web Services\xc2\xab. Delo razli\xc4\x8dnih oddelkov se je na koncu zdru\xc5\xbeilo v en sistem, ki se sedaj imenuje .NET. _NEWLINE_Ko se je Microsoft leta 1998 odlo\xc4\x8dil, da bo prenehal z uporabo Sun-ove tehnologije Java, se je za\xc4\x8dela transformacija Microsoftovega produkta J++ v za\xc4\x8detke projekta .NET. Za razliko od aplikacij v Javi, ki so napisane v enem jeziku za mnogo razli\xc4\x8dnih platform, so bile na v za\xc4\x8detku razvoja aplikacije v  .NET lahko napisane v ve\xc4\x8d razli\xc4\x8dnih 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\xc5\xbenost pisanja aplikacij za razli\xc4\x8dne platforme.\n_START_SECTION_\nPremik k odprtokodnemu razvoju\n_START_PARAGRAPH_\nDecembra 2001 sta bila CLI in C# ratificirana kot ECMA standarda.  Ustrezna ISO standarda sta sledila aprila 2003. Trenueni verziji atandarda sta ISO/IEC 23271:2012 in ISO/IEC 23270:2006._NEWLINE__NEWLINE_12. novembra 2014 je Microsoft najavil izdajo .NET Core pod odprtokodno licenco, kot del naporov za prenosljivo podporo .NET na razli\xc4\x8dnih platformah in odprtokodni model razvoja pod okriljem .NET Foundation .NET Core naj bi bila osnova prihodnjih platform .NET. Ist\xc4\x8dasno je bila najavljena sprememba licence za referen\xc4\x8dno izvorno kodo .NET v bolj odprto licenco kot je Ms-RSL. _NEWLINE_V novembru 2014, je Microsoft naznanil tudi izdajo prenovljenih patentnih obljub (zagotovila, da Microsoft ne bo pravno uporabil patentne za\xc5\xa1\xc4\x8dite proti razvijalcem tehnologij temelje\xc4\x8dih na .NET). Zaradi omejitev v prej\xc5\xa1njih zagotovilih glede patentov povezanih z .NET so bili projekti kot je Mono v pravni sivini, ker so se zagorovila nana\xc5\xa1ala striktno na 4. edicijo standardov ECMA-334 in ECMA-335. Nova patentna obljuba ni vezana na dolo\xc4\x8deno verzijo standarda in raz\xc5\xa1iri pokritje na vse .NET tehnologije, ki so dokumentirane v MSDN, tudi, \xc4\x8de te niso specifirane v standardih ECMA. To omogo\xc4\x8da Monu in sorodnim projektom, da so v koraku z novimi zna\xc4\x8dilnostmi ogrodja .NET, ne da bi njihovi razvijalci tvegali to\xc5\xbebe na osnovi patentnih zahtev. Zagotovilo pa zahteva, da mora vsaka impementacija ogrodja .NET ohranjati minimalno skladnost z obveznimi dolo\xc4\x8dili specifikacije CLI._NEWLINE_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 potreebna komercialna licenca.  Microsoft je dodatno raz\xc5\xa1iril svojo prej\xc5\xa1njo patentno obljubo za Mono z izjavo, da ne bo spro\xc5\xbeil patentnih zahtev proti nikomur, ki bo "uporabljal, prodajal, ponujal v prodajo, uva\xc5\xbeal ali distribuiral okolje Mono"._NEWLINE_ Projekt Mono je bil prene\xc5\xa1en pod skrbni\xc5\xa1tvo organizacije .NET Foundation. Microsoftovo sporo\xc4\x8dilo za javnost poudarja, da bo stre\xc5\xbeni\xc5\xa1ki del ogrodja .NET v celoti odprtokoden in bo omogo\xc4\x8dal razvoj prenosljiv med razli\xc4\x8dnimi platformami, da pa Microsoft nima na\xc4\x8drtov izdati ogrodj WPF ali Windows Forms pod odprtokodno licenco.\n_START_SECTION_\nSklopi\n_START_PARAGRAPH_\nPrevedena koda v vmesnem jeziku (CIL) je shranjena v CLI sklopih (angle\xc5\xa1ko "CLI Assemblies"). Po speccifikaciji morajo biti sklopi v datote\xc4\x8dnem formatu Portable Executable (PE), v katerem so npr. datoteke .dll (dinami\xc4\x8dne knji\xc5\xbenice) in .exe (programi, ki se izvajajo) na operacijskem sistemu Windows. Vsak sklop je sestavljen iz ene ali ve\xc4\x8d datotek, od katerih mora ena vsebovati manifest, v katerem so meta podatki za ta sklop. Polno ime skopa (ki je razli\xc4\x8dno od imena vsebujo\xc4\x8de datoteke na disku) je sestavljeno iz enostavnega imena, \xc5\xa1tevilke verzije, kulture in simbola javnega klju\xc4\x8da. Sklopi so za izvajalsko okolje (CLR) ekvivalentni, kadar imajo enako polno ime. _NEWLINE_Polno ime sklopa je lahko na primer:_NEWLINE_ mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089_NEWLINE_V tem primeru je "mscorlib" enostavno ime sklopa. Niz "b77a5c561934e089" je simbol javnega klju\xc4\x8da, ki enoli\xc4\x8dno identificira pripadajo\xc4\x8di javni klju\xc4\x8d. To kavni del para klju\xc4\x8dev za asimetri\xc4\x8dno enkripcijo, s katerim je bil sklop podpisan._NEWLINE_Sklopi so lahko podpisani s privatnim klju\xc4\x8dem razvijalca sklopa (vendar to ni nujno). V tem primeru vsebuje polno ime sklopa simbol javnega klju\xc4\x8da, ki pripada paru klju\xc4\x8dev razvijalca, s katerim je bil sklop podpisan. Na ta na\xc4\x8din lahko izvajalsko okolje (CLI oz. CLR v primeru Microsoftove izvedbe .NET) preveri izvirnost (avtenti\xc4\x8dnost) slopa. Pri povezovanju (angle\xc5\xa1ko "linking") povezovalnik pri klicih v povezane slope pove s polnim imenom, v katerem sklopu je koda, ki se bo izvedla (pri izvajanju se ta sklop nalo\xc5\xbei, \xc4\x8de to trenutka klica \xc5\xa1e ni bil nalo\xc5\xbeen, za to poskrbi izvajalsko okolje, CLI). Ker polno ime vsebuje simbol javnega klju\xc4\x8da, lahko izvajalsko okolje pred nalaganjem sklopa preveri, ali gre resni\xc4\x8dno za pravi sklop, ki ga je podpisal dolo\xc4\x8den razvijalec. \xc4\x8ce bi nekdo na mesto izvirnega sklopa podtaknil ponarejen sklop z zlonamerno kodo, bi izvajalsko okolje zaznalo, da ne gre za izviren sklop (\xc4\x8deprav bi bilo polno ime in \xc5\xa1tevilne druge lastnosti enake), ker podpis sklopa ne bi ustrezal pravemu paru klju\xc4\x8dev. To je mo\xc5\xbeno preveriti iz simbola javnega klju\xc4\x8da (ki je del polnega imena), ker ta enoli\xc4\x8dno identificira par klju\xc4\x8dev, od katerih je bil privatni klju\xc4\x8d uporabljen pri podpisovanju izvirnega sklopa. Ta sistem prepre\xc4\x8duje napade z zamenjavo sklopov z nepravimi sklopi, ki lahko vsebujejo \xc5\xa1kodljivo kodo._NEWLINE_To, da sta \xc5\xa1tevilka verzije in simbol javnega klju\xc4\x8da del polnega imena sklopa, omogo\xc4\x8da, da lahko imamo v isti shrambi ve\xc4\x8d razli\xc4\x8dic istega sklopa razli\xc4\x8dnih razvijalcev. Tako lahko imamo programe, ki so odvisni od razli\xc4\x8dnih izvedb nekega sklopa (npr. razli\xc4\x8dnih verzij sklopa ali sklopa, ki izvira od razli\xc4\x8dnih razvijalcev). Na primer, skupaj lahko hranimo sklop mskorlib, ki je del Microsoftove izvedbe .NET in ekvivalenten sklop, ki je del ogrodja Mono. \xc4\x8ce isti program prevedemo najprej z uporabo .NET in nato z uporabo Mono, bosta tako narejeni razli\xc4\x8dici nalo\xc5\xbeili razli\xc4\x8dni izvdbi sklopa, ki se morda razlikujeta le po simbolu javnega klju\xc4\x8da. Tak\xc5\xa1nih razli\xc4\x8dnih izvedb istega sklopa ne moremo hraniti v istem direktoriju, ker bi imele razli\xc4\x8dne izvedbe tipi\xc4\x8dno enako ime datoteke (to se navadno ujema z enostavnim imenom sklopa, vendar to po specifikaciji CLI ni nujno, razvijalci se lahko odlo\xc4\x8dijo 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\xc4\x8d razli\xc4\x8dic istega sklopa._NEWLINE_Program v .NET lahko ima vse sklope (obi\xc4\x8dajno s kon\xc4\x8dnico .exe), od katerih je odvisen, skopirane v isti direktorij, v katerem je program (obi\xc4\x8dajno s kon\xc4\x8dnico .exe), lahko pa uporablja tudi sklove v GAC. V .NET lahko programi (ki so v sklopiih s kon\xc4\x8dnico .exe) poleg dinami\xc4\x8dnih knji\xc5\xbenic s kon\xc4\x8dnico .dll uporalbjajo tudi kodo v drugih programih, torej v drugih sklopih s kon\xc4\x8dnico .exe.'