Discussion:
[omniORB] CORBA versus Sockets
Meding, Olaf
2006-12-14 03:56:38 UTC
Permalink
We are having an internal debate over the use of CORBA versus sockets.
Please no flames here.

All packets are encoded in XML. So the advantages of IDL go away.
Socket are available for most platforms / software development tools.
So no extra points for CORBA here either. And we do not need any
failover type features.

In our environment there will be a single server written in C# running
on MS Windows XP. However, there are multiple clients (written in C#
and Python) all connecting to the same server. The server and the
clients sometimes run on the same PC and other times on different PCs.

The problem is that people know and are comfortable with sockets. Given
the above, are there still good arguments to be made in favor of CORBA?

Many thanks for you insights.

Olaf
Sander Steffann
2006-12-14 06:21:24 UTC
Permalink
Hi,
Post by Meding, Olaf
All packets are encoded in XML. So the advantages of IDL go away.
Socket are available for most platforms / software development tools.
So no extra points for CORBA here either. And we do not need any
failover type features.
In our environment there will be a single server written in C# running
on MS Windows XP. However, there are multiple clients (written in C#
and Python) all connecting to the same server. The server and the
clients sometimes run on the same PC and other times on different PCs.
The problem is that people know and are comfortable with sockets. Given
the above, are there still good arguments to be made in favor of CORBA?
Given that all your data structures are XML text, I don't think that CORBA
will be a lot of help for you. The things you will have to do yourself if
you use sockets are:
- Server thread management
- Connection management
- Exception/error signaling (but you probably do this in XML already)

It's probably easier to solve these issues with sockets than to educate the
developers about CORBA.

I personally like to use CORBA because of the strict interface definitions
in IDL, and because of the flexibility (combining different platforms and
languages). If you don't specify the interface in IDL but put everything in
XML (which can also be used across platforms/languages), then I don't see
the point anymore.

- Sander
OKeeffe, Michael K
2006-12-14 22:46:26 UTC
Permalink
Hi,
Post by Meding, Olaf
All packets are encoded in XML. So the advantages of IDL go away.
Not necessarily, see below.
Post by Meding, Olaf
Socket are available for most platforms / software development tools.
True, although it sounds like your platform is MS, anyway, so doesn't
seem to be a requirement (cross-platform).
Post by Meding, Olaf
So no extra points for CORBA here either. And we do not need any
failover type features.
From what I've read, failover is best at a lower level anyway.
Post by Meding, Olaf
In our environment there will be a single server written in
C# running
Post by Meding, Olaf
on MS Windows XP. However, there are multiple clients (written in C#
and Python) all connecting to the same server. The server and the
clients sometimes run on the same PC and other times on
different PCs.
I assume your Python clients are the reason you're considering sockets
or CORBA, otherwise why wouldn't you want to use WCP or whatever the
"Microsoft Way" is, i.e. whatever their calling their latest iteration
of COM/DCOM/? I think there's IronPython for .NET. But anyway..
Post by Meding, Olaf
The problem is that people know and are comfortable with
sockets. Given
Post by Meding, Olaf
the above, are there still good arguments to be made in
favor of CORBA?
I'd say that's your best point, although if you're using CORBA at a
simple level, not getting too fancy, there's not much to it. That's the
whole point - it handles the low-level details, which you'll need to
code if you're using sockets. But sounds like that's not an issue.
Given that all your data structures are XML text, I don't
think that CORBA
will be a lot of help for you. The things you will have to do
yourself if
- Server thread management
- Connection management
- Exception/error signaling (but you probably do this in XML already)
- I might also add that you'll need some sort of locator capability -
like the Naming Service.
It's probably easier to solve these issues with sockets than
to educate the
developers about CORBA.
Maybe - but if they find themselves doing an awful lot of coding, it's
time to rethink. As an example, if I need a simple logging capability,
then I might be able to implement that with 1 or 2 classes/programs.
Fine. But if I start adding features for other requirements -
performance, log to these devices, logging customized for each program,
etc etc, then you should think about log4cpp or something.

But perhaps best to keep it simple at first, i.e. use sockets, see how
it works.
I personally like to use CORBA because of the strict interface
definitions
in IDL, and because of the flexibility (combining different
platforms and
languages). If you don't specify the interface in IDL but put
everything in
XML (which can also be used across platforms/languages), then
I don't see
the point anymore.
There's value for some sort of interface definition even if you are
using XML. For example, web services use XML, but store the "contract"
in WSDL. Steve Vinoski (naturally) is a big proponent of separating the
implementation from the interface.

You can search his blog for WSDL and or IDL for many relevant articles,
also see the first paragraph on pg. 90 - "XML documents are not, by
default, fully self-describing"
http://www.iona.com/hyplan/vinoski/pdfs/IEEE-Just_A_Mapping_Problem.pdf
Duncan Grisby
2006-12-14 22:48:58 UTC
Permalink
On Thursday 14 December, "Sander Steffann" wrote:

[...]
Post by Sander Steffann
Post by Meding, Olaf
The problem is that people know and are comfortable with sockets. Given
the above, are there still good arguments to be made in favor of CORBA?
Given that all your data structures are XML text, I don't think that
CORBA will be a lot of help for you. The things you will have to do
- Server thread management
- Connection management
These are not necessarily trivial things to implement. It depends a lot
on what the requirements are, and how scalable it needs to be. If the
requirements are simple, it's probably easier to roll your own. If you
need complex thread and connection management, it may well be better to
make use of an existing framework like a good CORBA ORB.

Certainly, if it's already decided that your components pass around XML
messages for everything, the benefits of using something like CORBA are
quite marginal.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Continue reading on narkive:
Search results for '[omniORB] CORBA versus Sockets' (Questions and Answers)
10
replies
Java Vs. C#?
started 2007-01-04 01:45:54 UTC
programming & design
Loading...