Domanda

Abbiamo scritto un programma Java che stiamo cercando di utilizzare e interagire con da C #. Quali sono le nostre opzioni? In modo ottimale sarebbe possibile compilare l'applicazione Java come una libreria (DLL) che si possa fare riferimento da C # magari utilizzando P / Invoke. Questo, tuttavia, non sembra essere un'opzione in base alle prime ricerche online.

Optiamo per essere in grado di utilizzare ASP.NET per costruire un motore di ricerca alimentato dal codice Java, quindi se questo si apre per tutte le altre opzioni fatecelo sapere.

È stato utile?

Soluzione

Siamo spiacenti, si chiama cannot java code / classes Directly dal codice C #.

Un modo per farlo è quello di wrap le vostre classi Java in un java Web Service e call classi indirectly attraverso l'interfaccia web service nel codice C #.

Un altro modo è utilizzare javareg.exe che espone le classi Java come COM. Lo si può trovare in seguente posizione:

C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe

A seguito di messaggi potrebbero aiutare pure

Altri suggerimenti

L'approccio più semplice sarebbe probabilmente di pubblicare la funzionalità della libreria Java come servizi web e aggiungere un web di riferimento dalla vostra applicazione asp.net.

Java non è fatto per essere incorporato in un altro programma, quindi è necessario un ponte. La soluzione più semplice è quella di utilizzare una presa di corrente: Creare un processo Java in ascolto per i comandi su un socket. In C #, inviare i comandi per la presa e leggere le risposte.

Il problema principale qui è la serializzazione, ma se si usa XML, non è più un dolore grande come. Prova il built-in serializzazione XML ( vedere questo articolo ) o quadri personalizzati come xstream o semplice .

E 'certamente possibile avvolgere Java in una dll, ed è stata una parte della piattaforma di base Java per oltre 10 anni. JNI (Java Native Interface) dispone di un'interfaccia per l'incorporamento di una JVM nel codice, significa che è possibile eseguire classi Java utilizzando C-stile di collegamento. Si noti che questo richiede che si scrive un semplice involucro C, ci sono i campioni entro: http://java.sun.com/docs/books/jni /html/invoke.html#11202

Come alcuni di questi altri posti suggeriscono, a volte è desiderabile essere meno strettamente accoppiati, quindi si consiglia di considerare l'utilizzo di un altro disegno. Una possibilità sarebbe un semplice database, in cui l'applicazione Java regolarmente sondaggi per le richieste dal codice C #. Se si desidera che l'accoppiamento più stretto, per le cose come call-back, si può guardare interfacce distribuito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top