57 Stimmen

Was genau ist "verwalteter" Code?

Ich schreibe seit fast zwanzig Jahren C/C++-Code und kenne mich auch mit Perl, Python, PHP und etwas Java aus, und ich bringe mir gerade JavaScript bei. Aber ich habe noch nie etwas mit .NET, VB oder C# gemacht. Was genau bedeutet verwaltet Code bedeuten?

Wikipedia beschreibt es einfach als

Code, der unter der Verwaltung einer virtuellen Maschine ausgeführt wird

und er sagt ausdrücklich, dass Java (normalerweise) verwalteter Code ist, also

  • warum scheint der Begriff nur für C# / .NET zu gelten?
  • Können Sie C# in eine Exe-Datei kompilieren, die auch die VM enthält, oder müssen Sie es verpacken und an eine andere Exe-Datei übergeben (a la Java)?

In ähnlicher Weise,

  • ist .NET ein Sprache oder eine Rahmenwerk und was genau bedeutet "Rahmen" hier?

OK, das ist also mehr als eine Frage, aber für jemanden, der schon so lange in der Branche ist wie ich, fühle ich mich im Moment eher wie ein N00B...

3voto

Kristopher Johnson Punkte 78933

Der Begriff verwaltet wird im Allgemeinen nur auf .NET angewandt, weil Microsoft diesen Begriff verwendet. Microsoft verwendet den Begriff "virtuelle Maschine" im Allgemeinen nicht in Bezug auf eine verwaltete .NET-Ausführungsumgebung.

Der "Bytecode" (IL) von .NET unterscheidet sich insofern von Java-Bytecode, als er ausdrücklich dafür entwickelt wurde, vor der Ausführung in der verwalteten Umgebung in nativen Code kompiliert zu werden, während Java für die Interpretation konzipiert wurde.

Das ".NET Framework" ist im Grunde ein riesiger Satz von Bibliotheken, der von Microsoft bereitgestellt wird und Tausende von Klassen enthält, die zur Entwicklung von Anwendungen verwendet werden können.

Eine kompilierte C#.exe enthält plattformunabhängigen Code, der in jeder .NET-kompatiblen Umgebung, einschließlich Mono, ausgeführt werden kann. Die Laufzeitumgebung wird jedoch in der Regel getrennt von den Anwendungen vertrieben, die sie verwenden.

3voto

jodonnell Punkte 48623

Verwaltet bedeutet, dass der Code nicht zu nativem Code kompiliert wird und daher unter der Schirmherrschaft einer virtuellen Maschine läuft. Java kompiliert in ein Zwischenformat namens Bytecode, das die Java-VM zu interpretieren und auszuführen weiß. Alle .NET-Sprachen gehen ähnlich vor, indem sie in IL (intermediate language) kompiliert werden, das von der .NET-Laufzeitumgebung interpretiert wird. Es ist ein wenig verwirrend, weil die .NET IL die Dateiendungen .dll und .exe haben.

3voto

David L Morris Punkte 1431

Auf die Gefahr hin, einige zu beleidigen, vermute ich, dass das Wort "managed" verwendet wurde, um das Wort "unmanaged" anstelle von "compiled" verwenden zu können. Während managed vielleicht mehr bedeutet, scheint es in Wirklichkeit vor allem zur Unterscheidung zwischen dem, was so ziemlich just in time kompiliert wird (als Ersatz für das, was einmal interpretiert oder pcode war) und dem nativen kompilierten Code verwendet zu werden.

Oder anders ausgedrückt: Was würden Sie lieber verwenden?

a) Nicht verwalteter Code, der unkontrollierbare Dinge mit dem System anstellen kann.

b) Nativ kompilierter Code, der schnell und solide ist und sich eng an das Betriebssystem anlehnt.

Natürlich ist das eigentlich dasselbe.

2voto

HTTP 410 Punkte 16820

In ähnlicher Weise, ist .NET eine Sprache oder ein Rahmenwerk, und was genau bedeutet "Rahmenwerk" hier? <<

.NET ist die aktuelle Unternehmenssoftware-Plattform von Microsoft. Sie besteht aus:

- Eine einzige universelle Schnittstelle für den Zugriff auf Windows-Funktionen:

o The .NET Framework Class Library (FCL).
o The FCL provides a rich set of high-level functionality for developers.

- Eine einzige universelle Sprache und Laufzeitumgebung für die Ausführung von .NET-Anwendungen:

o Common Language Runtime (CLR) executes Common Intermediate Language (CIL).
o The CLR is God: it runs, controls, and polices everything.

- Die Wahl zwischen mehreren Sprachen für die Entwicklung von .NET-Anwendungen:

o Every development language is compiled to CIL, which is run by the CLR.
o C# and VB are the two main development languages.

1voto

Ed S. Punkte 118985

.NET ist ein Rahmenwerk. Die Common Language Runtime (CLR) führt den Microsoft Intermediate Language (MSIL)-Code aus, der bei der Kompilierung einer Lösung erzeugt wird (d. h. sie wird nicht zu Maschinencode kompiliert). Die API kann nicht in der Exe enthalten sein, was auch nicht erwünscht ist, da sie recht umfangreich ist. Der Hauptvorteil ist die Speicherverwaltung (neben einigen anderen Sicherheitsvorteilen und möglicherweise anderen, die mir nicht bekannt sind).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X