G.Net G.2 G.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Neue Anwendungsplattform für alle Microsoft-Betriebssysteme

Ähnliche Dokumente
G.Net G.2 G.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Neue Anwendungsplattform für alle Microsoft-Betriebssysteme

F.Net F.2 F.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Anwendungsplattform für alle Microsoft-Betriebssysteme

F.Net F.2 F.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Neue Anwendungsplattform für alle Microsoft-Betriebssysteme

3.1 COM (2) 3.2 DCOM

E.1 Objekt-Serialisierung

.NET Remoting. Softwareentwicklung mit MS.NET und C# Lokaler Proxy. Proxy. Remoting. .NET Remoting

Ein einfacher Server. .NET Remoting. Klassentypen

Client/Server-Programmierung

7 Assemblies. Anwendungen (.exe) bzw. Anwendungskomponenten (.dll) für.net Portable Execution (PE) Files

Netzprogrammierung: Microsoft.NET Remoting

8.4 Microsoft.NET. .NET Framework = 1 CLR Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung von managed cod

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

Einführung: Verteilte Systeme - Remote Method Invocation -

Microsoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber

Vorlesung AFCW, Microsoft.NET Wintersemester 2002/03. Völlig neue Systemstruktur als Antwort auf Java

Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger

C.1 Objekt-Serialisierung

Software Reuse Sommer Einfache, aus 3 Komponenten bestehende, Anwendung Was ist eine Komponente?

Konzepte von Betriebssystem-Komponenten Middleware:.NET Remoting

unterschiedlichen Sprachen

Kommunikation in verteilten Anwendungen

Mircosoft DotNot. Verteilte Anwendungen the microsoft (cc) way. Verteilte Anwendungen (04/05) T.S. (JD)

8.1.6.NET Remoting. C# ( Csharp, Cis ) : Referenzsprache für.net,

Weitere aus Schnittstelle generierte Dateien (Java-Mapping)

Internetanwendungstechnik (Übung)

Janeva:.NET meets J2EE

.NET als alternative Middleware-Technologie. .NET als alternative

9.5 Microsoft.NET

Remote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Kommunikation. Björn und Georg

B.1.NET-Anwendungen bauen und binden

Einführung in C# Teil 1. Matthias Nübling

L.1.NET-Anwendungen bauen und binden

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method

