.NET als Komponenteninfrastruktur - PowerPoint PPT Presentation

About This Presentation
Title:

.NET als Komponenteninfrastruktur

Description:

Title: Netzwerke Author: Tsarev Last modified by: Mr X Created Date: 6/3/2004 6:40:49 AM Document presentation format: On-screen Show Company: Microsoft – PowerPoint PPT presentation

Number of Views:80
Avg rating:3.0/5.0
Slides: 54
Provided by: Tsa147
Category:

less

Transcript and Presenter's Notes

Title: .NET als Komponenteninfrastruktur


1
.NET als Komponenteninfrastruktur
Vortragender
Boris Tsarev
Seminar Komponentenbasierte Software-Entwicklung
WS 04/05 Prof. Löhr, Karl Pauls
2
Inhalt
  • Was ist eine .NET Komponente?
  • Architektur von .NET Framework
  • .NET Assemblies
  • Komponenten in .NET
  • Enterprise Component Services in .NET

3
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

4
Aspekte der Granularität von Softwarekomponenten
  • Eine Komponente bildet eine Einheit bezüglich
  • Abstraktion
  • Kompilierung
  • Auslieferung
  • Installation
  • Konfiguration
  • Lokalisierung
  • Laden

5
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!

6
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
7
Architektur von .NET Framework
.NET Programmiersprachen
Ein gemeinsames Typsystem für alle .NET Sprachen
Umfangreiche Klassen-Bibliothek
Laufzeitumgebung
8
Common Language Infrastructure - CLI
.NET Assembly
C
Compiler C
Intermediate Language Metadata
VB.NET
Compiler VB.NET
Loader
C
Compiler C
...
IL JIT-Compiler
J
Compiler C
Execution
Virtual Execution System
CLI ist ECMA und ISO-Standard!
9
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

10
JIT-Übersetzung
Class Loader
Class Loader
load
11
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
    Programmier-sprachen zur Verfügung steht

12
Interoperabilität mit .NET - Beispiel
13
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

14
Assemblies Übersicht
  • Was ist eine Assembly?
  • Aufbau einer Assembly
  • Erstellung von Assemblies
  • Installation von Assemblies

15
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

16
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

17
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

18
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

19
.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
20
Verteilung von Assemblies auf Dateien
Einzeldatei-Assembly
Mehrdatei-Assembly
Mehrdatei-Assembly
.DLL oder .EXE
.DLL oder .EXE
Manifest
Manifest
IL-Code
Metadata
Resources
Resources
21
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

22
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.

23
Erstellung von AssembliesBeispiel Banking
Klassendiagramm
1

BankServer
Account
createAccount (AccountNumstring)
readonly AccountNum string
deleteAccount (AccountNumstring)
AccountBalance double
checkAccountBalance (AccountNum string) double
takeMoney (Amount double)
putMoney (Amount double)
payoutAccount (AccountNumstring, Amountdouble)
payinAccount (AccountNumstring, Amountdouble)
Demo Quellcode
BankClient
static Main()
24
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)
  • gt csc /targetlibrary Bank.cs
  • -gt Bank.dll
  • Erstellung einer ausführbarer Assembly (.EXE)
  • gt csc /targetexe /rBank.dll BankClient.cs
  • -gt BankClient.exe

25
Erstellung von Mehrdatei-Assemblies
  • Erstellung einer Mehrdatei-Assembly
  • Quellcode als .NET Module kompilieren
  • gt csc /targetmodule Account.cs -gt
    Account.netmodule
  • An einem wichtigen .NET Modul das
    Assembly-Manifest anhängen
  • gt csc /targetlibrary /addmoduleAccount.netmodul
    e Bank.cs -gt Bank.dll
  • Alternativ das Assembly-Manifest getrennt
    erstellen
  • gt csc /targetmodule /addmoduleAccount.netmodule
    Bank.cs -gt Bank.netmodule
  • gt al /outBank.dll /tlibrary Account.netmodule
    Bank.netmodule -gt Bank.dll

