98-372 Understanding .NET Code Compilation
MTA 98-372 von Microsoft. .NET Fundamentals
MTA 98-372 von Microsoft. .NET Fundamentals
Kartei Details
Karten | 56 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 06.10.2013 / 22.01.2016 |
Weblink |
https://card2brain.ch/box/98372_understanding_net_code_compilation
|
Einbinden |
<iframe src="https://card2brain.ch/box/98372_understanding_net_code_compilation/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
Wer verifiziert (verifying the signature) die Identität der Assembly?
Die CLR
Wie heisst das Attribut das man für die Versionierung einer private Assembly verwenden kann und welchen Einfluss hat es?
AssemblyVersion. Bei privaten Assemblies hat dieses keinen Einfluss.
Wie heisst der Namespace, der Klassen zur Verfügung stellt die eine logische View auf die Metadata wirft und es so ermöglicht Methoden dynamisch zur Laufgzeit aufzurufen?
System.Reflection
Wie heisst der Prozess, den die CLR benutzt um CIL in die entsprechende Maschienensprache umzusetzten?
JIT
Wie kann ich eine mit public key signierte assembly MathUtil.dll wieder mit dem keypair test.snk signieren? (Kommandozeilenaufruf)
sn.exe -R MathUtil.dll test.snk
wie kann man eine assembly MathUtil.dll mit sn.exe wieder für die .NET security verification sichtbar machen?
(Kommandozeilenaufruf)
sn.exe -Vu MathUtil.dll
Wie lautet der Befehl um MathUtil.dll mit Hilfe von gacutil in den GAC einzutragen?
gacutil /i MathUtil.dll
Wie lautet der Befehl um MathUtil.dll vom GAC zu entfernen?
gacutil /u MathUtil
Wie lautet der Befehl um mit gacutil zu überprüfen ob MathUtil.dll auch wirklich im GAC installiert wurde?
gacutil /l MathUtil
wie lautet der befehl um mit sn.exe aus einem Keypair test.snk einen public key publickey.snk zu extrahieren?
(Kommandozeilenaufruf)
sn.exe -p test.snk publickey.snk
wie lautet der befehl um mit sn.exe einen Strong Name test.snk zu erstellen?
(Kommandozeilenaufruf)
sn.exe -k test.snk
Wie wird die Identität einer Assembyl verifiziert? Es sind vier Schritte
- Die CLR liest den public key aus dem Manifest
- Entschlüsselt damit den cryptographischen Hash
- Berechnet einen neuen Hash aus der Assembly
- Vergleichen der beiden Hashes
Wie wird die Versionsnummer zusammengesetzt?
<major version>
<minor version>
<build number>
<revision>
Wo genau sind die Assemblies des GAC abgespeichert? (Pfad)
C:\Windows\Microsoft.NET\assembly
Erkläre die Schritte wie man eine Publisher Policy erzeugt und im GAC installiert
- Config file (publisher policy file) für publisher policy erstellen
- assembly linker al.exe verwenden um die entsprechende publisher policy assembly zu erzeugen
- Die publisher policy mit gacutil.exe dem GAC hinzufügen.
CLR: Nenne 3 der wichtigsten Aufgaben der CLR
(Common Language Runtime)
Die CLR bildet das Herz des .NET Frameworks. Sie ist die Umgebung in der MSIL läuft. Sie hat die Hauptaufgaben:
- Garbage Collection (GC):
- Code Access Security (CAS): Stellt Rechte des Codes auf die Systemressourcen bereit, abhängig von den Sicherheitseinstellungen auf dem PC
- Code Verification: Stellt sicheres Ausführen des Codes sicher
- JIT: Just in time Compliation, der MSIL wird zur Laufzeit in Maschienencode umgewandelt.
Der JIT Compiler ist ein cleveres Ding. Welches sind die 3 Modi, in denen der Compiler Code übersetzt und was sind die Unterschiede?
- Pre-Jit: kompiliert tutti cuanti im Voraus
- Econo-Jit: kompiliert vor zu, was zur Laufzeit verwendet wird. Werden sie nicht mehr verwendet, werden sie wieder gelöscht.
- Normal-Jit: kompiliert vor zu, was zur Laufzeit verwendet wird, der Code bleibt aber im Cache
Eine assembly die nur mit dem public key signiert wurde, würde die .NET security verification nicht bestehen. Wie kann man mit sn.exe die Assembly MathUtil.dll registrieren, dass sie die security verification überspringt?
(Kommandozeilenaufruf)
sn.exe -Vr MathUtil.dll
Erkläre den Kompilierungsvorgang von Managed Code. Was geht vorne rein, was sind die Schritte dazwischen, wie heisst alles, was kommt wann hinten raus?
- Der Sourcecode wird vom .NET Compiler kompiliert
- Es entsteht CIL in Form einer .dll oder .exe
- Zur Laufzeit wird der CIL von der Runtime durch den JIT zu native (Maschinencode) kompiliert.
Für was ist die AssemblyKeyNameAttribute class?
Gibt den Namen eines Schlüsselcontainers mit dem Schlüsselpar für den Starken Namen an. Um eine Assembly mit einem starken Namen zu bilden ist es essenziell dass man ein AssemblyKeyNameAttribute oder ein AssemblyKeyFileAttribute angibt. Mit andern Worten, gibt den Strong Name an.. das .snk Ding
Für was wird das Publicize.exe tool verwendet?
Das ist ein Command Line Tool das eine Assembly generiert, die public types hat. Diese public types binden alle privaten Typen einer anderen Assembly. Dies kann einem helfen Unit Tests zu erzeugen die private Typen einsehen wollen.
Ich habe 2 Möglichkeiten zu erreichen, dass eine Anwendung eine shared Assembly mit neuer Version verwendet. Welche sind das?
- Im Config File einen <bindingRedirect> einfügen, dass alle Verweise auf die neue Assembly zeigen
- Über die Publisher Policy im GAC
In welcher Beziehung stehen CLR und CLI?
Die CLR ist Microsofts Implementation der CLI
Was bedeutet "Language interoperability"?
Das ist ein .NET Feature das es möglich macht dass Code der in einer bestimmten Sprache geschrieben wurde mit Code einer anderen Sprache zusammenarbeiten kann.
Was bedeutet eine Assembly signieren und warum macht man das?
Damit eine Assembly dem GAC hinzugefügt werden kann, muss die Assembly auch in den GAC gehören und dafür muss sie mit einem Starken Namen signiert sein. Das dafür kryptographische Schlüsselpaar kann man mit dem StrongNam Utility sn.exe erzeugen.
Was passiert technisch gesehen beim signieren einer Assembly?
Es wird ein cryptographischer Hash erzeugt, welcher mit dem private Key verschlüsselt wird. Der Hash wird in der Assembly gespeichert. Der Public Key wird im Manifest gespeichert.
Was bedeutet VES und was ist es?
- Virtual Execution System
- Dies VES bestimmt wie code anhand der Metadaten verlinkt wird. Das platformabhängige VES übernimmt die JIT in Abhängigkeit des Betriebssystems.
Was beschreiben die Metadaten?
Die Typen, die im Code definiert wurden und externe Typen (von eingebundenen Assemblies)
Was bezeugt es, wenn die Identifizierung einer signierten Assembly erfolgreich war? (2 Aspekte)
- Der Inhalt der Assembly wurde nicht mehr manipuliert, nachdem die Assembly signiert wurde
- Nur die Person die den private key besitzt der zu dem public key passt kann die Assembly signiert haben
-
- 1 / 56
-