|
|
Übungsaufgaben zu Kapitel 3. Die .NET-Architektur
- Virtuelle Maschine. Welche Vorteile sprechen für
die Verwendung einer virtuellen Maschine?
- CLR vs. JVM. Eignet sich die .NET Common Language Runtime
oder die Java Virtual Machine eher als Zielplattform für
verschiedene Programmiersprachen? Begründen Sie Ihre Antwort.
Common Type System (CTS)
- Wert- und Referenztypen. Worin besteht der grundlegende
Unterschied zwischen Wert- und Referenztypen? Wie wirkt sich das
auf die Laufzeit aus?
- Boxing. Trotz des Unterschiedes zwischen Wert- und Referenztypen
sind in .NET alle Objekte zum obersten Basistyp
System.Object
kompatibel. Wie erreicht man diese Kompatibilität für Werttypen?
Common Language Specification (CLS)
- Attribut CLSCompliant. Betrachten Sie die folgenden
C#-Codebeispiele und stellen Sie fest, für welche Elemente
(Klassen, Felder, Methoden) der C#-Compiler tatsächlich die
CLS-Konformität prüft. (In allen Fällen liefert der
C#-Compiler keine Fehlermeldung).
Begründen Sie Ihre Antworten kurz.
a)
public class A {
public int F1;
public void M1 (int p1) { }
}
b)
[assembly: System.CLSCompliant(true)]
public class B {
public int F1;
public void M1 (int p1) { }
}
c)
[assembly: System.CLSCompliant(true)]
public class C {
public int F1;
M1 (sbyte p1) { }
}
Common Intermediate Language (CIL)
Metadaten
- Metadatenarten. Welche Arten von Metadaten kann man unter .NET
unterscheiden? Was beschreiben sie?
Assemblies und Module
- Assembly vs. Module. Beschreiben Sie kurz, wodurch sich Modul und
Assembly voneinander unterscheiden?
- Starke Namen. Aus welchen Teilen setzt sich ein starker Name
zusammen?
- Starke Namen. Wozu oder wann benötigt ein Assembly einen
starken Namen?
- Versionsnummern. Wann wurde ein Assembly mit der automatisch
generierten Versionsnummer (
[assembly: AssemblyVersion("1.2.*")] )
1.2.1088.3792 erzeugt?
Virtual Execution System (VES)
- Applikationsdomänen. Implementierien Sie (in C#) eine
Kommandozeilen-Applikation AppLauncher, die es ermöglicht,
andere Applikation zu starten und gleichzeitig laufen zu lassen.
Jede dieser von AppLauncher gestarteten Applikationen soll in
einer eigenen Applikationdomäne laufen (kein eigener Prozess!).
- Probing. Bei der Ausführung von MyApp aus dem
lokalen Verzeichnis c:\Programme\MyAppDir\ wird das private
Assembly Utils benötigt. In welchen Pfaden wird
standardmäßig danach gesucht?
Sicherheit
- Rechtevergabe. Die Sicherheitspolitik wird unter .NET auf vier
Ebenen definiert: Enterprise, Machine, User, AppDomain. Angenommen auf
Enterprise-, User- und AppDomain-Ebene erhalten alle Assembly alle Rechte
(FullTrust). Auf Machine-Ebene wird die folgende Politik
festgelegt:
Welche Rechte erhält das Assembly MSApp, dass von Microsoft
produziert (und signiert) und von http://dotnet.jku.at/pub/apps/ geladen
wurde? Zu welchen Codegruppen der Machine-Ebene gehört es?
|