Interoperabilität Microsoft .NET und COM+ Dariusz Parys

Slides:



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

der Universität Oldenburg
der Universität Oldenburg
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Office XP und XML Web Services Dariusz Parys.NET Strategy & Developer Group
Deployment und Versioning von .NET Applikationen
Migration und Nutzung von vorhandenem Code Interoperability.
Kapselung , toString , equals , Java API
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
.NET Nico Orschel Microsoft Student Partner, TU-Ilmenau
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Introducing the .NET Framework
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
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.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Presenter: Daniel Walzenbach Technologieberater
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
SQL Server 2005 CLR-Integration
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
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:
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Publikation auf Knopfdruck Judith Riegelnig Michael Grüebler 19. Oktober 2010 / Statistiktage Neuenburg.
EPROG Tutorium #4 Philipp Effenberger
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Es war einmal ein Haus
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
8.4 Microsoft.NET Framework =  CLR – Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung.
C++ FÜR cOMPUTERSPIELENTWICKLER
9.5 Microsoft .NET Architektur: objektorientiert/Fernaufrufe (8.1.6 )
Implementieren von Klassen
 Präsentation transkript:

Interoperabilität Microsoft .NET und COM+ Dariusz Parys MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 1 Interoperabilität Microsoft .NET und COM+ Dariusz Parys Developer Group Microsoft GmbH Email: dparys@microsoft.com

Warum Interoperabilität? Integration mit COM Nutzung von COM+ Diensten Agenda MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 2 Warum Interoperabilität? Integration mit COM Nutzung von COM+ Diensten API Aufrufe in native Win32 DLL’s Microsoft .NET und COM+

Warum Interoperabilität? MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 3 Sicherung der Investitionen Entwicklungskosten Stabilität der Software Bestehende Funktionalität nutzen und diese Erweitern Zeitgewinn Mehrwert durch neue Möglichkeiten Langsames Ersetzen der Software Migration: Schritt für Schritt Manchmal hat man keine andere Wahl Microsoft .NET und COM+

Unterschiede .NET - COM .NET Framework Typen Standard Metadaten MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 4 .NET Framework Typen Standard Metadaten Interface basierend New operator Cast operator Exceptions Managed Object Lifetime Strong Names COM / DLL Modell Binärer Standard Typbibliotheken Objekt basierend CoCreateInstance QueryInterface HResults Referenzzähler GUIDS Microsoft .NET und COM+

Interop Möglichkeiten MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 5 COM Interop COM Objekte aus der .NET Welt nutzen .NET Objekte aus der COM Welt nutzen COM+ Dienste in .NET nutzen Platform Invoke Service (PInvoke) Native Win32 API Aufrufe aus .NET heraus Microsoft .NET und COM+

COM Objekte aus .NET nutzen Microsoft .NET und COM+

Referenzieren eines Interop Assemblies Drei Schritte zu COM MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 7 Referenzieren eines Interop Assemblies Instanzieren des Typen mit „new“ Nutzung der Funktionalität Microsoft .NET und COM+

Was ist ein Interop Assembly? MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 8 Enthält keinerlei ausführbaren Code Nur Typendefinitionen die im COM Objekt implementiert sind Grundlage für den RCW zur Laufzeit um die Typen zu binden Grundlage für das Marshaling der Daten zwischen beiden Welten Microsoft .NET und COM+

Woher bekomme ich ein Interop Assembly? MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 9 Vorzugsweise vom „Hersteller“ PIA (Primary Interop Assembly) In VS .NET durch „Add References...“ Mit Hilfe des Tools TLBIMP.EXE Microsoft .NET und COM+

Interop Assemblies müssen zur Laufzeit verfügbar sein MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 10 Interop Assemblies müssen zur Laufzeit verfügbar sein Der Assembly Loader muß diese finden Installation ins Applikationsverzeichnis Einfaches XCOPY Oder Installation in den Global Assembly Cache Strong Name für Assembly (SN) Installation mit GACUTIL Microsoft .NET und COM+

? COM Objekt aus .NET Traced Reference Reference Counted Runtime Managed Unmanaged Traced Reference Reference Counted Client COM Objekt ? Runtime Callable Wrapper IUnknown IFoo Microsoft .NET und COM+

Runtime Callable Wrapper MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 12 Proxy Objekt der Runtime Pro COM Objekt Instanz ein RCW Handhabt das Marshaling der Daten Verbirgt COM spezifische Aufrufe Bestimmte Interfaces wie IUnknown, IDispatch, etc… Stellt jedoch Interfaces des Objektes .NET zur Verfügung Microsoft .NET und COM+

