C# C与C的互操作与Java的互操作:哪个更好/更容易/更快?

C# C与C的互操作与Java的互操作:哪个更好/更容易/更快?,c#,java,c,interop,C#,Java,C,Interop,我有一个C#中的应用程序,目前正在对LDAP进行身份验证。我们希望扩展功能以支持IBM的Tivoli Access Manager,它由策略服务器和LDAP服务器(以及其他模块)组成。不幸的是,为我们的客户使用LDAP服务器进行身份验证是不可接受的,因此我们必须使用策略服务器进行绑定 TAM的策略服务器有两个用于身份验证的API,一个是Java,一个是C 我的问题是:对于C#to interop,C还是Java,哪种语言更好 记住:可维护性和开发成本 提前感谢大家。我在托管C++/CLI与C/C

我有一个C#中的应用程序,目前正在对LDAP进行身份验证。我们希望扩展功能以支持IBM的Tivoli Access Manager,它由策略服务器和LDAP服务器(以及其他模块)组成。不幸的是,为我们的客户使用LDAP服务器进行身份验证是不可接受的,因此我们必须使用策略服务器进行绑定

TAM的策略服务器有两个用于身份验证的API,一个是Java,一个是C

我的问题是:对于C#to interop,C还是Java,哪种语言更好

记住:可维护性和开发成本


提前感谢大家。

我在托管C++/CLI与C/C++的接口方面取得了很好的成功。过去,我对与java的接口没什么可说的


另外,如果您选择的是纯C,那么您可以将函数调用直接导出到C。

在我看来,C是更容易与C交互的语言,因为.NET中有一个本机接口,允许“不安全”的访问。要与Java通信,您必须通过JNI进入Java,或者使用J,或者跳转从C到Java再到Java进行通信

我没有对Java通信做任何C++(除了在socket或Web服务上),但是我是在一个团队中,使用JNI通过java代码通过java通信到COM。我们最终不得不放弃JNI解决方案,因为它太笨拙了。我们重写C++中的C++组件,并使用一个钉住的套接字来实现这两个组件之间的通信。这真是不可思议


根据这一经验,如果您已经在使用C#,那么我将使用C#中的C API。这很容易做到。

我认为您正在连接的API只不过是一个API。一个前端是Java,另一个是C,但您可能没有与Java代码交互,可能只有C

也就是说,我想无论哪个接口看起来更简单,它都会出现。我猜C是的,但是如果有一些很棒的Java绑定软件可以让C轻松访问Java库,那可能会更好


很有可能它们都链接到API下面的C代码。

我喜欢Eddie的答案,但我会用这一观察来缓和它——这取决于你在公司拥有的技能。如果你我有很多Java专业人士,那么使用Java是有意义的。如果你有一群C程序员,那么选择是显而易见的


不过还有一条评论:你确定吗

我是《JVM和CLR之间的开源进程内桥梁》的作者。它构建在JNI和PInvoke之上。

您不需要在C与C或Java之间建立任何桥梁。正如Cheeso所提到的,TAM已经有了一段支持的.NETAPI——请参阅以获取信息