Netzwerke - Informatik

Download Report

Transcript Netzwerke - Informatik

.NET als Komponenteninfrastruktur
Vortragender: Boris Tsarev
Seminar „Komponentenbasierte Software-Entwicklung“ – WS 04/05
Prof. Löhr, Karl Pauls
Inhalt
• Was ist eine .NET Komponente?
• Architektur von .NET Framework
• .NET Assemblies
• Komponenten in .NET
• Enterprise Component Services in .NET
.NET als Komponenteninfrastruktur, B. Tsarev
2
Was ist eine Softwarekomponente?
• Eine Softwarekomponente* ist
• eine wiederverwendbare binäre Einheit
• zur Komposition von Anwendungen
• definiert Schnittstellen und stellt Dienste bereit
• kann allein installiert werden
• kann von Drittanbieter erstellt oder benutzt werden
* [an Szyperski angelehnt]
.NET als Komponenteninfrastruktur, B. Tsarev
3
Aspekte der Granularität von
Softwarekomponenten
• Eine Komponente bildet eine Einheit bezüglich:
• Abstraktion
• Kompilierung
• Auslieferung
• Installation
• Konfiguration
• Lokalisierung
• Laden
.NET als Komponenteninfrastruktur, B. Tsarev
4
Inkonsistente Nutzung des Begriffs
„Komponente“ in .NET
• „To be a component, a class must implement the
System.ComponentModel.IComponent interface and
provide a basic constructor that requires no parameters or
a single parameter of type IContainer.“
[MSDN Library]
• Komponente wird an einigen Stellen der Dokumentation als
Synonym von .NET Assembly verwendet
[.NET Framework SDK]
• „In this book, a component is a .NET class.“
[„.NET Components“ von Juwal Löwy]
• Sprachunabhängigkeit auf Klassenbasis bereits zur
Entwicklungszeit!
• Component Services auf Basis der Klassen!
.NET als Komponenteninfrastruktur, B. Tsarev
5
Was ist eine .NET Komponente?
• Eine Definition, die der allgemeinen Definition zur
Softwarekomponente gerecht ist:
„Jede .NET Assembly ist eine Komponente, sofern
sie öffentliche Klassen bereitstellt.“
[www.it-visions.de – Dr. Schwichtenberg]
Assembly
Öffentliche Klasse1
Öffentliche Klasse2
Interne Klasse3
Interne Klasse4
.NET als Komponenteninfrastruktur, B. Tsarev
6
Architektur von .NET Framework
.NET Programmiersprachen
Ein gemeinsames
Typsystem für alle
.NET Sprachen
Umfangreiche
Klassen-Bibliothek
Laufzeitumgebung
.NET als Komponenteninfrastruktur, B. Tsarev
7
Common Language Infrastructure - CLI
.NET Assembly
C#
Compiler C#
VB.NET
Compiler VB.NET
C++
Compiler C++
...
J#
Intermediate Language
+ Metadata
Loader
IL JIT-Compiler
Compiler C++
Execution
Virtual Execution System
CLI ist ECMA und ISO-Standard!
.NET als Komponenteninfrastruktur, B. Tsarev
8
Common Language Runtime (CLR)
• CLR ist die Microsoft Implementierung von CLI
• Laufzeitumgebung zur Ausführung von Managed
Code
• Laden von .NET Assemblies/Modulen
• Auflösung von Verweisen auf Assemblies
• Sicherheits- und Versionsüberprüfungen
• Speicherverwaltung
• Übersetzung in native code und Ausführung
• Fehlerbehandlung
.NET als Komponenteninfrastruktur, B. Tsarev
9
JIT-Übersetzung
Class Loader
Class
Loader
insert stubs
Class1
Method1 (native)
call
call
JIT-Compiler
compile
Class2
Stub
Method1 (IL)
Stub
Method2 (IL)
Class2
Method1 (native)
Stub
.NET als Komponenteninfrastruktur, B. Tsarev
load
Method2 (IL)
10
Interoperabilität mit .NET
• Interoperabilität zwischen verschiedenen .NET
Programmiersprachen
• Gemeinsames Typsystem (Common Type System)
• Gemeinsame „Zwischensprache“ (Common
Intermediate Language)
• Richtlinien bei der Übersetzung in IL (Common
Language Specification)
• Mächtige Klassenbibliothek, die allen Programmiersprachen zur Verfügung steht
.NET als Komponenteninfrastruktur, B. Tsarev
11
Interoperabilität mit .NET - Beispiel
.NET als Komponenteninfrastruktur, B. Tsarev
12
Plattformunabhängigkeit mit .NET
• Laufzeitumgebung für die jeweilige Plattform
(Windows - CLR, FreeBSD und Mac OS X – Rotor,
Linux - Mono)
• .NET Compact Framework für mobile Geräte
• Standardisierter „Satz von Instruktionen“ für die
„Zwischensprache“
.NET als Komponenteninfrastruktur, B. Tsarev
13
Assemblies – Übersicht
• Was ist eine Assembly?
• Aufbau einer Assembly
• Erstellung von Assemblies
• Installation von Assemblies
.NET als Komponenteninfrastruktur, B. Tsarev
14
Was sind Assemblies?
• Assemblies sind die Bestandteile einer .NET Anwendung
• Eine Assembly ist die kleinste Einheit bezüglich
• Installation
• Versionierung
• Sicherheitsaspekte
• Ausführung bzw. Einbindung
• Assemblies sind logische Gebilden
• Können aus mehreren Dateien bestehen
• Die Beziehung der Dateien in einer Assembly ist auf
Dateiebene nicht ersichtlich
• selbst-beschreibend – keine Zusatzinformation nötig, um
die Assembly zu starten oder nutzen
.NET als Komponenteninfrastruktur, B. Tsarev
15
Arten von Assemblies (1)
• Statische Assembly
• liegt physisch als Datei(en) vor
• Dynamische Assembly
• wird dynamisch mittels Reflektion erstellt
• Klasse System.Reflection.Assembly
• „Ausführbare“ Assembly (.EXE) – Out-process Assembly
• kann direkt gestartet werden
• hat einen Einstiegspunkt – statische Main-Methode
• Klassen-Bibliothek (.DLL) – In-process Assembly
• kann nur in der Umgebung einer „ausführbaren“ Assembly
genutzt werden
.NET als Komponenteninfrastruktur, B. Tsarev
16
Arten von Assemblies (2)
• Einzeldatei Assembly
• besteht aus genau einer Datei
• Mehrdatei Assembly
• ist auf mehreren Dateien verteilt
• Private Assembly
• liegt im Verzeichnis oder einem Unterverzeichnis der .NET
Anwendung, von der sie genutzt wird
• kann von anderen Assemblies außerhalb des Verzeichnisses
nicht genutzt werden
• Shared Assembly – öffentliche Assemby
• wird auf dem Zielsystem an einem allen bekannten Ort
installiert – Global Assembly Cache (GAC)
• kann von allen genutzt werden
.NET als Komponenteninfrastruktur, B. Tsarev
17
Aufbau einer Assembly
• Assemblies bestehen aus
• Ein oder mehreren .NET-Modulen
• Ressourcen-Dateien (Bilder, Textdateien, usw.)
• Assembly-Manifest (verpflichtend)
• Diese Bestandteile können beliebig auf Dateien
verteilt werden bzw. mehrere Bestandteile in
einer Datei integriert werden
• Die Dateien einer Assembly müssen auf dem
Zielsystem im gleichen Ordner liegen
.NET als Komponenteninfrastruktur, B. Tsarev
18
.NET Module – „managed module“
• Ein .NET Modul ist die kleinste kompilierbare Einheit
• Ein .NET Modul enthält
• Definition von Typen und deren Implementierung übersetzt in
IL
• Metadata – Beschreibung der enthaltenen Typen und ihre
sichtbare Elemente, sowie globale Definitionen
(Aufzählungen, Delegate)
.NET Module
IL-Code
Metadata
.NET als Komponenteninfrastruktur, B. Tsarev
19
Verteilung von Assemblies auf Dateien
Einzeldatei-Assembly
Mehrdatei-Assembly
Mehrdatei-Assembly
.DLL oder .EXE
.DLL oder .EXE
.DLL oder .EXE
Manifest
Manifest
Manifest
IL-Code
IL-Code
.netmodule
Metadata
Metadata
Resources
.netmodule
Ressourcen
IL-Code
Metadata
Resources
.NET als Komponenteninfrastruktur, B. Tsarev
IL-Code
Metadata
.netmodule
Resources
IL-Code
Metadata
20
Warum Mehrdatei-Assemblies?
• Rücksicht auf kleine mobile Geräten und Internet
Anwendungen
• CLR lädt einen .NET Modul oder Ressourcen-Datei,
nur wenn sie gebraucht wird
• Wenn diese in der Assembly-Datei eingebettet
sind, werden sie mitgeladen
• Bei einer direkt vom Internet gestarteten .NET
Anwendung schließt „laden“ auch „herunterladen“
ein!
• ..., aber aufwendigere Administration
.NET als Komponenteninfrastruktur, B. Tsarev
21
Assembly-Manifest
• Assembly-Identität
• Assembly-Name
• Version
• Culture-Information
• Öffentlicher Schlüssel des Erstellers
• Liste aller Dateien, aus der die Assembly besteht
• Typ-Information – wo sich von außen referenzierbaren
Typen befinden
• Liste aller statisch referenzierten Assemblies
• Weitere Assembly-Attributen wie z.B. Product, Company
usw.
.NET als Komponenteninfrastruktur, B. Tsarev
22
Erstellung von Assemblies
Beispiel „Banking“ – Klassendiagramm
BankServer
1
*
Account
createAccount (AccountNum:string)
readonly AccountNum : string
deleteAccount (AccountNum:string)
AccountBalance : double
checkAccountBalance
(AccountNum: string) : double
takeMoney (Amount : double)
payoutAccount (AccountNum:string,
Amount:double)
putMoney (Amount : double)
payinAccount (AccountNum:string,
Amount:double)
BankClient
Demo Quellcode
static Main()
.NET als Komponenteninfrastruktur, B. Tsarev
23
Erstellung von Einzeldatei-Assemblies
• Visual Studio .NET erzeugt beim Kompilieren eines Projekts
standardmäßig Einzeldatei-Assemblies
• Console-Tools
• C# Compiler – csc.exe
• VB.NET Compiler – vbc.exe
• Assembly Linker – AL.exe
• Erstellung einer Klassen-Bibliothek (.DLL)
> csc /target:library Bank.cs
-> Bank.dll
• Erstellung einer „ausführbarer“ Assembly (.EXE)
> csc /target:exe /r:Bank.dll BankClient.cs
-> BankClient.exe
.NET als Komponenteninfrastruktur, B. Tsarev
24
Erstellung von Mehrdatei-Assemblies
• Erstellung einer Mehrdatei-Assembly
• Quellcode als .NET Module kompilieren
> csc /target:module Account.cs
-> Account.netmodule
• An einem wichtigen .NET Modul das Assembly-Manifest
anhängen
> csc /target:library /addmodule:Account.netmodule Bank.cs
-> Bank.dll
• Alternativ das Assembly-Manifest getrennt erstellen
> csc /target:module /addmodule:Account.netmodule
Bank.cs
-> Bank.netmodule
> al /out:Bank.dll /t:library Account.netmodule
Bank.netmodule
-> Bank.dll
.NET als Komponenteninfrastruktur, B. Tsarev
25
Ressourcen in Assemblies
• Während der Kompilierung
> csc /resource:Menu.txt /r:Bank.dll BankClient.cs
-> Die Datei Menu.txt wird in BankClient.exe eingebettet
> csc /linkresource:Menu.txt /r:Bank.dll
BankClient.cs
-> Die Datei Menu.txt wird nur verlinkt
• Nutzung von Ressourcen im Code
Assembly a = Assembly.GetExecutingAssembly();
Stream strm = a.GetManifestResourceStream (“Menu.txt”);
StreamReader sr = new StreamReader(strm);
string s = sr.ReadToEnd();
sr.Close();
.NET als Komponenteninfrastruktur, B. Tsarev
26
Assemblies-Inhalt anzeigen lassen
• IL Disassembler - ILDASM.exe
• Zeigt das Assembly-Manifest, den Aufbau, die
enthaltenen Typen und deren Implementierung in
IL an
• .NET Component Inspector
• Startet die Assembly und erkundet sie mittels
Reflection
.NET als Komponenteninfrastruktur, B. Tsarev
27
Installation von privaten Assemblies
•
•
•
•
•
Private Assemblies werden von einer Anwendung benutzt
Eindeutige Bindung über Assembly-Name
Installation erfolgt durch Kopieren
Keine Einträge in der Registry nötig!
Installationsort von privaten Assemblies
• Selbes Verzeichnis wie Anwendung
• Unterverzeichnis mit Namen der Assembly
• Unterverzeichnis angegeben als Suchpfad in der
Konfigurationsdatei der Anwendung Anwendung.exe.config
.NET als Komponenteninfrastruktur, B. Tsarev
28
Installation von öffentlichen Assemblies
• Öffentliche Assemblies können von allen .NET
Anwendungen genutzt werden
• Eindeutige Bindung über Strong-Name
• Sie werden in Global Assembly Cache (GAC) installiert
• Erfordert Toolunterstützung
• Durch Installer auf dem Zielsystem
• Gacutil.exe für Entwickler
• In GAC können ohne Probleme unterschiedliche Versionen
einer Assembly installiert werden - No more DLL-Hell!
• Side-by-Side Execution – CLR kann parallel mehrere
Versionen einer Assembly laden
.NET als Komponenteninfrastruktur, B. Tsarev
29
Global Assembly Cache
• Zentraler Speicherort aller
öffentlichen Assemblies
• Vorübersetzte Assemblies für die
aktuelle Plattform werden in
NativeImages_.. abgelegt
• CLR prüft zuerst in NativeImages
• Vorübersetzung mit Ngen.exe
(Native Image Generator)
.NET als Komponenteninfrastruktur, B. Tsarev
30
Strong Names öffentlicher Assemblies
• Öffentliche Assemblies werden durch ihren Strong
Names eindeutig identifiziert und referenziert
• Bestandteile von einen Strong Name
•
•
•
•
Name der Assembly
Öffentlicher Schlüssel des Herstellers
Culture (Sprache-Land) z.B. en-US, de-AT
Version: <Major>.<Minor>.<Build>.<Revision>
• Beispiel:
.NET als Komponenteninfrastruktur, B. Tsarev
31
Digitale Signierung von Assemblies
• Öffentliche Assemblies werden digital signiert
• CLR überprüft die Echtheit der Assemblies
.NET als Komponenteninfrastruktur, B. Tsarev
32
Erstellung von öffentlichen Assemblies
• Generierung von einem Schlüsselpaar
> sn -k MyCompany.keys
• Auf die Schlüsseldatei bei der Kompilierung
hinweisen
• [assembly:AssemblyKeyFile("MyCompany.keys")]
• oder al.exe /keyfile:MyCompany.keys
> csc /t:library Bank.cs
-> Bank.dll ist signiert und kann in GAC installiert werden
• Installation in GAC mit gacutil.exe
> gacutil /i Bank.dll
.NET als Komponenteninfrastruktur, B. Tsarev
33
Versionskontrolle (1)
• Private Assemblies im Programmverzeichnis der
.NET Anwendung, die sie nutzt
• Für jede .NET Anwendung kann man die genau
passende Version einer privaten Assembly haben
• Bei öffentlichen Assemblies ist die Version ein Teil
der Identität der Assembly
• CLR sucht standardmäßig die genaue Version
.NET als Komponenteninfrastruktur, B. Tsarev
34
Versionskontrolle (2)
• In GAC können mehrere Versionen einer Assembly
installiert werden
• Side-by-Side Execution
• Mehrere Versionen einer Assembly können gleichzeitig laufen,
ohne sich gegenseitig zu stören
• Abwärtskompatibilität nicht unbedingt nötig
• Vermeidung von „DLL-Hell“
• „Unmanaged“ DLLs können nur in einer Version im System
vorliegen
• Bei Update einer DLL, können u.U. Applikation, die die alte
Version genutzt hatten, nicht mehr lauffähig sein
.NET als Komponenteninfrastruktur, B. Tsarev
35
Versionskontrolle - Konfiguration
• In der Konfigurations-Datei Anwendung.exe.config können
Verweise auf Assemblies zu neuen Versionen umgeleitet
werden
• Die Datei kann vom Anbieter der .NET Anwendung
mitgeliefert werden
• BankClient.exe.config
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Bank" publicKeyToken="dc759fdd93618f15" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
.NET als Komponenteninfrastruktur, B. Tsarev
36
Konfiguration von CLR und Assemblies
• Die Konfiguration von CLR basiert auf XMLKonfigurationsdateien
• Pfad [Windows]\Microsoft.NET\Framework\
Versionsnummer\CONFIG
 Machine.config
 Security.config
 und weitere
