2009-04-22 14 views
5

Tengo la tarea de escribir una aplicación para conectarme a la API de DoubleClick DART y descargar creatividades de anuncios.¿Puedo conectarme a una API de Java con C#?

La API es actualmente solo Java, pero están trabajando (eventualmente) lanzando una versión SOAP.

Como desarrollador de C#, me gustaría escribir la aplicación en C# y acceder a la API de Java, hasta que la API de SOAP esté disponible.

¿Puedo hacer esto? ¿Si es así, cómo?

De lo contrario, aprenderé Java, escribiré la aplicación y luego la rehaceré cuando esté disponible la API SOAP, pero este no es el curso de acción preferido.

Gracias por la ayuda.

Respuesta

0

Como comentario aparte, recomiendo escribir su servicio web de forma RESTful, más bien (o junto con) luego SOAP ? El beneficio será la interoperabilidad entre cualquier idioma en el que desee consumir su servicio en el futuro, en lugar de solo aquellos que puedan generar código basado en WSDL. Solo un pensamiento.

1

Sí, puedes hacer esto y tuvimos que hacer algo muy parecido hace un tiempo.

La API de Doubleclick está basada en Java y es esencialmente una colección de métodos para interrogar a la base de datos.

Lo que necesita hacer es envolver estos métodos dentro de un servicio web usando algo como Axis2 y luego implementar el servicio web en un servidor Tomcat (todo esto es de código abierto). Eso expone el servicio web y luego puede llamar al servicio web desde cualquier lugar que desee.

En su caso, agrega una referencia de servicio web dentro de Visual Studio y luego su clase C# llamará al servicio web que invoca el método Doubleclick Java.

El código real de Java es mínimo (aproximadamente 10 líneas) ya que todo lo que hace es una llamada y luego formatea la salida. ¡Lleva más tiempo implementar que escribir el código!

Nuestro entorno de desarrollo Java es Eclipse y escribí sobre él here.

0

Yo diría que usar una capa J # podría ser una buena opción. Solo lo he usado hace un tiempo, pero me ha funcionado.

3

IKVM.NET podría ser su solución. Es una Máquina Virtual Java que traduce el bytecode de Java a .NET IL.

Lo que puede hacer es compilar la API de Java (proporcionada como archivos jar o fuente) usando ikvmc.exe en un ensamblado .NET y luego hacer referencia a este ensamblado desde su proyecto C#.

IKVM tiene soporte limitado para las interfaces de usuario Java (AWT), pero dado que es una API, esto no debería ser relevante.

No he probado esto por mi cuenta, por lo que no puedo garantizar que esto realmente funcione.

Ver http://weblog.ikvm.net/story.aspx/faq

+0

Convertí los archivos JAR utilizando IKVMC y fue capaz de comenzar a utilizar la API tan pronto como Google Eng concede el acceso. Ahora, solo revise la documentación para descubrir cómo hacer lo que necesito. – Matthew

0

realidad fuimos con una forma ligeramente diferente de hacer esto.

  1. El servicio web C# ahora llama a la clase Java con javaw.exe (usando Proceso) y pasa una identificación (GUID).
  2. El GUID se usa como un nombre de archivo para un archivo XML que está escrito por la clase java.
  3. Si el proceso (javaw) finaliza sin error, el servicio web luego abre el archivo (GUID) .xml y recupera los datos.

Si bien este no es el método óptimo, funciona para este proceso en el corto plazo y en el largo plazo, cuando una solución de jabón esté disponible, el servicio web se actualiza fácilmente.

Cuestiones relacionadas