RCW bietet Transparenz MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 13 Kein Referenzzähler Keine GUID Keine HRESULT, Fehler werden als Exception geworfen Kein QueryInterface, einfach ein cast auf das entsprechende Interface InvalidCastException <-> E_NOINTERFACE Microsoft .NET und COM+

Demo COM Objekt in .NET nutzen Microsoft .NET und COM+

Ziel von COM Interop ist es existierende Funktionalität zu nutzen Denkanstöße MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 15 Ziel von COM Interop ist es existierende Funktionalität zu nutzen Kein Ersatz für richtige “managed” Objekte Keine Konstruktoren Keine Vererbung Kein Überladen von Funmktionen Keine statischen Funktionen Überlegung RCW’s zu wrappen Microsoft .NET und COM+

.NET Objekte aus COM nutzen Microsoft .NET und COM+

Erstellen einer Typenbibliothek Instanzieren des Objektes Drei Schritte zu .NET Erstellen einer Typenbibliothek Instanzieren des Objektes CoCreateInstance Oder “new” in VB6 Nutzung der Funktionalität Microsoft .NET und COM+

Wie erstelle ich die Typenbibliothek? Mit Visual Studio .NET Einstellung in den Projektproperties “Register for COM Interoperability” Manuell Mit TLBEXP.EXE und REGASM.EXE Microsoft .NET und COM+

? COM Objekt aus .NET Traced Reference Reference Counted COM Unmanaged Managed Reference Counted Traced Reference Client .NET Objekt ? COM Callable Wrapper IUnknown IFoo Microsoft .NET und COM+

Proxy für COM Clients um auf Managed Code zuzugreifen COM Callable Wrapper MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 20 Proxy für COM Clients um auf Managed Code zuzugreifen Pro .NET Objekt Instanz ein CCW Handhabt das Marshaling der Daten Simuliert COM Interfaces wie IUnknown, IDispatch, etc… Verwendung von Klasseninterface per Attribute Microsoft .NET und COM+

Design für Interoperabilität MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 21 Einschränkungen Nur öffentlich Typen sind Sichtbar Nur öffentliche Funktionen/Props sind sichtbar Shared/Static Member sind nicht erreichbar Überladene Funktionen haben andere Namen Benötigen einen public default Konstruktor Tips Funktionalität durch Interfaces verfügbar machen Custom Attributes um Marshaling zu beeinflußen Microsoft .NET und COM+

Nützliche Informationen (1/2) MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 22 Klasseninterface kann automatisch erzeugt werden In VB: Benutzung des ComClass Attributes In C#: Benutzung des ClassInterfaceType Attributes GUID’s werden beim Export automatisch erstellt Basierend auf Assembly und Typenbezeichnung Basierend auf kompletter Interfacebeschreibung Microsoft .NET und COM+

Nützliche Informationen (2/2) Assembly muß zur Laufzeit aufgelöst werden können Wird nicht über InProcServer32 aufgelöst Assemblies liegen im Applikationsverzeichnis Oder sind im Global Assembly Cache installiert Microsoft .NET und COM+

Interop Attribute MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 24 Mit Interop Attributen* kann man beim Export die Umsetzung auf COM Typen Definitionen beeinflußen. Dies gilt für Typen, Methoden, Eigenschaften, Felder oder Parameter. Using System.Runtime.InteropServices [Guid(…), InterfaceType(ComInterfaceType.IsIUnknown)] Interface IFooBar { [DispId(64)] int Format( [MarshalAs(LPStr)] String s) } * Attribute werden nicht nur für Interop genutzt Microsoft .NET und COM+

Parameter Umsetzung COM Method Signature MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 25 COM Method Signature HRESULT FormatDate(BSTR s, DATE d, [out, retval] int *retval); int FormatDate(String s, DateTime d); .NET Method Signature Microsoft .NET und COM+

Datentypen Umwandlung MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 26 DATE System.DateTime BSTR System.String Safearray( int ) Int[] OLECOLOR System.Drawing.Color CURRENCY System.Decimal Variant System.Object Interface Foo Coclass Foo Class Foo Microsoft .NET und COM+

Blittable Datentypen werden direkt übergeben Mehr Marshaling… MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 27 Blittable Datentypen werden direkt übergeben z.B. Byte, Short, Integer, Long, Single, Double Einige Typen brauchen besondere Handhabung z.B. BOOLEAN: 2 oder 4 byte value, Wert True 1 oder -1 Microsoft .NET und COM+

System.Byte, System.SByte System.Int16, System.UInt16 Blittable Typen System.Byte, System.SByte System.Int16, System.UInt16 System.Int32, System.UInt32 System.Int64 System.IntPtr, System.UIntPtr Microsoft .NET und COM+

