2009-03-05 61 views
1

我在C#中有一個應用程序,它目前對LDAP進行身份驗證。我們希望擴展功能以支持IBM的Tivoli Access Manager,它由策略服務器和LDAP服務器(以及其他模塊)組成。不幸的是,用LDAP服務器爲我們的客戶進行身份驗證是不可接受的,因此我們必須將其與策略服務器綁定。C#Interop與C vs Interop與Java:哪個更好/更容易/更快?

譚的策略服務器有2個API進行身份驗證,一個用Java,以及一個用C

我的問題:什麼是C#更好的語言互操作,C或Java?

請注意:可維護性和開發成本。

感謝大家提前。

回答

2

在我看來,C是C#與其互操作的簡單語言,因爲在.NET中有一個本地接口允許「不安全」訪問。爲了與Java通信,你必須通過JNI去進入Java,或者使用J#,否則跳過箍環從C#到Java進行通信並返回。

我還沒有做過任何C#Java通信(除了穿過套接字或跨Web服務),但我在一個團隊使用JNI通過C++代碼從Java通信到COM。我們最終不得不扔掉JNI解決方案太笨拙。我們在C#中重寫了C++組件,並使用一個釘住的套接字來在這兩個組件之間進行通信。這非常棒。

從這個經驗來看,如果您已經在使用C#,那麼我會使用C#中的C API。這很容易做到。

1

過去,我用Managed C++/CLI與C/C++接口取得了很好的成功,但在與java接口方面卻說不上多少。

此外,如果你要直C,你可以直接將函數調用導出到C#。

0

我認爲你正在接口的API只不過是一個API。一個前端是Java,另一個是C,但你可能沒有與Java代碼交互,可能只是C.

這就是說,我認爲這將是任何接口看起來更簡單。我猜C是,但如果有一些很棒的Java綁定軟件可以讓C#輕鬆訪問Java庫,那可能會更好。

很可能它們都鏈接到API下的C代碼。

0

我喜歡埃迪的回答,但我會用這個觀察來調和它 - 這取決於你在家裏的技能。如果你有一堆Java專業人員,那麼使用Java是有道理的。如果你有一羣C程序員,那麼chouice是顯而易見的。

雖然另一個評論:你確定TAM doesn't do .NET

0

我是jni4net的作者,是JVM和CLR之間的開源內部網橋。它建立在JNI和PInvoke之上。

0

您不應該在C#和C或Java之間進行任何橋接。正如Cheeso所引用的,TAM現在已經有了一個支持的.NET API - 請參閱here以獲取信息。