110 likes | 215 Views
ATHOS Benutzertreffen 2007. ASAM ODS mit Mircosoft C# download: http://www.highqsoft.serveftp.net Glashütten, 27.September 2007 HighQSoft GmbH, Andreas Hofmann andreas.hofmann@HighQSoft.de www.highqsoft.de / www.highqsoft.com. 27.September 2007 - 1. ASAM ODS - CORBA.
E N D
ATHOS Benutzertreffen 2007 ASAM ODS mit Mircosoft C# download: http://www.highqsoft.serveftp.net Glashütten, 27.September 2007 HighQSoft GmbH, Andreas Hofmann andreas.hofmann@HighQSoft.de www.highqsoft.de / www.highqsoft.com 27.September 2007 - 1
ASAM ODS - CORBA • ASAM schlug CORBA als plattformunabhängige • Infrastruktur vor. • Schnittstellen wurde in CORBA IDL • (Interface Definition Language) • definiert. • Den Implementierungen steht es frei andere • Protokolle zu verwenden. • AVALON ist ein CORBA Server 27. September 2007 - 2
CORBA – C# • CORBA definiert eine Infrastruktur. • Teil dieser Infrastruktur ist die Definition, wie • Daten über Netzwerk übertragen werden. • C# ist eine Programmiersprache für die von Microsoft • definierte Infrastruktur COM. • Die verwendeten Netzwerkprotokolle unterscheiden • sich zu sehr, so dass ein einfaches Mapping • nicht möglich ist. 27. September 2007 - 3
C# • Kommt im MS-Office Umfeld zum Einsatz. • Derzeit werden eher aufwändige Transportverfahren • verwendet, um die Verarbeitung von ASAM ODS • Daten zu ermöglichen. • Eine Brücke würde diese Verfahren überflüssig • machen. 27. September 2007 - 4
Lösungsansätze • Derzeit sind uns 2 Programme bekannt, mit denen eine Anbindung zu einem ASAM ODS Server realisiert wurde. • CORBA/COM Wrapper von Reinhard Kessler • Nur unvollständig, aber dennoch in Benutzung • www.ibkessler.de • IIOP.NET ist eine Dimplomarbeit an der ETH Zürich • Wird in einer Testphase bei Bosch und BASF eingesetzt. • www.iiop-net.sourceforge.net 27. September 2007 - 5
IIOP-NET • Derzeit liegt die Version 1.9.0 vor. • Ist gegen die bekannten ORB Implementierungen (SUN JDK, MICO, TAO, OmniORB, JacORB) getestet. • Ist kompatibel zu bekannten Application-Server (IBM WEBSphere, JBoss, BEA WEBLogic). • Erzeugt aus der CORBA IDL (ods511.idl) eine Bibliothek • Hauptproblem, wie bei allen CORBA Clients, ist die Initialisierung. 27. September 2007 - 6
Unterschiede zur ODS IDL • TS_Union.stringVal() – TS_Union.GetstringVal() • TS_Union.stringVal(val) – TS_Union.SetstringVal(val) • AoFactory.getType – AoFactory._getType() • AoSession.getType – AoSession._getType() • AoBaseElement.getType – AoBaseElement._getType() • Nicht jede Klasse wurde von uns explizit durchgesehen. 27. September 2007 - 7
Initialisierung // Initialize a CORBA client channel. IiopClientChannel channel1 = new IiopClientChannel(); ChannelServices.RegisterChannel(channel1, false); // Initialize the CORBA environment. CorbaInit init = CorbaInit.GetInit(); // Get the name service from host TESTSERVER:2809 NamingContext nameService = init.GetNameService("TESTSERVER", 2809); // Get the name service component TestModel/DB.ASAM-ODS NameComponent[] name = new NameComponent[] { new NameComponent("TestModel/DB", "ASAM-ODS") }; Object obj = nameService.resolve(name); AoFactory aoFactory = (AoFactory)obj; AoSession session = aoFactory.newSession("USER=andy, PASSWORD=secret"); 27. September 2007 - 8
MS-EXCEL Steuern //Start Excel and get Application object. oXL = new Excel.Application(); oXL.Visible = true; //Get a new workbook. oWB = (Excel._Workbook)(oXL.Workbooks.Add("ASAM ODS Context")); oSheet = (Excel._Worksheet)oWB.ActiveSheet; // Add the context variables to the sheet. NameIterator nameIterator = aoSession.listContext("*"); int count = nameIterator.getCount(); String key; for (int i=0; i<count; i++) { key = nameIterator.nextOne(); oSheet.Cells[1, i] = key; oSheet.Cells[2, i] = aoSession.getContextByName(key). value.u.GetstringVal(); } 27. September 2007 - 9
WARNUNG ! • Bibliothek wurde von uns nur in Grenzen getestet. Dabei wurden allerdings keine Probleme aufgedeckt. • Wie das Mapping vollzogen wird ist uns gänzlich unbekannt. Es könnte beim Zugriff auf die Massendaten zu Speicher- oder Performance-Problemen kommen. • Es gibt kleine Unterschiede zur IDL, die man aber verkraften kann. 27. September 2007 - 10