.NET als Komponenteninfrastruktur Vortragender: Boris Tsarev Seminar „Komponentenbasierte Software-Entwicklung“ – WS 04/05 Prof. Löhr, Karl Pauls.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Einführung in Microsoft .NET 2.0
Programmorganisation
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Deployment und Versioning von .NET Applikationen
DI Christian Donner cd (at) donners.com
SPS / WSS Entwicklung Martin Saternus Technical Student Consultant Microsoft Deutschland GmbH
Systemverwaltung wie es Ihnen gefällt.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Grundlagen der Sprache
Seminar Sommersemester 2002 ASP.NET Andre Margousian.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Introducing the .NET Framework
Mono und andere freie.NET Implementierungen. Implementierungen Microsoft.NET Framework Win32, Win64? Microsoft.NET Compact Framework WinCE (Mobile, Phone)
Software Design Patterns Extreme Programming (XP).
Einführung in Visual C++
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Erstellen von WebServices mit Visual FoxPro 9.0
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
Systementwicklungsprojekt:
Björn Schmidt, Hoang Truong Nguyen
UML Begleitdokumentation des Projekts
Lei Liu: Software-Tankstelle1 Schaffung einer internetbasierten Softwaretankstelle zur Herstellung der technischen Voraussetzungen für die Teilnahme.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Coccon das Web-XML-Publishing System Thomas Haller.
Plattformunabhängige Programmiersprache
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Einführung in die Programmiersprache Java
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 3 Folie 2 Windows Presentation Foundation (WPF) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
Warum brauche ich ein CMS – Content Management System?
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
SQL Server 2005 CLR-Integration
1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers.
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
Präsentation von Sonja Pathe
Typo 3. INSTALLATION TYPO3 INSTALLTOOL EXTENSIONS UND TEMPLATES INSTALLATION TEMPLAVOILA USERMANAGEMENT Inhalt:
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 Commands (1) s.a.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 2013 Kapitel 5 Folie 2 Windows Communication Foundation (WCF) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
CGI (Common Gateway Interface)
Bonn-to-code.net Thomas van Veen Website:
7.1.5 Java RMI – Remote Method Invocation
Oliver Spritzendorfer Thomas Fekete
EPROG Tutorium #4 Philipp Effenberger
© Zühlke 2012 Oliver Brack Romano Roth iOS, Android, WP7: Alle nativ auf einen Streich Fragenkatalog zu umgesetzten Apps 27. September 2012 Folie 1.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Microsoft.NET InfoPoint 8. Juni 2005 Stefan Bühler.
Datenbanken im Web 1.
8.4 Microsoft.NET Framework =  CLR – Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung.
1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller.
NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von.
Microsoft.NET - Plattform Kurzer Überblick Vergleich mit Java Von Thomas Zahn Januar 2001.
Microsoft Silverlight Autor: Christian Pirker. Inhalt Einführung Silverlight Einführung XAML Silverlight 1.0 und 1.1 Silverlight 2.0 Silverlight 3.0 Ausblick.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Programmierung unter VB.Net mit der IDE VisualStudio. Schritt für Schritt erklärt und beschrieben. Zielgruppe: Komplette Neueinsteiger mit fundiertem Computerwissen.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
9.5 Microsoft .NET Architektur: objektorientiert/Fernaufrufe (8.1.6 )
Implementieren von Klassen
 Präsentation transkript:

.NET als Komponenteninfrastruktur Vortragender: Boris Tsarev Seminar „Komponentenbasierte Software-Entwicklung“ – WS 04/05 Prof. Löhr, Karl Pauls

.NET als Komponenteninfrastruktur, B. Tsarev 2 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 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]

.NET als Komponenteninfrastruktur, B. Tsarev 4 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 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!

.NET als Komponenteninfrastruktur, B. Tsarev 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.“ [ – Dr. Schwichtenberg] Assembly Öffentliche Klasse1 Interne Klasse3 Interne Klasse4 Öffentliche Klasse2

.NET als Komponenteninfrastruktur, B. Tsarev 7 Architektur von.NET Framework.NET Programmiersprachen Ein gemeinsames Typsystem für alle.NET Sprachen Umfangreiche Klassen-Bibliothek Laufzeitumgebung

.NET als Komponenteninfrastruktur, B. Tsarev 8 Common Language Infrastructure - CLI C# VB.NET C++ J#... Compiler C# Compiler VB.NET Compiler C++ Intermediate Language + Metadata Loader.NET Assembly IL JIT-Compiler Execution CLI ist ECMA und ISO-Standard! Virtual Execution System

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 10 Class2 Method1 (IL) Method2 (IL) JIT-Übersetzung Class Loader Class2 Method1 (native) Method2 (IL)Stub compile Stub insert stubs load Class1 Method1 (native) call JIT-Compiler call

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 12 Interoperabilität mit.NET - Beispiel

