2013-06-27 70 views
0

我正在實習一個公司的軟件開發人員。有一個用C#編寫的客戶端安裝的軟件程序,它具有VB中的dll - 都在.NET框架中。我們整個的基於雲的服務器現在用Java編寫的,所以,我的任務很簡單,就是調用Java中得到一個函數/套專用(?抱歉,不是真正熟悉VB,所以我可能會使用這個詞不恰當)位於dll內的變量。但最終,我的任務是從客戶端程序收集數據並將其放入我們的服務器。我一直在研究如何去這樣做,在過去幾天,已經找到了幾個選項:從Java調用VB.NET函數的最佳方式是什麼?

  • Java本機訪問(JNA)
  • Java本地接口(JNI)
  • 的COM/ActiveX橋(雖然我不能完全肯定地說,我知道這些是什麼/如何使用them_
  • JNBridge的

現在,據我所知,這是我和每個發現的問題,分別爲:

  • 使用此選項需要使用C或C++從Java到.NET的中介,並且考慮到我只真正瞭解Java,所以我不想在這個混亂中糾結。
  • 似乎比JNA更復雜一點點位,我認爲它比JNA沒有真正的優勢反正。他們似乎都需要C/C++中介。
  • ...真的不能從實際上說太多一邊,我真的不知道我該怎麼去實現這個方法。
  • 這與其他同類橋樑必須是最後的手段。該產品的開發人員許可證價格昂貴,我確定他們沒有資源使用此產品。我可以試着問,但我並不認爲這是一個實習生的地方,要求公司投資這麼多。

爲了補充一點,我並不是真的很擅長編程,所以我一直主要是自己做這件事,所以非常感謝您閱讀我的問題。如果有什麼我沒有完全解釋,需要進一步解釋,請讓我知道!任何其他技巧/指針將非常感激。

+0

這個DLL應該直接使用還是可以創建一箇中間件應用程序,如.Net WCF應用程序將提供的服務使用DLL中的方法? –

+0

@LuiggiMendoza - 我認爲它必須直接從客戶端到服務器(如果這就是你要求的)。如果您個人認爲中間件應用程序可以讓事情變得更容易,那麼也肯定不會有任何問題。 –

+0

這可能是一個解決方案,但AFAIK的決定批准將取決於您的上級。您可以提出這個想法或接收您必須使用JNA或JNI進行交互的命令。 –

回答

0

可以公開VB.NET作爲一個Web服務在Java中被消耗掉......

+1

這應該是一個評論而不是答案(請注意,我在我的WCF服務評論)。 –

+0

你能詳細解釋一下嗎?如前所述,我只是一個程度很低的程序員,他的理解非常有限...... –

0

我絕不會在這種情況下,web服務去。 COM/ActiveX也會盡快被跳過以避免進一步的問題;)JNA/JNI聽起來很不錯,但在途中有很多隱藏的東西。建議的JNBridge是一個好主意,因爲它可以讓你關注你的核心問題,並且用這種方法將所有的互操作性(JNA/JNI)任務移交給第三方。

作爲替代選擇我建議你檢查JNBridge的光對口稱爲Javonet。它不需要代理生成,也不需要安裝任何插件。你只會得到一個JAR文件,這個文件可以讓你訪問任何自定義的.NET DLL和.NET框架,而不需要在.NET端做任何改變。

的性能非常高,幾乎本土和possbilities覆蓋90%喜歡例:使用任何.NET對象,方法,字段,數組,泛型,事件,異常,數據類型轉換和其他...

此外,此類橋樑的價格/價值指數非常高,以至於在您只有一個屬性需要讀取或執行一個方法之前,永遠無法開始自定義開發。否則,我會與第三方橋接。

Javonet可與包括VB.NET,C#等任何.NET的DLL。檢查使用Javonet語法使用.NET與Java的這個簡短的示例代碼:

NObject yourObj = Javonet.New("Your.Namespace.YourDotNetClass"); 
yourObj.invoke("YourMethod","arg1",2); 

正如你從JAVA Javonet API看你會得到一個名爲「NObject」的新對象,它是任何.NET對象的句柄類型,您可以在其中執行操作,如調用方法,獲取/設置字段和參數,可以提供爲JAVA類型String,Integer,Float,它們將會自動轉換爲.NET類型。

有關詳情,請快速入門指南: http://www.javonet.com/#getting_started

0

我可以推薦JNA與UnmanagedExports在一起,因爲它僅需要C#,VB.NET和F#的.dll與下面的頭

C#:

之後,您可以像使用Java中的任何其他C或C++ .dll一樣使用JNA。你可以找到一個例子和一些限制,我不能在我的回答在這個類似的問題:Call DLL from Java using JNA

我只用C#試過,但如docu所述,它應該與C#,F#和VB一起工作。淨。

相關問題