Pytanie CLR i CLI - Jaka jest różnica?


Jestem całkiem nowym środowiskiem .NET, dlatego chcę się dowiedzieć, jaka jest dokładnie różnica między CLR i CLI? Z tego, co przeczytałem do tej pory, wydaje się wskazywać, że CLI jest podzbiorem CLR. Ale czy nie wszystko w CLR jest obowiązkowe? Co dokładnie można pominąć w CLR, aby utworzyć interfejs CLI?


44
2018-01-26 18:04


pochodzenie




Odpowiedzi:


The CLR jest implementacją Microsoft Standard CLI.


66
2018-01-26 18:06



Robi to również, po prostu musisz ustawić architekturę docelową na "płynną". - Cody Brocious
Dzięki za szybką odpowiedź. Czyli oznacza to, że teoretycznie możemy mieć implementację interfejsu CLI innej firmy, która może działać na różnych systemach operacyjnych i obsługuje komponenty .NET podobne do JVM? - Naveen
@Naveen - spójrz na mono, które jest właśnie tym. - Kev
Według tego stackoverflow.com/questions/9321803/...      Twierdzi, że Mono implementuje CLR. Czy to nie tak i czy lepiej powiedzieć, że Mono implementuje CLI, a nie CLR? - barlop
ta odpowiedź nie jest prawdziwa ... CLR jest implementacją VES ... zobacz odpowiedź poniżej - Adrian


CLR jest środowiskiem wykonawczym, w którym aplikacja .NET jest bezpiecznie hostowana / uruchamiana.

Możesz go zobaczyć jako prywatny system operacyjny .NET, który inicjuje i ładuje tuż przed uruchomieniem aplikacji .NET.

CLR zajmuje się pewnymi zasadniczymi wymaganiami każdej aplikacji .NET, która w przeciwnym razie wymagałaby wielu celowych kodów do napisania; wymagania o charakterze holistycznym i niezbędne dla każdego rodzaju aplikacji do działania w dobry, skuteczny i bezpieczny sposób [np. Obsługuj przydzielanie pamięci i zwalniaj ją, gdy nie jest wymagana, unikaj zwisających wskaźników, unikaj błędów odlewania itp.]

Z drugiej strony, CLI to specyfikacja / zestaw wytycznych wyjaśniających, w jaki sposób wdrożyć środowisko wykonywania aplikacji i charakter generowanego kodu aplikacji, który pozwala na używanie wielu języków wysokiego poziomu na różnych platformach komputerowych, bez konieczności przepisywania ich na potrzeby konkretnych architektur.

CLI jest opracowany przez Microsoft i standaryzowany przez ISO i ECMA.

CLR jest praktyczną implementacją sekcji CLI VES [Virtual Execution System] i stanowi jeden z podstawowych komponentów platformy MS.NET

W języku laika CLI to przepis, a CLR to kuchnia :-)


44
2018-06-24 14:54



Zauważ, że to mówi to samo, co odpowiedź Cody Brocious, z wyjątkiem pewnych wyjaśnień. Jest to kwestia opinii, jaką wartość zapewnia wyjaśnienie. Odniesienia do .Net mogą nie być dokładne; rozumiem, że .Net implementuje więcej niż standard CLI. - user34660


CLR (Common Language Runtime) to implementacja VES (Virtual Execution System) firmy Microsoft. VES wraz z CTS (Common Type System), CLS (wspólna specyfikacja językowa) i specyfikacja metadanych są częścią specyfikacji CLI (Common Language Infrastructure).

VES jest znormalizowaną specyfikacją maszyny wirtualnej, którą należy wdrożyć w celu załadowania i uruchomienia modułów CIL (Common Intermediate Language) (dll i exe). Implementacja VES zapewnia również usługi uruchomieniowe, takie jak wyrzucanie elementów i bezpieczeństwo.

Standardy ECMA C # i Common Language Infrastructure


14
2018-03-27 03:36





CLI, Wspólna infrastruktura językowa jest specyfikacją lub kryteriami opracowanymi przez firmę Microsoft.

Każdy język programowania zgodny z kryteriami CLI może uzyskać dostęp do wspólnej biblioteki klas i może być skompilowany do wspólnego języka pośredniego (kodu bajtowego). Po skompilowaniu do wspólnego języka pośredniego, każdy program może być dalej wkompilowany w kod maszynowy zrozumiały dla konkretnego systemu, na którym działa. Opisuje kod wykonywalny i środowisko uruchomieniowe. W prostych słowach pozwala nam to na używanie różnych języków wysokiego poziomu na różnych maszynach bez przepisywania kodu.

CLR, Common Language Runtimektóra jest implementacją CLI przez Microsoft.

CLR jest komponentem maszyny wirtualnej w .NET Framework, lepiej znanym jako środowisko wykonawcze i odpowiedzialnym za uruchamianie programów .NET. Jest to rodzaj systemu operacyjnego dla programów .NET, które wykonują wiele funkcji wymaganych do obsługi programu.


enter image description here

gdzie CIL jest Wspólny język średnio zaawansowany które zasilały CLR do dalszej generacji kodu maszynowego.


Cechy CLR:

  1. Zarządzanie pamięcią
  2. Obsługa wyjątków
  3. Zabezpieczenie dostępu do kodu
  4. Zarządzanie wątkami
  5. Debugowanie
  6. Weryfikacja i kompilacja
  7. Wpisz bezpieczeństwo
  8. Zbieranie śmieci

4
2017-11-21 14:34





CLR jest kompletnym środowiskiem, w którym CLI, CTS, CLS działa w integracji, a ponadto umożliwia zbieranie śmieci, zarządzanie pamięcią, bezpieczeństwo, język intemediate dla natywnego kodu ... CLI jest specyfikacją formatu kodu wykonywalnego i środowiska wykonawczego środowisko, które może wykonać ten kod.


-2
2018-06-17 04:56