• Im Verzeichnis der jeweiligen .NET Anwendung
 Anwendung.exe.config
 Web.config für ASP.NET Anwendungen
• Visuelles Konfigurationstool
• Control Panel -> Administrative Tools ->
-> .NET Configuration 1.1
.NET als Komponenteninfrastruktur, B. Tsarev
37
.NET als Komponenteninfrastruktur
• Eine Komponenteninfrastruktur besteht aus
• APIs,
? .NET Framework Class Library
• Entwicklungsumgebung,
Visual Studio .NET
• Laufzeitumgebung
CLR
• und Administrationtools
.NET Configuration
• zu Entwicklung, Erstellung, Installation,
Administration und Ausführung von Komponenten
.NET als Komponenteninfrastruktur, B. Tsarev
38
Komponentenmodell von .NET Framework
• Namespace System.ComponentModel
• Basis-Schnittstellen: IComponent, IContainer
• Basis-Klassen: Component, Container
• Eine Komponente ist eine Klasse, die die Schnittstelle
System.ComponentModel.IComponent implementiert oder
eine Implementierung davon erbt
• .NET Framework bietet automatisch visuelle design-time
Unterstützung von allen Typen, die IComponent
implementieren
• Drag-and-drop auf ein Formular
• Einstellung können direkt in Properties-Window angegeben
werden
• Der entsprechende Quellcode wird generiert
.NET als Komponenteninfrastruktur, B. Tsarev
39
Design-Time Attribute
• Durch Attribute im Quellcode kann das Verhalten
des Designers beeinflusst werden
• Beispiel Category- und Description-Attribute
[Category("Appearance")]
public Color BorderColor;
[Description("The Click event of the button")]
public event EventHandler Click;
• Andere Attribute




