tags:

views:

727

answers:

7

Hypothetically, you have two products, one written in Java, the other in C#. You like the Java based backend (non-user visible portion), but would like to use the C# (WPF) frontend. What is the best way to go about interfacing them?

Note that the backend must be able to run on either a server or on the local machine and the frontend should be able to connect to either one.

My first thoughts were to use something like Ice, or maybe a webservice.

And Go!

Edit

Converting the code or running it in some variety of neutral VM (IKVM) is not an option.

+1  A: 

Expose a web service on the java backend and have the C# front end talk to the java web service. Look into WCF (windows communication foundation) it might make talking to a java web service alot easier.

Chris Marisic
A: 

You have some answers here

Burkhard
A: 

You could use webservices.

Or you could use IVKM to embed the java code directly into a .NET assembly.

FlySwat
A: 

I've worked on the java back-end to a C# rich-client. They communicated via web-services alright. The only problem we really had was with inheritance hierarchies, which web-services WSDLs erase.

sblundy
+1  A: 

Web services should be your default choice because there is so much work around interoperability in that space.

If you don't mind tight coupling, and must make performace based decisions, two solutions I have encountered are:

I'm sure there are others.

Michael Meadows
+2  A: 

While Web Services (WS-*) might be the correct solution, getting stacks to interoperate can be kludgy.

There is much to be said for HTTP + (POX | JSON) and REST-ian architecture.

Larry OBrien
A: 

I do believe there are some interoperability issues using Web Services across Java/.NET platforms. For instance there are some problems using Axis2 and .net together. In most cases workarounds exists.

I've heard some good comments about using REST-ian architecture though.