Nicht Blittable Typen System.Array C-Style Array oder SafeArray System.Boolean 1, 2 oder 4 Byte mit 1 oder -1 System.Char Unicode oder Ansi System.Class Klasseninterface System.Object Variant oder Klasseninterface System.String Nullterminierter String oder BSTR System.ValueType Struktur Microsoft .NET und COM+

Demo Nutzung von .NET Objekten aus COM Microsoft .NET und COM+

COM+ Dienste in .NET Microsoft .NET und COM+

Namespace: System.EnterpriseServices Was ist zu tun? MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 32 Namespace: System.EnterpriseServices Beinhaltet eine Vielzahl Attribute und Objekte Eigene Klasse ableiten von ServicedComponent Eventuell überschreiben der COM+ spezifischen Methoden Mit Attributen die entsprechenden Services definieren Microsoft .NET und COM+

Beispiel 1: ObjectPooling MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 33 Namespace Beispiel1 { [ ObjectPooling( 5, 20 ) ] public class PooledKlasse : ServicedComponent { public PooledKlasse() {} // Überschreiben von CanBePooled protected override bool CanBePooled() { return true; // Notwendig damit Reused wird! } } } Microsoft .NET und COM+

Beispiel 2: Transaktionen MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 34 Using System.EnterpriseServices; [ assembly: ApplicationName( “MeineApplikation” ) ] [ assembly: ApplicationActivation( ActivationOption.Library ) ] Namespace Beispiel2 { [ Transaction( TransactionOption.Required ) ] public class TransaktionsKlasse : ServicedComponent { public TransaktionsKlasse() {} } } Microsoft .NET und COM+

Demo Object Pooling mit .NET Microsoft .NET und COM+

In Win32 DLL’s reinrufen Microsoft .NET und COM+

Platform Invoke (P/Invoke) MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 37 Zugriff auf statische Einstiegspunkte von nativen DLL’s Ähnlich: Declare statement aus VB 6 Load library / GetProcAddress Methoden Definitionen müssen mit Custom Attributes zur Verfügung gestellt werden Benutzt ebenfalls den COM Interop Marshaling Service Microsoft .NET und COM+

Common Language Runtime Platform Invoke MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 38 Common Language Runtime Unmanaged DLL Object Client Microsoft .NET und COM+

Platform Invoke Beispiel #1 MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 39 public class Win32API { [DllImport(“User32.dll”,EntryPoint=“MessageBox”)] public static extern Boolean MsgBox(…); } Microsoft .NET und COM+

Platform Invoke Beispiel #2 MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 40 [StructLayout(LayoutKind.Sequential)] Public struct OSInfo ( uint MajorVersion; uint MinorVersion; String VersionString; } public class Win32API { [DllImport(“User32.dll”)] public static extern Boolean GetVersionEx(OSInfo osi); Microsoft .NET und COM+

String vs. Stringbuilder MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 41 System.String Strings sind nicht veränderbar System.Text.StringBuilder Aufruf von API’s die einen Buffer erwarten, die StringBuilder Klasse einsetzen [C#] uint sz = 256; StringBuilder sb = new StringBuilder( ( int ) sz ); GetUserName( sb, ref sz ); Microsoft .NET und COM+

Demo Aufrufe mit P/Invoke Microsoft .NET und COM+

Wie sieht es mit Performance aus? MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 43 Umwandlungen haben Overhead Ca. 30 Instruktionen pro Aufruf Daten Marshaling verursacht ebenfalls Overhead Abhängig von Typ und Größe Blittable Typen direkt Gezielt nutzen Nur aufrufen wenn es sein muß Alternativen in Betracht ziehen Kann man den Code vielleicht doch migrieren? Microsoft .NET und COM+

Interop kann bei der Migration behilflich sein Zusammenfassung MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 44 Interop Services ermöglichen Nutzung bestehender und zukünftiger Funktionalität in beiden Welten Interop kann bei der Migration behilflich sein Nutzung der COM+ basierten Dienste für .NET Objekte Microsoft .NET und COM+

Microsoft .NET / COM Migration and Interoperability Links und Ressourcen So bringen Sie COM und .NET in Einklang http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=500418 Microsoft .NET / COM Migration and Interoperability http://msdn.microsoft.com/library/en-us/dnbda/html/cominterop.asp Microsoft .NET und COM+

Uff... Fragen!? Microsoft .NET und COM+ MSDN TechTalk – Februar 2002 Interoperabilität – Microsoft .NET und COM+ 46 Uff... Microsoft .NET und COM+