Browsable
DefaultProperty
DefaultValue
usw.
.NET als Komponenteninfrastruktur, B. Tsarev
40
Class vs. Component vs. Control
• Empfehlungen bei der Entwicklung von
Komponenten [MSDN/Library]
Situation (Eine Klasse, die ...)
Empfehlung
externe Ressourcen (Datenbanken etc.) nutzt
implementiere IDisposable
durch visuellen Designer manipulierbar
implementiere System.ComponentModel.
IComponent
durch visuellen Designer manipulierbar
fernaufrufbar per Referenz (MarshalByReference)
erbe von System.ComponentModel.
Component
durch visuellen Designer manipulierbar
fernaufrufbar durch Kopieren (MarshalByValue)
erbe von System.ComponentModel.
MarshalByValueComponent
durch visuellen Designer manipulierbar
visuelle Oberfläche bietet
erbe von System.Windows.Forms.Control
oder System.Web.UI.Control
.NET als Komponenteninfrastruktur, B. Tsarev
41
Komponenten in .NET
• Komponenten, die IComponent implementieren
• Controls
• Komponenten mit GUI auf einer Windows Form
• ASP.NET Server Controls
• Serverseitige Komponenten mit UI auf einer Web
Form – durch HTML auf der Clientseite
repräsentiert
• Serviced Components
• COM+ Komponenten
.NET als Komponenteninfrastruktur, B. Tsarev
42
Beispiel: InfoUserControl und MyTimer
• MyTimer
• eigene Implementierung eines Timers als Komponente
• erbt von Component
• bietet keine visuelle Oberfläche
• InfoUserControl
• erbt von System.Windows.Forms.UserControl
 Basisklasse für eigene Controls
 hat visuelle Oberfläche
 kann als Container für andere Controls dienen
 Focusmanagement, Positionsmanagement, Keyboard
