.NET Core - wykonanie kodu
W tym rozdziale poznamy proces wykonywania .NET Core i porównamy go z .NET Framework. Zarządzany proces wykonywania obejmuje następujące kroki.
- Wybór kompilatora
- Kompilowanie kodu do MSIL
- Kompilowanie MSIL do kodu natywnego
- Uruchomiony kod
Wybór kompilatora
Jest to wielojęzyczne środowisko wykonawcze, które obsługuje szeroką gamę typów danych i funkcji językowych.
Aby uzyskać korzyści zapewniane przez środowisko uruchomieniowe języka wspólnego, należy użyć co najmniej jednego kompilatora języka, który jest przeznaczony dla środowiska uruchomieniowego.
Kompilowanie kodu do MSIL
Kompilowanie tłumaczy kod źródłowy na język pośredni firmy Microsoft (MSIL) i generuje wymagane metadane.
Metadane opisują typy w kodzie, w tym definicje każdego typu, podpisy elementów członkowskich każdego typu, elementy członkowskie, do których odwołuje się kod, oraz inne dane używane przez środowisko uruchomieniowe w czasie wykonywania.
Środowisko wykonawcze lokalizuje i wyodrębnia metadane z pliku, a także z bibliotek klas frameworka (FCL) w razie potrzeby podczas wykonywania.
Kompilowanie MSIL do kodu natywnego
W czasie wykonywania kompilator just-in-time (JIT) tłumaczy MSIL na kod natywny.
Podczas tej kompilacji kod musi przejść proces weryfikacji, który sprawdza MSIL i metadane, aby dowiedzieć się, czy kod można określić jako bezpieczny dla typów.
Działający kod
Środowisko uruchomieniowe języka wspólnego zapewnia infrastrukturę, która umożliwia wykonanie i usługi, które mogą być używane podczas wykonywania.
Podczas wykonywania kod zarządzany otrzymuje usługi, takie jak wyrzucanie elementów bezużytecznych, zabezpieczenia, współdziałanie z kodem niezarządzanym, obsługę debugowania w wielu językach oraz ulepszoną obsługę wdrażania i wersjonowania.
Proces wykonywania kodu .NET Core
Teraz porównajmy sposób wykonywania kodu w .NET Core w porównaniu z .NET Framework. W .NET Core istnieje wiele zamienników tych składników, które są częścią .NET Framework.
W .NET Core mamy teraz nową serię kompilatorów, takich jak Roslyn dla C # i VB.
Możesz również skorzystać z nowego kompilatora F # 4.1, jeśli chcesz używać języka F # z platformą .NET Core.
W rzeczywistości te narzędzia są różne i możemy używać Roslyn również z .NET Framework, jeśli używamy C # 6 lub nowszego, ponieważ kompilator C # może obsługiwać tylko do C # 5.
W .NET Core nie mamy bibliotek klas frameworków (FCL), więc używany jest inny zestaw bibliotek, a teraz mamy CoreFx.
CoreFx to reimplementacja bibliotek klas dla platformy .NET Core.
Mamy również nowy czas wykonywania z .NET Core znanym jako CoreCLR i wykorzystuje kompilator JIT.
Teraz pytanie brzmi, dlaczego mamy reimplementację wszystkich tych komponentów, które już mamy w .NET Framework.
Więc odpowiedź jest taka sama, jak dlaczego Microsoft wdrożył .NET Core.