F.6 .NET-Architektur F.6 .NET-Architektur F.6 .NET-Architektur 1 Motivation & 1. Ziel (2) ■ Lösung (2) 1 Motivation & 1. Ziel ◆ Ausführung in einem Adressraum + Software-Schutzkonzept ➤ Java (Sun, 1995) ■ Ziel: Effiziente Ausführung sehr vieler Anwendungen ◆ Probleme ➤ Microsoft & Sun ◆ Ausführung in Prozessen ist zu teuer ➤ Ressourcen pro Prozess ➤ Sprachabhängigkeit ➤ Umschaltung zwischen Prozessen ➤ Konzept für mehrere unabhängige Anwendungen in einer JVM ➤ Interprozesskommunikation ◆ gute Ideen ➤ Objektorientierung + Typisierung ■ Lösung (1) ◆ Ausführung in einem Adressraum ➤ CICS (IBM, 1969) ➤ Bytecode mit voller Typinformation ➤ kontrollierte Code-Ausführung + Garbage Collection ◆ Probleme ➤ kein Schutz zwischen Anwendungen Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.15 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. OOVS OOVS ➤ Fehler in einer Anwendung können Gesamtsystem gefährden Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.16 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. F.6 .NET-Architektur F.6 .NET-Architektur 2 Motivation & 2. Ziel (2) 3 .NET-Framework — Überblick ■ Web-Anwendungen ■ Sicht des Anwendungsentwicklers ◆ sichere, effiziente Ausführung von Web-Services ◆ Softwareentwicklungsumgebung (Visual Studio .NET) mit umfangreicher Unterstützung durch Klassenbliotheken ➤ vergleichbar zu Java ◆ flexible Ausführung von Software in heterogenen, verteilten Systemen ■ Lösung ■ Systemarchitektur- und Betriebssystemsicht ◆ Lösung 2 von 1. Ziel ◆ Architektur einer Programmiersprachen-unabhängigen Ausführungsplattform ◆ Hardware-Plattform-unabhängiger Code ◆ Middleware-Unterstützung für Ausführung und Kommunikation ➤ Common Language Infrastrucure (CLI) ➤ Java und EJB ◆ konkrete Ausführungsumgebung für Windows-Anwendungen: Betriebssystem innerhalb des Betriebssystems ➤ Common Language Runtime (CLR) ◆ Probleme ➤ Microsoft & Sun ➤ nur Java ➤ Ausführung mehrerer Programme für verschiedene Benutzer ➤ nur bedingter Schutz (durch Typisierung) innerhalb einer JVM, ➤ Ressourcenverwaltung ➤ Gewährleistung von Sicherheit Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.17 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. OOVS OOVS aber keine Ressorcenkontrolle Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.18 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. F.6 .NET-Architektur F.6 .NET-Architektur 4 Sprachunterstützung 5 Common Language Infrastructur — CLI ■ Programme werden in Zwischencode übersetzt ■ definiert die Regeln für die sprach-unabhängige Zusammenarbeit zwischen Anwendungen bzw. Software-Komponenten ➤ Microsoft Intermediate Language (MSIL) ➤ Common Type System (CTS) ➤ ähnlich zu Java-Bytecode • welche Datentypen gibt es und wie werden sie behandelt ■ MSIL wurde sprachunabhängig entworfen ➤ Instruktionssatz (MSIL) ➤ nicht auf Java beschränkt • 220 Befehle, ausgerichtet auf JIT - nicht auf Interpretation ➤ nicht nur objektorientierte Sprachen ➤ Thread-Aufbau ■ Microsoft und Drittanbieter bieten Unterstützung für über 20 Sprachen an ➤ Aufbau von ladbaren Software-Modulen (Assemblies) ➤ C++ • vergleichbar mit jar-Dateien ➤ C# (C++-Derivat mit Ideen aus Java) ➤ Laufzeitunterstützung durch die CLR ➤ Visual Basic • Laufzeitprüfung für statisch nicht prüfbare Dinge ➤ JavaScript ➤ J# (= Java 1.1.4) ➤ Perl Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.19 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. OOVS OOVS ➤ COBOL, Smalltalk, APL, Pascal, … Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.20 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. F.6 .NET-Architektur F.6 .NET-Architektur 6 Common Language Runtime 7 Assemblies ■ Plattform zur kontrollierten Ausführung verschiedener .net-Anwendungen innerhalb eines Windows-Prozesses ■ Anwendungen (.exe) bzw. Anwendungskomponenten (.dll) für .NET ➤ Portable Execution (PE) Files ◆ weitgehend vergleichbar mit Funktion der JVM ■ Metadaten (Manifest) zur Selbstbeschreibung ➤ jeweils nur typ-konforme Operationen erlaubt ➤ Name, Version, Authentisierungsinformation ➤ kein Zugriff auf "fremde" Daten (anderer Funktionen/Objekte) ➤ enthaltene Dateien, Typinformationen ➤ Arraygrenzen-Überprüfung ➤ Liste referenzierter Assemblies ➤ keine Freigabe von noch-referenzierten Objekten ■ statische Assemblies ➤ eingeschränkter Zugriff auf Systemschnittstelle ■ dynamische Assemblies ■ MSIL-Code wird vor der ersten Ausführung überprüft (Verifier) und in Maschinencode übersetzt (JIT-Compiler) ◆ zur Laufzeit von anderen .NET-Anwendungen erzeugte Assemblies ➤ z. B. zur Template-basierten Codegenerierung in Entwicklungsumgebungen ■ CLR wird für beim Laden von .NET-Anwendungen (spezielle .exe/.dllDateien) automatisch gestartet ➤ CLR läuft in einem Windows-Prozess ab Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.21 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. OOVS OOVS ➤ CLR bearbeitet Managed Code Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.22 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. F.6 .NET-Architektur F.6 .NET-Architektur 8 Virtual Execution System — VES 9 CLR-Domains ■ Teil der CLR ■ eine .NET-CLR wird in einem virtuellen Adressraum ausgeführt ➤ keine Hardware-Kapselung innherhalb der CLR ■ Class Loader ■ Software-Kapselung der Ausführung von Assemblies ■ Verifier ➤ kein direkter Zugriff auf Assemblies anderer Domains möglich ■ Domain-Konzept ➤ CLR verhindert Übergabe von Objekt-Referenzen zwischen Domains ➤ Kapselung der Ausführung von Assemblies ➤ Interaktion nur über speziell gesicherten Inter-Domain- ■ Thread-Unterstützung Kommunikationsmechanismus möglich ■ Sicherheits-Management ■ eigene Domains werden erzeugt wenn ■ Garbage Collection ➤ Code mit anderen Sicherheits-Einstellungen/Zugriffsrechten geladen wird ■ … ➤ Isolation zwischen Code-Teilen explizit gewünscht wird ➤ Code unabhängig voneinander terminieren können soll ■ Terminierung von Domains Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.23 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. OOVS OOVS ➤ kontrollierte Freigabe aller belegten Ressourcen Objektorientierte Konzepte in Verteilten Systemen und Betriebssystemen • Universität Erlangen-Nürnberg • Informatik 4, 2003 F-MS.fm 2003-01-29 11.04 F.24 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.