handling
Demo!
.NET als Komponenteninfrastruktur, B. Tsarev
43
ASP.NET Server Controls
• ASP.NET Web Form
• Container für ASP.NET Server Controls
• wird zu einer Klasse kompiliert und auf der Server ausgeführt
• das Ergebnis ist die dynamische Erstellung einer HTML-Seite,
die an den Client verschickt wird
• ASP.NET Server Controls
• können auf Web Forms positioniert werden
• werden durch HTML und Javascript browserspezifisch auf der
Clientseite repräsentiert
• wiederverwendbar
• ASP.NET Control Gallery - http://www.asp.net/controlgallery/
Demo!
.NET als Komponenteninfrastruktur, B. Tsarev
44
Serviced Components
• „Serviced Components“ sind Komponenten, die
„.NET Enterprise Services“ nutzen
• „.NET Enterprise Services“ werden durch COM+
realisiert
• COM+ ist das Ergebnis von Integration von COM
und MTS (Microsoft Transaction Server)
• COM+ ist standard Bestandteil von Windows 2000
und höher
• Die .NET Assembly, die die „serviced“
Komponente enthält, wird als Teil einer COM+
Anwendung registriert
.NET als Komponenteninfrastruktur, B. Tsarev
45
.NET Enterprise Services
• Instance management
• Objektpooling
• JITA (Just in-time Activation)
• automatisch Fernaufrufe
• Transaktionen
• Queued components
• Web Services
• ... und weitere
.NET als Komponenteninfrastruktur, B. Tsarev
46
Programmierung von „serviced“ Komponenten
• „Serviced“ Komponenten erben von
System.EnterpriseServices.ServicedComponent
• keine statische Methoden und Variablen
• keine parametriesierte Konstruktoren
• Konfigurierung der Dienste
• Deployment-spezifische Dienste durch COM+
Explorer
• Nicht deployment-spezifische durch Attribute im
Quellcode (einige davon durch COM+ Explorer
veränderbar)
.NET als Komponenteninfrastruktur, B. Tsarev
47
Programmierung von „serviced“ Komponenten
• Am Beispiel des Bank-Servers
using System.EnterpriseServices;
[assembly: ApplicationName("Bank")]
[assembly: ApplicationActivation(ActivationOption.Server)]
...
[ObjectPooling(MinPoolSize = 1, MaxPoolSize = 1, CreationTimeout = 60000)]
[JustInTimeActivation(true)]
public class BankServer : ServicedComponent {
protected override bool CanBePooled(){
return true;
}
...
[AutoComplete(true)]
public void createAccount(string strAccountNum) { ... }
...
}
.NET als Komponenteninfrastruktur, B. Tsarev
48
Administration von „serviced“ Komponenten
• Erstellung
 csc /t:library Bank.cs
 gacutil /i Bank.dll
 csc /t:exe /r:Bank.dll BankClient.cs
