Vyvinul | Microsoft |
---|---|
Poslední verze | 4,8 (18. dubna 2019) |
životní prostředí | Windows NT 4.0 , Windows 98 a vyšší |
Typ | Plošina |
Licence | MS-EULA , BCL pod sdílenou zdrojovou licencí |
webová stránka | www.microsoft.com/net |
Microsoft .NET (vyslovuje se „dot net“) je název kolekce počítačových produktů a technologií od společnosti Microsoft, které usnadňují přenos aplikací na internet. Cílem je poskytnout místní webový server pro správu služeb a vyhnout se outsourcingu soukromých dat na webovou službu úložiště nebo webhosting třetích stran.
Platforma .NET je založena na několika technologiích:
Verze | Číslo verze | Verze C # | Datum vydání | Vizuální studio | Výchozí v systému Windows |
---|---|---|---|---|---|
1.0 | 1.0.3705.0 | C # 1.0 | 13. února 2002 | Visual Studio .NET 2002 | Verze Windows XP Tablet a Media Center |
1.1 | 1.1.4322.573 | C # 1.1 | 24.dubna 2003 | Visual Studio .NET 2003 | Windows Server 2003 |
2.0 | 2.0.50727,42 | C # 2.0 | 7. listopadu 2005 | Visual Studio 2005 | Windows Server 2003 R2 |
3.0 | 3.0.4506.30 | C # 3.0 | 6. listopadu 2006 | Windows Vista, Windows Server 2008 | |
3.5 | 3.5.21022.8 | C # 3.0 | 19. listopadu 2007 | Visual Studio 2008 | Windows 7, Windows Server 2008 R2 |
4.0 | 4.0.30319.1 | C # 4.0 | 12. dubna 2010 | Visual Studio 2010 | Windows Server 2008 R2 SP1 |
4.5 | 4.5 | C # 5.0 | 12. září 2012 | Visual Studio 2012 | Windows 8, Windows Server 2012 |
4.5.1 | 4.5.50938.18408 | C # 5.0 | 17. října 2013 | Visual Studio 2013 | Windows 8.1, Windows Server 2012R2 |
4.6 | 4,6 00081 | C # 6.0 | 20. července 2015 | Visual Studio 2015 | Windows 10, Windows Server 2016 |
4.6.2 | C # 7.0 | března 2017 | Visual Studio 2017 | Windows 10 | |
4.7 | C # 7.1 | srpna 2017 | Visual Studio 2017 v15.3 | Windows 10 | |
4.7.1 | C # 7.2 | listopadu 2017 | Visual Studio 2017 v15.5 | Windows 10 | |
4.7.2 | C # 7.3 | Květen 2018 | Visual Studio 2017 v15.7 | Windows 10 | |
4.8 | Květen 2019 | Windows 10 |
Rámec .Net je založen na Common Language Infrastructure (nebo CLI). Jeho účelem je poskytnout jazyk nezávislý na platformě pro vývoj i provádění. Zahrnuje funkce pro zpracování chyb, uvolňování paměti , zabezpečení a interoperabilitu s objekty COM. Realizace tohoto CLI se nazývá Microsoft Common Language Runtime (nebo CLR).
Viz také: Dynamic Language Runtime a virtuální počítač na vysoké úrovni .
CLR a zabezpečeníZabezpečení je spravováno CAS ( Code Access Security ). CAS je založen na systému důkazů spojených s konkrétní sestavou . „Důkazem“ je původ sestavy (místní instalace, stažení z internetu nebo intranetu atd.). CAS používá tyto důkazy k určení oprávnění udělených kódu. Kód může požádat o autorizaci kódu, který volá. Žádost o autorizaci ví, kdy CLR prochází zásobníkem volání: je zkontrolována každá sestava každé metody v zásobníku. Pokud alespoň jednomu z těchto sestav není povoleno mít požadované oprávnění, je vyvolána výjimka.
Po načtení sestavy provede CLR různé testy včetně ověření a ověření. Během ověřování CLR ověří, že sestavení obsahuje platný kód a metadata. Poté zkontroluje správnost interních tabulek. Kontrola ověří, že kód nedělá nic nebezpečného. Nebezpečný kód bude spuštěn, pouze pokud má sestava oprávnění „přeskočit ověření“ .
Rozhraní .NET Framework používá appdomains (doména aplikace) jako mechanismus k izolaci kódu z procesu. Jeden appdomainmůže být vytvořen a kód načten nebo uvolněn z jednoho appdomainnezávisle na ostatních appdomain. appdomainS lze také konfigurovat samostatně s různými bezpečnostními právy. To může pomoci zlepšit zabezpečení aplikace oddělením potenciálně nebezpečného kódu od ostatních. Vývojář však musí aplikaci rozdělit do několika subdomén, což není odpovědností CLR.
CLR a správa pamětiCLR se stará o správu paměti (přidělování a uvolňování). Přidělení paměti pro instance typů .NET (objekty) se provádí nepřetržitě z haldy . Dokud existuje odkaz na objekt (přímý nebo nepřímý prostřednictvím grafu ), považuje se objekt za používaný CLR. Jakmile již neexistuje žádný odkaz na objekt ( tj . Již jej nelze dosáhnout nebo použít), sběrač odpadků v angličtině : Garbage Collector , který pravidelně běží na lehkém procesu odlišném od jedné aplikace, předá objekt zdarma z paměti.
Uvolňování paměti .NET je nedeterministické: běží pouze po přidělení určitého množství paměti nebo v případě selhání paměti. Neexistuje žádný způsob, jak určit, kdy jsou splněny podmínky pro spuštění garbage collectoru. Každá aplikace .NET má sadu kořenových prvků, které jsou ukazateli udržovanými CLR a směřují k objektům ve spravované haldě. To zahrnuje odkazy na statické objekty, na ty definované jako místní proměnné, na parametry definované v aktuálním rozsahu kódu a nakonec na registry procesorů. Když je spuštěn garbage collector, pozastaví aplikaci a pro každý objekt odkazovaný v kořenovém adresáři rekurzivně vyčíslí pomocí metadat a reflexe .NET všechny objekty, na které může dosáhnout, a značky. Potom vytvoří výčet všech objektů na haldě (které byly původně průběžně přidělovány) pomocí reflexe; všechny předměty, které nebyly označeny, se poté považují za odpad. Toto je fáze značení. Tento proces však ponechává části volné paměti mezi objekty, na které se stále odkazuje; tyto objekty jsou poté zhutněny pomocí memcpy , aby se použitý paměťový prostor znovu spojil. Adresy ukazatelů jsou odpovídajícím způsobem aktualizovány. Po těchto operacích aplikace obnoví své provádění.
Ve skutečnosti je garbage collector založen na generačním systému . Každý objekt je přiřazen generaci ; nově vytvořené objekty patří do generace 0 . Položky, které zůstanou po prvním průchodu Garbage Collection, jsou povýšeny na generaci 1 a položky, které zůstanou po druhém průchodu, jsou povýšeny na generaci 2 (maximální úroveň). Objekty s vysokou úrovní generování jsou méně často skenovány garbage collectorem než objekty s nízkou úrovní generování. Tento algoritmus doufá, že zlepší efektivitu sběrače odpadků, protože staré položky mají tendenci mít delší životnost než novější položky.