Komponentenbasierte Softwareentwicklung mit dem

Werbung
Komponentenbasierte
Softwareentwicklung mit dem
.NET Framework
1
1.
2.
3.
4.
5.
Einführung
Architektur
.NET Assemblies
Die .NET Klassenbibliothek
Software/Tools
Gliederung
2
•
•
–
–
–
–
–
–
Entwicklung wiederverwendbarer Komponenten
die .Net Komponentenarchitektur soll COM ablösen
der Entwickler hat bei der Wahl der Programmiersprache freie
Hand
Sprachinteroperabilität / Sprachunabhängigkeit
Plattformunabhängigkeit (Betriebsystem / Hardware)
verteilte Anwendungen (Internet)
entwickelt von Microsoft und seit 2002 verfügbar
das .Net Framework ist eine Plattform die versucht verschiedene
Aspekte der Softwareentwicklung zu vereinfachen:
1. Einführung
3
2. Architektur
haben Zugriff auf eine
umfangreiche Klassenbibliothek
•
4
werden von einer
Laufzeitumgebung (CLR)
ausgeführt und verwaltet
•
.NET Programme:
• liegen in Form einer
Zwischensprache (CIL/MSIL) +
Metadaten vor
•
•
•
•
5
Zielsprache aller auf die .NET Plattform abzielenden
Compiler
Virtuelle Stackmaschine
CIL-Code ist untrennbar mit einer detaillierten
Beschreibung der benutzten Typen verbunden (Metadaten)
Just-In-Time Kompilierung statt Interpretation:
• eine Methode wird bei ihrem ersten Aufruf in die
Maschinensprache der Plattform übersetzt
• weitere Aufrufe führen dann zur Ausführung des
erzeugten „Native Code Image“
Common Intermediate Language
•
•
•
•
Das CTS bildet die
Basis für die Zusammenarbeit verschiedener Sprachen
6
Festlegung der Menge von Datentypen die einer .NET
Sprache zur Verfügung stehen
jede .NET Sprache muss sich auf diese Menge beschränken
Regeln zur Deklaration, Verwendung und Verwaltung von
Typen
objektorientiertes Modell
Common Type System
im verwalteten Heap angelegte Objekte
automatische Bereinigung durch den Garbage Collector
direkt oder indirekt von System.Object abgeleitet
•
•
•
•
können nicht direkt im Heap angelegt werden
Methodenparameter, lokale Variablen, Rückgabewerte
oder Felder eines Objektes
Lebenszeit durch den Auf- und Abbau des
Aktivierungssatzes am Methodenstack bestimmt
von System.ValueType abgeleitet
Werttypen:
•
•
•
Objekt-Referenzen:
Common Type System (2)
7
Common Type System (3)
8
„Verpacken“ einer Instanz eines Werttyps in ein Objekt
auf dem Heap
jeder Werttyp kann so als System.Object verwendet
werden
die Klassendefinition des Werttyps beschreibt den
zugehörigen Referenztyp
•
9
„Auspacken“ einer geschachtelten (boxed) Werttypinstanz
Unboxing:
•
•
•
Boxing:
Common Type System (4)
Events:
• Ereignissmechanismus auf Basis von Delegaten
Properties:
• Get- / Set-Methoden
Klassen:
• vollständig qualifizierter Name
• genau ein Basistyp (mit Ausnahme von System.Object)
• beliebig viele Interfaces
• Sichtbarkeit (public, private)
• Methoden, Felder (Fields), Eigenschaften (Properties),
Ereignisse (Events)
• verschachtelte Typen (nested Types)
Common Type System (5) - Objektmodell
10
11
namespace Namespace
{
class Beispiel
{
public char Property
{
get
{
return '1';
}
}
protected delegate void MethodPointer(int i);
event MethodPointer Event;
}
}
Bsp: C#
Common Type System (6) - Objektmodell
Darstellung der vom Compiler erzeugten Metadaten mittels ILASM
Syntax
...
12
.method public hidebysig specialname instance char get_Property() cil managed
{
...
}
.class private auto ansi beforefieldinit Beispiel extends [mscorlib]System.Object
{
// Property
.property instance char Property()
{
.get instance char Namespace.Beispiel::get_Property()
}
•
Common Type System (7) - Objektmodell
...
// Delegate
.class auto ansi sealed nested family MethodPointer
extends [mscorlib]System.MulticastDelegate
{
.method public hidebysig virtual instance void Invoke(int32 i)
runtime managed
{}
}
...
Common Type System (8) - Objektmodell
13
} // end of class Beispiel
.method private hidebysig specialname instance void
remove_Event(class Namespace.Beispiel/MethodPointer 'value')
cil managed synchronized
{
...
}
...
// Event
.event Namespace.Beispiel/MethodPointer Event
{
.addon instance void Namespace.Beispiel::add_Event(
class Namespace.Beispiel/MethodPointer)
.removeon instance void Namespace.Beispiel::remove_Event(
class Namespace.Beispiel/MethodPointer)
}
.method private hidebysig specialname instance void
add_Event(class Namespace.Beispiel/MethodPointer 'value')
cil managed synchronized
{
...
}
Common Type System (9) - Objektmodell
14
•
•
•
•
Die CLS sichert die Sprachinteroperabilität
15
Typen einer .NET Sprache können von anderen .NET
Sprachen verwendet und erweitert werden
Ausnahmen werden sprachunabhängig behandelt
Untermenge des CTS (40 Regeln)
damit ein Typ sprachunabhängig benutzt werden kann
müssen alle öffentlich zugänglichen Elemente den Regeln
der CLS entsprechen
Common Language Specification
•
•
•
•
•
•
nicht mehr referenzierte Objekte werden vom Garbage
Collector automatisch entfernt
Klassen können Finalizer-Methoden definieren in denen
Ressourcen freigegeben werden
diese Methoden werden aber nicht zu einem definierten
Zeitpunkt aufgerufen sondern asynchron in einem eigenen
Thread (Finalizer-Thread) ausgeführt
um Ressourcen möglichst frühzeitig und zu einem
determinierten Zeitpunkt freizugeben wird der DisposeMechanismus verwendet
Interface IDisposable: Dispose()
nach der Rückkehr aus dieser Methode ist das Objekt noch
vorhanden aber möglicherweise nicht mehr nutzbar
Automatische Speicherverwaltung
16
17
logische Einheit der:
• Auslieferung
• Versionierung
• Sicherheit
•
•
.NET Komponenten
ausführbare Applikationen oder Klassenbibliotheken (.Exe /
.Dll)
vollständig selbstbeschreibend durch Metadaten (keine
Registry-Einträge oder zusätzliche Typbibliotheken nötig)
•
•
3. .NET Assemblies
eine Assembly besteht aus einer oder mehreren Dateien
(Module und Ressourcen)
muß ein Manifest enthalten (Metadaten zur genaueren
Beschreibung der Assembly)
Ressourcen:
• Ressourcedateien enthalten beliebige Daten
Modul:
• zum Windows-Binärformat PE (Portable Executable)
kompatible Dateien
• enthält Definitionen von Typen + CIL-Code
• nur innerhalb einer Assembly verwendbar
•
•
Auslieferung
18
Auslieferung (2)
Single File Assembly
Multi File Assembly
•
•
19
Auflistung aller zur Assembly gehörigen Dateien
Export aller öffentlichen Typen und Verweis auf die
implementierenden Module
Auflistung aller referenzierten Assemblies
weitere Informationen über die Assembly
•
•
•
•
enthält alle Informationen die die CLR benötigt um
Typdefinitionen zu finden und zu laden:
•
Manifest
20
einfacher Name
• Name des Moduls das das Manifest beinhaltet
Version
• Major . Minor . Build . Revision
• z.B. 1.0.2017.41890
Sprache (Culture)
• sprach- und länderspezifische Informationen
• z.B. „neutral“, „en-US“, „ge-AT“
•
•
•
Versionierung
21
22
Bsp: „MyAssembly, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=B7 7A 5C 56 19 34 E0 89“
starker Name (eindeutige Identifikation der Assembly)
• Name, Version, Sprache, öffentlicher Schlüssel
• digitale Signatur
•
•
öffentlicher Schlüssel
• der Entwickler einer Assembly kann diese mit einer
digitalen Signatur „unterschreiben“
• Verfahren der „Public Key Cryptography“
• geheimer Schlüssel
• Sicherung der Herkunft
•
Versionierung (2)
XCOPY Deployment / DEL Uninstallation:
• eine Anwendung, die private Assemblies benutzt, kann
einfach durch Kopieren ihrer Verzeichnissstruktur an
einen beliebigen Ort installiert werden
• keine Registrierung nötig
•
23
private Assemblies:
• gehören zur Applikation mit der sie ausgeliefert werden
und werden nur von dieser verwendet
• befinden sich im Anwendungsverzeichniss oder in
einem Unterverzeichniss dessen
• benötigen nur einen einfachen Namen und eine Version
•
Versionierung (3) – Private und öffentliche Assemblies
GAC:
• zentrales Repository das Assemblies in verschiedenen
Versionen nebeneinander beinhalten kann
• vorkompilierte Native Code Images werden ebenfalls im
GAC gehalten (Native Image Cache)
• einsehbar über das Verzeichniss: \WinNT\assembly
•
24
öffentliche Assemblies (shared assemblies):
• können von mehreren Anwendungen verwendet werden
• benötigen starken Namen
• Installation im Global Assembly Cache (GAC)
•
Versionierung (4) – Private und öffentliche Assemblies
Base Class Library:
• von allen .NET Sprachen verwendbar
• Programmierschnittstelle des .NET Frameworks
• Kapselung der Windows-API (ähnlich MFC)
• Hierarchie von Namensräumen mit System als
Wurzel
einige Bereiche:
• System.Threading
• System.Net
• System.Reflection
• System.Windows.Forms
• System.XML usw.
•
•
4. Die Klassenbibliothek
25
enthalten im System.Data Namespace
•
•
Weiterentwicklung von ADO (ActiveX Data Objects)
Menge von Klassen zur Manipulation von Daten
unabhängig von der Art und dem Ort der Datenquelle
z.B.
• Zugriff auf DB mittels verschiedener SQL Dialekte
• andere Datenquellen
•
•
ADO.NET
26
27
Namespace: System.Web
•
•
•
Weiterentwicklung der Active Server Pages
Technologie zur dynamischen Zusammenstellung von
Webseiten
anstelle von Skriptsprachen in ASP stehen in ASP.NET
beliebige .NET Sprachen zur Verfügung (damit auch die
.NET Klassenbibliothek)
für die Ausgabe im Browser werden Web Forms verwendet
•
•
ASP.NET
28
System.Web.Services
•
•
•
•
verteilte Dienste die unabhängig von Betriebssystem,
Programmiersprache und Übertragungsprotokoll aufgerufen
werden können
benutzen ein XML-basiertes Protokoll
SOAP (simple object access protocoll) wird dabei für RPC
Aufrufe verwendet
Methodenaufrufe und Rückgaben werden als XMLDokumente übertragen (z.B. über HTTP)
•
Web Services
.Net Framework + SDK (v1.1):
• C#-Compiler (csc.exe)
• IL Dissassembler (ildasm.exe)
• IL Assembler (ilasm.exe)
• Framework SDK Dokumentation
.NET Sprachen (über 40)
• MS Visual Studio .NET
• C#, MC++, Visual Basic.NET, Jscript.NET
• Java (J#)
• Perl, COBOL, Eiffel#, Haskell,
• Smalltalk, Fortran ....
•
•
5. Software/Tools
29
Mono
• Open Source Implementation der .Net Platform für
Unix/Linux
• http://www.mono-project.com
Rotor
• Shared Source Implementation von Microsoft
• FreeBSD, Mac OS X, Windows
SharpDevelop
• Open Source Entwicklungsumgebung für .Net
• http://www.icsharpcode.net/
•
•
•
30
•
•
•
•
31
.Net Framework SDK Dokumentation
Andrew Troelsen: C# and the .Net Platform, Apress, 2001
Richard Grimes: Programming with Managed Extensions for
Microsoft Visual C++.Net, Microsoft Press, 2003
Wolfgang Beer, Dietrich Birngruber, Hanspeter
Mössenböck, Albrecht Wöß: Die .Net-Technologie,
dpunkt.verlag, 2003
Literatur
Herunterladen