7.1.5 Java RMI Remote Method Invocation ( (

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

D.1.NET-Anwendungen bauen und binden

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators. BindingIterator. next_one next_n destroy

Überblick. Verteilte Systeme - 4. Übung. VS-Übung. Dynamische Proxies Stubs & Skeletons Dynamische Proxies als Stubs. Tobias Distler, Michael Gernoth

Properties und Proxies

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010

Web Services. Web Services in the News. Vision: Web of Services. Learning for Results. DECUS Symposium 2002, Vortrag 1K07,

.NET Framework. 3. Das.NET Framework

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications

Enterprise JavaBeans Überblick

6 Zusammenschaltung von Web-Services

Java RMI Remote Method Invocation

Verteilte Systeme Übung

Vergleich.Net und COM

B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Session Beans & Servlet Integration. Ralf Gitzel

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Konfiguration. Arthur Zaczek. Mar 2015

Nomadic computing mobile Geräte dynamische Dienstnutzung einfacher Zugang zu Geräten Gerät bietet Dienste an allgemeine Dienstnutzung

Seminar Ausgewählte Komponenten von Betriebssystemen. IDL4 Compiler

Zwischenbericht Großer Beleg

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Microsoft.NET Überblick. Matthias Nübling

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Enterprise JavaBeans Überblick

Microsoft.NET. InfoPoint 8. Juni 2005 Stefan Bühler

DCOM und.net. B. Sc. Tobias Buchloh. Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Informatik Universität Hannover

Inhalt. Einführung RFC-Funktionsbausteine in ABAP Funktionsbausteine zum Lesen Aufruf per srfc 108

Für objektbasiertes Programmieren ist keine objektbasierte Programmiersprache erforderlich!

J..NET. J.1 Überblick. Common Language Runtime Einheitliche Klassenbibliothek Visua l Studio.NET

Einführung in Microsoft.NET

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation Teil 3 RMI over IIOP

Typsystem Plattform- und Sprachenunabhängigkeit in.net

8a. Exkurs.NET. 8a.1.NET Architektur

Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr. Spring & Hibernate. Eine praxisbezogene Einführung HANSER

.NET Technologie .NET

Gliederung. .NET Vision. Was ist Microsoft.NET? Microsoft.NET Überblick. Was ist Microsoft.NET? Überblick wichtiger.net-technologien.

Praktikum Verteilte Anwendungen

Seminar Softwarearchitekturen SoSe Martin Schrage

Enterprise JavaBeans Überblick

Inhaltsverzeichnis. Zusammenfassung CORBA

- dynamisches Laden -

AVID-Übung 5. Asynchronous.NET Remoting. 15. Juli Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX

Prof. W. Henrich Seite 1

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Server-Management mit JMX

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

C.38 C.40 C Socket-Factories. 5.2 Server-Seite. 6.1 Interaktionsmuster. 6 Beispiel: White-Board. generisches Skeleton

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1.

Transkript:

1 Überblick G.Net Neue Anwendungsplattform für alle Microsoft-Betriebssysteme inspiriert von der Java-Entwicklung Sprachunabhängigkeit dynamisches Code-Laden verteilte Anwendungen Integration der XML-Technologie Web-Services, XSLT... Wesentliche Teile sind standardisiert: ECMA-Standard Implementierungen Microsoft.Net Framework Open-Source-Implementierung Mono G.1 G.2 2 Common-Language-Runtime Unterstützung verschiedenster Sprachen C#, J#, VisualBasic,... Compiler übersetzt jeweils in Zwischensprache MSIL (Microsoft Intermediate Language) abstrakte Stackmaschine Common-Language-Runtime-Environment Ausführung von MSIL-Programmen Loader (JIT-)Compiler und Verifier MSIL-Programme werden nie interpretiert (bei Microsoft) Übersetzung vor oder während der Ausführung Sicherheitsüberprüfungen Multithreading 2 Common-Language-Runtime (2) Managed-Code MSIL-Programm Unmanaged-Code Brücke zu anderen Code-Teilen Standard-DLLs COM+-Aufrufe Managed-Data Garbage-Collection der Datenbereiche im Managed-Code Unmanaged-Data manuell verwaltete Datenbereiche im Managed-Code mit malloc/free verwaltet G.3 G.4

2 Common-Language-Runtime (3) 2.1 Assembly Sprachunabhängige Bibliotheken in allen Sprachen stehen die gleichen Bibliotheken zur Verfügung keine sprachspezifischen Bibliotheken vorgesehen (z.b. Java, C++) Ausschnitt System System.IO System.Net System.Collections System.Reflection System.Threading System.Xml System.Xml.XSlt System.Xml.XPath System.Data System.Data.ADO System.Data.SQL System.Drawing System.Drawing.Text System.Drawing.Drawing2D System.Web.Services System.Web.Services.Discovery System.Web.Security System.Web.UI System.Web.UI.WebControls.CheckBoxList System.Windows.Forms System.Windows.Forms.RadioButton System.Runtime.Remoting System.Runtime.Serialization Container für Module äquivalent zu einer Menge von Java JAR-Files ersetzt DLL- und EXE-Files enthält: Manifest (Import-, Export- und Sicherheitsanweisungen, Verweise auf andere Module) Program-Executables (MSIL Code-Bereiche) Informationen für Reflection mit Versionskennung versehen im gleichen System mehrere Versionen der gleichen Assembly möglich Modulweise dynamisch ladbar von Platte über das Internet G.5 G.6 2.1 Assembly (2) 3.Net-Remoting Laden einer Assembly dynamisch bei Bedarf Application-Domain (Anwendungsdomäne) abgegrenzter Bereich innerhalb der CLR für eine Anwendung Laden in eine Application-Domain (je Domain verschiedene Version einer Assembly möglich) Prozess kann neue Application-Domains erzeugen mehrere Application-Domains pro Prozess möglich Sicherheit durch CLR Verifier gewährleistet Interaktionen zwischen Application-Domains erfordern spezielle Aufrufbehandlung Marshalling der Parameter und Ergebnisse Framework für Kommunikation zwischen (entfernten) Kontexten und Application-Domains Marshalling Marshal-by-Value Klasse wird als serialisierbar markiert (Attribut: [Serializable]) Marshal-by-Reference Klasse muss von MarshalByRefObject erben G.7 G.8

3.Net-Remoting (2) Serverobjekte Client-activated object vom Client erzeugte Objekte Well-known object bereits instanziiert und aufrufbereit Server-activated object Objekt entsteht erst beim Aufruf Singleton-Modus: ein Objekt behandelt alle Aufrufe SingleCall-Modus: ein Objekt entsteht pro Aufruf Zugang zu entfernten Objekten Aufruf eines Activators mit Objektbezeichnung (z.b. URL) es entsteht ein Proxy 3.1 Architektur von.net-remoting Aufrufpfad Client Umwandlung in Message-Objekt transparenter Aufruf Transparent Proxy Real Proxy Channel Remoting-Grenze Stack- Builder entferntes Objekt Umwandlung in Aufruf Übertragung G.9 G.10 3.1 Architektur von.net-remoting (2) 3.1 Architektur von.net-remoting (3) Transparent Proxy automatisch generiert aus Schnittstelle wandelt Aufruf in ein Message-Objekt um (vgl. DII von CORBA) Real Proxy Ansatzpunkt für kontextabhängige Erweiterungen Default: Weitergabe des Message-Objekts an Channel Beispiel für Channel Transparent Proxy Real Proxy Remoting-Grenze Stack- Builder Channel besteht auf jeder Seite aus Sink-Objekten Sink-Kette pro Kontext beeinflussbar Sinks bestimmen Protokoll, Übertragungsformat und sonstige Seiteneffekte Formatter Sink Transport Sink Transport Sink Formatter Sink Channel G.11 G.12

3.1 Architektur von.net-remoting (4) Einsatz verschiedener RPC-Protokolle verschiedene Formatter-Sinks SOAP für Web-Services Formatter für.net-remoting-protocol (Formatter für GIOP) Einsatz verschiedener Transportprotokolle verschiedene Transport-Sinks TCP/IP für.net-remoting-protocol (oder für IIOP) HTTP für Web-Services Weitere Sinks in der Kette z.b. für Transaktionen, Gruppenkommunikation etc. 3.2 Objektreferenz Darstellung von entfernten Objektreferenzen ObjRef -Objekt enthält Typbezeichner für entferntes Objekt Assembly-Informationen Basisklassen (und Schnittstellen) Objekt-URL zur Aktivierung Channel-Informationen (welche Sinks müssen enthalten sein) ObjRef-Objekt wird By-value übergeben daraus kann erzeugt werden: Proxies (per Reflection aus Typbezeichner) Sink-Objekte aus Channel-Informationen und Kontext-Properties G.13 G.14 4 Erzeugung entfernter Objekte Beispiel (in C#): Hello-Objekt class Hello : MarshallByRefObject { public string sayhello() { return Hallo ; } } Zwei unterscheidbare Vorgehensweisen Objekterzeugung durch Server: Server-activated objects Objekterzeugung durch Client: Client-activated objects 4 Erzeugung entfernter Objekte (2) Server-activated objects (SAO) Erzeugung der Objektinstanz (bei Bedarf) im Server alternative Verfahren Single-call object Singleton object Published object Client-activated objects (CAO) Client erzeugt Objekte alternative Verfahren direkte Erzeugung Erzeugung über Fabrik (Factory) G.15 G.16

4.1 Single-Call Object Eigene Objektinstanz für jeden Aufruf entspricht Stateless-Session-Bean Objektinstanz ohne speicherbaren Zustand Server-Seite Erzeugung des Channels (hier: HTTP/SOAP-Kanal) ChannelServices.RegisterChannel( new HttpChannel(4711) ); alternativ: TCP-Channel mit binärem RPC-Protokoll Registrierung des Objekttyps RemotingConfiguration.RegisterWellKnownServiceType( typeof(hello), SayHello.soap, WellKnownObjectMode.SingleCall ); 4.1 Single-Call Object (2) Client-Zugriff Ermitteln der Referenz durch Aktivierung Beispiel sayer= (Hello) Activator.GetObject( typeof(hello), http://localhost:4711/sayhello.soap ); Referenzerzeugung abhängig vom registrierten Objekttyp Lifecycle-Management automatische Erzeugung einer Instanz für jeden Aufrufe nebenläufige Aufrufe möglich Threading-Einstellung im jeweiligen Kontext G.17 G.18 4.2 Singleton Object Genau eine Objektinstanz für alle Aufrufe reiner Dienst Zustand möglich Server-Seite Erzeugung des Channels Registrierung des Objekttyps Client-Zugriff RemotingConfiguration.RegisterWellKnownServiceType( typeof(hello), SayHello.soap, WellKnownObjectMode.Singleton ); identisch zu Single-call object 4.3 Published Object Genaue eine Objektinstanz reiner Dienst (wie Singleton Object) aber: Instanz wird vorab erzeugt und registriert Server-Seite Erzeugung des Channels Erzeugung und Registrierung des Singleton Client-Zugriff Hello sayer= new Hello(); RemotingServices.Marshal( sayer, SayHello.soap ); identisch zu Singleton object G.19 G.20

4.4 Direkte Objekterzeugung Client kann beliebige Objektinstanzen eines Typs erzeugen und nutzen Server-Seite Erzeugung eines Channels Registrierung eines Typs Client-Zugriff RemotingConfiguration.ApplicationName= MySayer ; RemotingConfiguration.RegisterActivatedServiceType( typeof(hello) ); Erzeugung eines Channels Registrierung eines Client-Typs RemotingConfiguration.RegisterActivatedClientType( typeof(hello), http://localhost:4711/mysayer );... M= new Hello(); // erzeugt entferntes Objekt 4.5 Erzeugung über Fabrik Factory-Pattern (Entwurfsmuster der Fabrik) Registrierung eines Singleton (die Fabrik) Aufruf einer create()-methode an der Fabrik Erzeugung eines neuen Objekts im Server Rückgabe der Referenz an Aufrufer automatische Zuweisung einer Kommunikationsadresse durch.net-remoting G.21 G.22 4.6 Konfiguration 4.6 Konfiguration (2) Konfigurationsdatei statt explizitem Erzeugen und Registrieren XML-Datei (vgl. Deployment-descriptor) Beispiel: Singleton object im Server <configuration> <system.runtime.remoting> <application> <channels> <channel ref= http port= 4711 /> </channels> <service> Assembly <wellknown mode= Singleton type= Hello, Server objecturi= SayHello.soap /> </service> </application> </system.runtime.remoting> </configuration> G.23 Laden der Konfiguration im Server Angabe des Dateinamens Remoting.Configuration.Configure( HelloServer.exe.config ); Ähnliche Konfiguration im Client Weitere Konfigurationsmöglichkeiten Wechsel des Channels (z.b. von HTTP auf TCP) eigene Channel-Implementierungen Angabe der Implementierungsklassen für Transport- und Formatter-Sinks Angaben zum Lifecycle-Management G.24

5 Typische Assembly-Struktur Verteilter Objektzugriff erfordert: gemeinsam genutzte Typinformationen in allen beteiligten Knoten Werkzeugunterstützung Programm SoapSuds erzeugt zweite Assembly für reine Metadaten Assembly Assembly Hello Hello 5 Typische Assembly-Struktur (2) Wrapped-proxy-Ansatz SoapSuds integriert Kommunikationsadresse in Metadaten Client-Zugriff: m= new Hello(); erzeugt Objekt im Server Nonwrapped-proxy-Ansatz Client-Zugriff über Activator oder über Typ-Registrierung erste Assembly enthält vollständige Implementierung erzeugte Assembly enthält nur Metadaten für Client ohne Implmentierung G.25 G.26 6 Lebenszeitverwaltung Verwaltung über Leases Abräumen des Objekts sobald Lease abgelaufen (Garbage Collection) Default-Einstellungen Lease gültig bis 5min nach Objekterzeugung Erneuerung der Lease bis zu 2min bei jedem Aufruf 6.1 Konfiguration der Einstellungen Anwendungsabhängige Änderung der Einstellungen programmatisch: Zuweisung von Zeitspannen an gewisse Systemvariablen z.b. LifetimeServices.LeaseTime =... deklarativ: XML-Elemente in Konfigurationsdatei z.b. <lifetime leasetimeout=... /> Sponsoren registrierte Ansprechpartner bei Ablauf einer Lease.Net-Remoting kontaktiert Sponsor vor dem Löschen innerhalb von 2min (Default) muss Sponsor Verlängerung der Lease bestätigen G.27 G.28

6.1 Konfiguration der Einstellungen (2) Klassenabhängige Änderung der Einstellungen programmatisch: Methode InitializeLifetimeService() in Basisklasse MarshalByRefObject erzeugt Objekt mit Interface ILease enthält Einstellungsparameter Rückgabe eines null-zeigers möglich keine Garbage-Collection deklarativ: XML-Elemente in Konfigurationsdatei Setzen der Parameter muss in InitializeLifetimeService() erfolgen Parameter können aus Konfigurationsdatei stammen anwendungsabhängige Konfigurationsparameter (vgl. Java Properties) z.b. <appsettings> <add key= Hello_LeaseTime value=... />... 6.2 Sponsoren Automatische Befragung des Sponsors über Lease-Verlängerung gibt neue Lease-Lebenszeit zurück Lebenszeit gleich Null: Objekt wird aufgeräumt Client-seitige Sponsoren entspricht periodischem Prüfen, ob Client noch vorhanden entspricht früherem DCOM-Ansatz Achtung: Client wird kurzzeitig zum Server, Server zum Client Client muss Channel für Anfragen besitzen z.b. HTTP-Channel: Portnummer angeben oder port= 0 Achtung: Sponsoren sind Remote-Objects benötigen eigenes Lease-Management (evtl. durch sich selbst) G.29 G.30 6.2 Sponsoren (2) Server-seitige Sponsoren auf gleichem oder anderem Server-Knoten Bindung der Lebenszeit an anwendungsabhängige Bedingungen z.b. Verweigerung der Lease-Erneuerung, falls essenzielle Anwendungskomponenten abgestürzt oder unerreichbar 7 Literatur.Net I. Rammer: Advanced.Net Remoting. Apress, 2002. Articles on Microsoft Developer Network:.NET Framework Deploying & Distribution. <http://msdn.microsoft.com/netframework/using/deploying/ default.aspx> G.31 G.32