.NET als Komponenteninfrastruktur, B. Tsarev 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“

.NET als Komponenteninfrastruktur, B. Tsarev 14 Assemblies – Übersicht Was ist eine Assembly? Aufbau einer Assembly Erstellung von Assemblies Installation von Assemblies

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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) IL-Code Metadata.NET Module

.NET als Komponenteninfrastruktur, B. Tsarev 20 Verteilung von Assemblies auf Dateien IL-Code Metadata.DLL oder.EXE Manifest Einzeldatei-Assembly Resources Mehrdatei-Assembly.DLL oder.EXE Manifest Resources IL-Code Metadata.netmodule IL-Code Metadata.DLL oder.EXE Manifest Ressourcen IL-Code Metadata.netmodule Resources IL-Code Metadata.netmodule Mehrdatei-Assembly

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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.

.NET als Komponenteninfrastruktur, B. Tsarev 23 createAccount (AccountNum:string) BankServer Erstellung von Assemblies Beispiel „Banking“ – Klassendiagramm deleteAccount (AccountNum:string) checkAccountBalance (AccountNum: string) : double payoutAccount (AccountNum:string, Amount:double) payinAccount (AccountNum:string, Amount:double) BankClient readonly AccountNum : string Account AccountBalance : double takeMoney (Amount : double) putMoney (Amount : double) 1* static Main() Demo Quellcode

.NET als Komponenteninfrastruktur, B. Tsarev 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) > 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 25 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 26 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 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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)

.NET als Komponenteninfrastruktur, B. Tsarev 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:... Beispiel:

.NET als Komponenteninfrastruktur, B. Tsarev 32 Digitale Signierung von Assemblies Öffentliche Assemblies werden digital signiert CLR überprüft die Echtheit der Assemblies

.NET als Komponenteninfrastruktur, B. Tsarev 33 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 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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 -> Administrative Tools -> ->.NET Configuration 1.1

.NET als Komponenteninfrastruktur, B. Tsarev 38.NET als Komponenteninfrastruktur Eine Komponenteninfrastruktur besteht aus APIs, Entwicklungsumgebung, Laufzeitumgebung und Administrationtools zu Entwicklung, Erstellung, Installation, Administration und Ausführung von Komponenten Visual Studio.NET CLR.NET Configuration ?.NET Framework Class Library

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 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.

.NET als Komponenteninfrastruktur, B. Tsarev 41 Class vs. Component vs. Control Empfehlungen bei der Entwicklung von Komponenten [MSDN/Library] Situation (Eine Klasse, die...)Empfehlung externe Ressourcen (Datenbanken etc.) nutztimplementiere IDisposable durch visuellen Designer manipulierbarimplementiere 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 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

.NET als Komponenteninfrastruktur, B. Tsarev 43 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 Beispiel: InfoUserControl und MyTimer Demo!

.NET als Komponenteninfrastruktur, B. Tsarev 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 - Demo!

.NET als Komponenteninfrastruktur, B. Tsarev 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

.NET als Komponenteninfrastruktur, B. Tsarev 46.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 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)

.NET als Komponenteninfrastruktur, B. Tsarev 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) {... }... }

.NET als Komponenteninfrastruktur, B. Tsarev 49 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 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

.NET als Komponenteninfrastruktur, B. Tsarev 51 Quellen (1) J. Löwy, Programming.NET Components, O‘Reilly, 2003 A. Kühnel, Visual C#, Galileo Computing, ( ) ( ) ( ) Henrik Zellmer,.NET Versioning and Deployment, DISCOURSE Verteile Systeme mit.NET, 2003, berlin.de/~mwerner/ discourse/documents /BlockLV03/zellmer- deploy.pdf ( ) J. Heinzelreiter,.Net Assemblies, 2002, hagenberg.at/staff/jheinzel/PRG6/Docs/Assemblies.pdf ( )

.NET als Komponenteninfrastruktur, B. Tsarev 52 Quellen (2) J. Heinzelreiter,.Net Architektur, 2002, hagenberg.at/staff/jheinzel/PRG6/Docs/DotNet-Architektur.pdf ( ) J. Löwy, COM and.NET Component Services, O‘Reilly, 2001 J. Löwy,.NET Enterprise Services, downloads/juvallowy.pdf, ( ) Mary Kirtland (Microsoft), COM+ Internals, ( )

.NET als Komponenteninfrastruktur, B. Tsarev 53 Danke für die Aufmerksamkeit!