Opracowany przez | Microsoft |
---|---|
Ostatnia wersja | 4,8 (18 kwietnia 2019 r.) |
Środowisko | Windows NT 4.0 , Windows 98 i nowsze |
Rodzaj | Platforma |
Licencja | MS-EULA , BCL w ramach licencji współdzielonego źródła |
Stronie internetowej | www.microsoft.com/net |
Microsoft .NET (wymawiane „dot net”) to nazwa nadana zbiorowi produktów komputerowych i technologii firmy Microsoft , które umożliwiają łatwe przenoszenie aplikacji w Internecie. Celem jest udostępnienie lokalnego serwera WWW do zarządzania usługami i uniknięcie outsourcingu prywatnych danych do usługi przechowywania danych lub hostingu stron trzecich.
NET platforma jest oparta na kilku technologiach:
Wersja | Numer wersji | Wersja C# | Data wydania | Studio wizualne | Domyślny w Windows |
---|---|---|---|---|---|
1,0 | 1.0.3705.0 | C # 1.0 | 13 lutego 2002 r. | Visual Studio .NET 2002 | Wersje Windows XP Tablet i Media Center |
1,1 | 1.1.4322.573 | C # 1,1 | 24 kwietnia 2003 r. | Visual Studio .NET 2003 | Windows Server 2003 |
2,0 | 2.0.50727.42 | C # 2.0 | 7 listopada 2005 | Visual Studio 2005 | Windows Server 2003 R2 |
3,0 | 3.0.4506.30 | C # 3,0 | 6 listopada 2006 | Windows Vista, Windows Server 2008 | |
3,5 | 3.5.21022.8 | C # 3,0 | 19 listopada 2007 | Visual Studio 2008 | Windows 7, Windows Server 2008 R2 |
4.0 | 4.0.30319.1 | C # 4.0 | 12 kwietnia 2010 | Visual Studio 2010 | Windows Server 2008 R2 SP1 |
4,5 | 4,5 | C # 5.0 | 12 września 2012 | Visual Studio 2012 | Windows 8, Windows Server 2012 |
4.5.1 | 4.5.50938.18408 | C # 5.0 | 17 października 2013 r. | Visual Studio 2013 | Windows 8.1, Windows Server 2012R2 |
4,6 | 4.6.00081 | C # 6,0 | 20 lipca 2015 | Visual Studio 2015 | Windows 10, Windows Server 2016 |
4.6.2 | C # 7,0 | marzec 2017 | Visual Studio 2017 | Okna 10 | |
4,7 | C # 7,1 | sierpień 2017 | Visual Studio 2017 v15.3 | Okna 10 | |
4.7.1 | C # 7,2 | listopad 2017 | Visual Studio 2017 v15.5 | Okna 10 | |
4.7.2 | C # 7,3 | maj 2018 | Visual Studio 2017 v15.7 | Okna 10 | |
4,8 | Maj 2019 | Okna 10 |
Framework .Net jest oparty na Common Language Infrastructure (lub CLI). Jego celem jest zapewnienie języka niezależnego od platformy zarówno do tworzenia, jak i wykonywania. Zawiera funkcje do obsługi błędów, wyrzucania elementów bezużytecznych , bezpieczeństwa i współdziałania z obiektami COM. Realizacja z CLI nazywa Microsoft Common Language Runtime (CLR lub).
Zobacz też: Środowisko uruchomieniowe języka dynamicznego i maszyna wirtualna wysokiego poziomu .
CLR i bezpieczeństwoBezpieczeństwo jest zarządzane przez CAS ( Code Access Security ). CAS opiera się na systemie dowodowym związanym z konkretnym zgromadzeniem . „Dowód” to pochodzenie zestawu (instalacja lokalna, pobranie z Internetu lub Intranetu itp.). CAS wykorzystuje te dowody do określenia uprawnień nadanych kodowi. Kod może zażądać autoryzacji dla wywołanego kodu. Żądanie autoryzacji wie, kiedy CLR przechodzi przez stos wywołań: sprawdzany jest każdy zestaw każdej metody w stosie. Jeśli co najmniej jeden z tych zestawów nie może mieć żądanego uprawnienia, zgłaszany jest wyjątek.
Po załadowaniu zestawu CLR wykonuje różne testy, w tym walidację i weryfikację. Podczas walidacji środowisko CLR sprawdza, czy zestaw zawiera prawidłowy kod i metadane. Następnie sprawdza, czy tabele wewnętrzne są poprawne. Sprawdzenie sprawdza, czy kod nie robi nic niebezpiecznego. Niebezpieczny kod zostanie wykonany tylko wtedy, gdy zestaw ma uprawnienie „pomiń weryfikację” .
.NET Framework używa appdomains (domeny aplikacji) jako mechanizmu izolowania kodu od procesu. Jeden appdomainmoże być utworzony i kod ładowany lub rozładowywany z jednego appdomainniezależnie od innych appdomain. appdomainS może też być niezależnie konfigurowane z różnymi uprawnieniami zabezpieczeń. Może to pomóc w zwiększeniu bezpieczeństwa aplikacji poprzez oddzielenie potencjalnie niebezpiecznego kodu od reszty. Deweloper musi jednak podzielić aplikację na kilka poddomen, za co nie odpowiada CLR.
CLR i zarządzanie pamięciąCLR zajmuje się zarządzaniem pamięcią (alokacją i zwalnianiem). Alokacja pamięci dla wystąpień typów .NET (obiektów) odbywa się w sposób ciągły ze sterty . Dopóki istnieje odwołanie do obiektu (bezpośrednie lub pośrednie za pośrednictwem wykresu ), obiekt jest uważany za używany przez środowisko CLR. Gdy nie ma już odniesienia do obiektu ( tj. nie można już do niego dotrzeć lub użyć), garbage collector w języku angielskim : Garbage Collector , który działa okresowo w lekkim procesie innym niż jedna aplikacja, przekazuje wolny obiekt z pamięci.
Wyrzucanie elementów bezużytecznych platformy .NET nie jest deterministyczne: działa tylko po przydzieleniu określonej ilości pamięci lub w przypadku awarii pamięci. Nie ma sposobu, aby określić, kiedy spełnione są warunki uruchomienia modułu odśmiecania pamięci. Każda aplikacja .NET ma zestaw elementów głównych, które są wskaźnikami utrzymywanymi przez środowisko CLR i wskazują obiekty w zarządzanym stercie. Obejmuje to odniesienia do obiektów statycznych, do obiektów zdefiniowanych jako zmienne lokalne, do parametrów zdefiniowanych w bieżącym zakresie kodu i wreszcie do rejestrów procesora. Gdy garbage collector działa, zawiesza aplikację i dla każdego obiektu, do którego odwołuje się katalog główny, rekursywnie wylicza przy użyciu metadanych platformy .NET i odbicia wszystkie obiekty, do których może dotrzeć, oraz znaki. Następnie wylicza wszystkie obiekty na stercie (które początkowo były alokowane w sposób ciągły) przy użyciu odbicia; wszystkie przedmioty, które nie zostały oznaczone, są wówczas uważane za odpady. To jest faza znakowania. Jednak ten proces pozostawia fragmenty wolnej pamięci między obiektami, do których nadal się odwołuje; obiekty te są następnie kompaktowane za pomocą memcpy, aby ponownie wykorzystać używaną przestrzeń pamięci. Adresy wskaźników są odpowiednio aktualizowane. Po tych operacjach aplikacja wznawia działanie.
W rzeczywistości garbage collector oparty jest na systemie generacji . Każdy obiekt jest przypisany do generacji ; nowo utworzone obiekty należą do generacji 0 . Przedmioty, które pozostaną po pierwszym przejściu Garbage Collection są promowane do Generacji 1, a przedmioty, które pozostaną po drugim przejściu, są promowane do Generacji 2 (poziom maksymalny). Obiekty o wysokim poziomie generacji są rzadziej skanowane przez garbage collector niż obiekty o niskim poziomie generacji. Ten algorytm ma nadzieję poprawić wydajność garbage collectora, ponieważ stare przedmioty mają zwykle dłuższą żywotność niż nowsze.