26
Ressourcen in Assemblies
  • Während der Kompilierung
  • gt csc /resourceMenu.txt /rBank.dll
    BankClient.cs
  • -gt Die Datei Menu.txt wird in BankClient.exe
    eingebettet
  • gt csc /linkresourceMenu.txt /rBank.dll
    BankClient.cs
  • -gt 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()

27
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

28
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

29
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

30
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)

31
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 ltMajorgt.ltMinorgt.ltBuildgt.ltRevisiongt
  • Beispiel

32
Digitale Signierung von Assemblies
  • Öffentliche Assemblies werden digital signiert
  • CLR überprüft die Echtheit der Assemblies

33
Erstellung von öffentlichen Assemblies
  • Generierung von einem Schlüsselpaar
  • gt sn -k MyCompany.keys
  • Auf die Schlüsseldatei bei der Kompilierung
    hinweisen
  • assemblyAssemblyKeyFile("MyCompany.keys")
  • oder al.exe /keyfileMyCompany.keys
  • gt csc /tlibrary Bank.cs
  • -gt Bank.dll ist signiert und kann in GAC
    installiert werden
  • Installation in GAC mit gacutil.exe
  • gt gacutil /i Bank.dll

34
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

35
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

36
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
  • lt?xml version"1.0"?gt
  • ltconfigurationgt
  • ltruntimegt
  • ltassemblyBinding xmlns"urnschemas-microsoft-
    comasm.v1"gt
  • ltdependentAssemblygt
  • ltassemblyIdentity name"Bank"
    publicKeyToken"dc759fdd93618f15" /gt
  • ltbindingRedirect oldVersion"1.0.0.0-1.1.0
    .0" newVersion"2.0.0.0" /gt
  • lt/dependentAssemblygt
  • lt/assemblyBindinggt
  • lt/runtimegt
  • lt/configurationgt

37
Konfiguration von CLR und Assemblies
  • Die Konfiguration von CLR basiert auf
    XML-Konfigurationsdateien
  • 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 -gt Administrative Tools -gt
  • -gt .NET Configuration 1.1

38
.NET als Komponenteninfrastruktur
  • Eine Komponenteninfrastruktur besteht aus
  • APIs,
  • Entwicklungsumgebung,
  • Laufzeitumgebung
  • und Administrationtools
  • zu Entwicklung, Erstellung, Installation,
    Administration und Ausführung von Komponenten

39
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

40
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.

41
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
42
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

43
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!
44
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/contr
    olgallery/

Demo!
45
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

46
.NET Enterprise Services
  • Instance management
  • Objektpooling
  • JITA (Just in-time Activation)
  • automatisch Fernaufrufe
  • Transaktionen
  • Queued components
  • Web Services
  • ... und weitere

47
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)

48
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)
    ...
  • ...

49
Administration von serviced Komponenten
  • Erstellung
  • csc /tlibrary Bank.cs
  • gacutil /i Bank.dll
  • csc /texe /rBank.dll BankClient.cs
  • Registrierung
  • regsvsc Bank.dll
  • Konfiguration durch COM Explorer
  • Control Panel/Administrative Tools/Component
    Services

Demo!
50
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

51
Quellen (1)
  • J. Löwy, Programming .NET Components, OReilly,
    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.tu-berlin.de/mwerner/
    discourse/documents /BlockLV03/zellmer-deploy.pdf
    (09.01.2005)
  • J. Heinzelreiter, .Net Assemblies, 2002,
    http//webster.fh-hagenberg.at/staff/jheinzel/PRG6
    /Docs/Assemblies.pdf (09.01.2005)

52
Quellen (2)
  • J. Heinzelreiter, .Net Architektur, 2002,
    http//webster.fh-hagenberg.at/staff/jheinzel/PRG6
    /Docs/DotNet-Architektur.pdf (09.01.2005)
  • J. Löwy, COM and .NET Component Services,
    OReilly, 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?id5
    23 (16.01.2005)

53
  • Danke für die Aufmerksamkeit!
Write a Comment
User Comments (0)
About PowerShow.com