2008-09-08 18 views
30

¿Alguien tiene una buena solución para integrar algún código C# en una aplicación java?¿Llamar al código C# de Java?

El código es pequeño, por lo que podría volver a escribir en Java, pero prefiero volver a utilizar el código si es posible. No se repita, etc.

Además, sé que puedo exponer el C# como un servicio web o lo que sea, pero tiene algunas cosas de seguridad/cifrado, así que preferiría mantenerlo bien integrado si es posible.


Editar: Va a estar en una aplicación basada en el servidor, por lo que "la descarga" otro tiempo de ejecución es irrelevante.

+0

Si está basado en servidor, ¿cuál es la plataforma? No tengo idea de qué tan bien cosas como la interoperación COM funcionan con Mono, así que ese es otro factor a considerar. – FlySwat

Respuesta

4

Hay un IL a Java bytecode compilador GrassHopper que puede ser de utilidad para usted. Aunque nunca lo intenté.

me vería en volver a escribir el código en Java, aunque

EDIT: Tenga en cuenta que Saltamontes parece ser ya no está disponible.

+0

El enlace de la tolva Grass está roto. –

+0

Probablemente ya no esté disponible –

7

Si es corto, creo que es mejor que vuelva a escribir el código en java. Descargar un tiempo de ejecución de 50Mb ya es bastante malo.

0

Lo volvería a escribir si no es demasiado problema. El servicio web funcionaría, pero parece que sería una gran cantidad de sobrecarga para reutilizar un pequeño código.

26

Utilizaría Java Native Interface para llamar a su código C# compilado en una DLL.

Si es una pequeña cantidad de C#, sería mucho más fácil trasladarlo a Java. Si es mucho, esta podría ser una buena manera de hacerlo.

Aquí está una descripción de alto nivel de la misma:

http://en.wikipedia.org/wiki/Java_Native_Interface

Su otra opción sería la creación de un conjunto de COM desde el código C# y usar J-Interop para invocarlo.

http://sourceforge.net/projects/j-interop/

2

Si no desea volver a escribir hadle como una Inter-process communication y elegir uno de los siguientes:

  • Las canalizaciones con nombre
  • sockets
  • de SOAP
3

Utilizamos JNBridge para esto, y funcionó muy bien. Maneja Java ->. NET y viceversa, todo en proc.

+1

Sí, este es un producto comercial. – Barton

16

Soy el autor de jni4net, puente de intraproceso de código abierto entre JVM y CLR. Se basa en JNI y PInvoke. No se necesita código C/C++. Espero que te ayude.

+0

Eso se ve muy bien, ¿alguna vez encontraste una manera de admitir Linux y Windows? – Manius

0

Si se trata de un fragmento de código que se puede visualizar como una utilidad de línea de comandos, solo hago que el otro lenguaje de host use una llamada al sistema para ejecutar la utilidad.

Si su aplicación C# necesita llamar a Java, compile un Java principal especial que tome argumentos de línea de comando apropiados y devuelva el resultado de texto.

Es el método más antiguo y simple.

Cuestiones relacionadas