• Registrierung
 regsvsc Bank.dll
• Konfiguration durch COM+ Explorer
[Control Panel]/[Administrative Tools]/[Component Services]
Demo!
.NET als Komponenteninfrastruktur, B. Tsarev
49
Zusammenfassung
• .NET als Komponenteninfrastruktur
•
•
•
•
•
•
•
Programmierspracheninteroperabilität
Plattformunabhängigkeit
Aufteilung größerer Anwendung in Assemblies
Versionskontrolle, Side-by-Side Execution
Flexible Konfigurationsmöglichkeiten von CLR
Umfangreiche „Framework Class Library“
Design-time Unterstützung von Komponenten durch .NET
Framework – IComponent
• Komponenten mit UI (Controls)
 Controls auf Windows Forms
 Server Controls auf Web Forms (ASP.NET)
• „Serviced“ Komponenten und .NET Enterprise Services
.NET als Komponenteninfrastruktur, B. Tsarev
50
Quellen (1)
•
•
•
•
•
•
J. Löwy, Programming .NET Components, O‘Reilly, 2003
A. Kühnel, Visual C#, Galileo Computing, 2003
http://www.components-online.com (03.01.2005)
http://www.sdmagazine.com (03.01.2005)
http://www.msdn.microsoft.com/library/ (09.01.2005)
Henrik Zellmer, .NET Versioning and Deployment, DISCOURSE
Verteile Systeme mit .NET, 2003, http://kbs.cs.tuberlin.de/~mwerner/ discourse/documents /BlockLV03/zellmerdeploy.pdf (09.01.2005)
• J. Heinzelreiter, .Net Assemblies, 2002, http://webster.fhhagenberg.at/staff/jheinzel/PRG6/Docs/Assemblies.pdf
(09.01.2005)
.NET als Komponenteninfrastruktur, B. Tsarev
51
Quellen (2)
• J. Heinzelreiter, .Net Architektur, 2002, http://webster.fhhagenberg.at/staff/jheinzel/PRG6/Docs/DotNet-Architektur.pdf
(09.01.2005)
• J. Löwy, COM and .NET Component Services, O‘Reilly, 2001
• J. Löwy, .NET Enterprise Services, www.dotned.nl/
downloads/juvallowy.pdf, (16.01.2005)
• Mary Kirtland (Microsoft), COM+ Internals,
http://se2c.uni.lu/tiki/se2c_bib_download.php?id=523
(16.01.2005)
.NET als Komponenteninfrastruktur, B. Tsarev
52
Danke für die Aufmerksamkeit!
.NET als Komponenteninfrastruktur, B. Tsarev
53