This post originated from an RSS feed registered with Java Buzz
by Weiqi Gao.
Original Post: C#/C++ Interoperability via IIOP.NET and TAO
Feed Title: Weiqi Gao's Weblog
Feed URL: http://www.weiqigao.com/blog/rss.xml
Feed Description: Sharing My Experience...
I've mentioned the OCI internal Java lunches on this blog before. Well, today we have our internal C++ lunch. And this is my experiment blogging the event live.
He's developing a GUI and the decision is made to do it in .NET. And he has requirement to talk to TAO/C++ CORBA servers.
He looked at:
IIOP.NET
Borland Janeva
J-Integra Espresso
Remoting.CORBA
And IIOP.NET was the logical choice:
Open Source, LGPL
Maintained by Elca Informatique SA
Supports lots of ORBs
Worked with .NET 1.1, .NET 2.0 and Mono
Nice presentation on their website.
Dan jumped to the presentation on the IIOP.NET website, and started the technical part of the presentation.
IIOP.NET Channel
IDLTOCLSCompiler
Steve asked about any mapping difficulties, and Dan said no, but we are using simple types and sequences and structs on the project.
Kevin asked if they do IIOP to SOAP conversion. Dan have never came across that.
IIOP.NET uses the .NET Remoting's Channel interface.
Now Dan's throwing class names on the screen. Things like Ch.Elca.Iiop.Services.RmiIiopInit, Ch.Elca.Iiop.Idl.CustomMapperRegistry.
You can get to CORBA Naming service from IIOP.NET.
Phil asked if the naming service access code is the result of IIOP.NET's mapping of the OMG's naming service IDL. The answer is yes.
The CLSToIDLGenerator can generate IDL interfaces for your existing .NET Remoting classes so that foreign applications can talk to them via CORBA.
The IDLToCLSCompiler turns IDLs to .NET assemblies. Dan mentions that if you are using value types, you have to something special.
Phil asked if IIOP.NET support dynamic CORBA. The answer is that we haven't used it.
Dan then showed some examples for:
.NET client, .NET server
.NET client, .NET server with Naming Service
TAO/C++ client, .NET server
TAO/C++ client, .NET server with Naming Service
.NET client, TAO/C++ server with Naming Service
People are commenting that the C# code is more like RMI code rather than CORBA code. For example, it is not apparent when the event loop (or any thread) is started to service the CORBA object.
Dan closed the talk by saying that he likes .NET 2.0 and Visual Studio .NET 2005. It contains many improvements over .NET 1.1 and Visual Studio .NET 2003. Kevin mentioned that VC++8 is the best Purify you can buy. Just running our code VC++8 uncovered a number of bugs in our code.
Dan closed the talk for real by providing a few tips: