2009-03-05 10 views
1

Ich habe eine Anwendung in C#, die derzeit LDAP authentifiziert. Wir möchten die Funktionalität erweitern, um IBM Tivoli Access Manager zu unterstützen, das aus einem Richtlinienserver und einem LDAP-Server (und anderen Modulen) besteht. Leider ist die Authentifizierung mit dem LDAP-Server für unseren Kunden nicht akzeptabel, daher müssen wir uns stattdessen an den Richtlinienserver binden.C# Interop mit C vs Interop mit Java: Was ist besser/einfacher/schneller?

Der Policy Server TAM hat 2 APIs für die Authentifizierung, ein in Java, und eine in C

Meine Frage: Was ist die bessere Sprache für C# Interop, C oder Java?

Im Auge behalten: Wartbarkeit und Entwicklungskosten.

Vielen Dank im Voraus.

Antwort

2

Scheint mir, dass C ist die einfachere Sprache für C# zu interagieren, da es eine native Schnittstelle in .NET ist, um "unsicheren" Zugriff zu ermöglichen. Um mit Java zu kommunizieren, müssen Sie JNI verwenden, um in Java zu gelangen, oder J # zu verwenden oder auf andere Weise durch Hoops zu springen, um von C# zu Java und wieder zurück zu kommunizieren.

Ich habe keine C# zu Java-Kommunikation (außer über einen Socket oder über Web Services), aber ich war in einem Team, das JNI verwendet, um von Java zu COM über C++ - Code zu kommunizieren. Am Ende mussten wir die JNI-Lösung als zu unhandlich wegwerfen. Wir haben die C++ - Komponente in C# umgeschrieben und einen genagelten Socket für die Kommunikation zwischen den beiden Komponenten verwendet. Das hat fabelhaft funktioniert.

Aus dieser Erfahrung, wenn Sie bereits C# verwenden, würde ich die C-API von C# verwenden. Das ist einfach zu machen.

1

Ich hatte guten Erfolg mit Managed C++/CLI für die Schnittstelle mit C/C++ in der Vergangenheit, kann nicht viel über die Schnittstelle mit Java sprechen.

Auch wenn Sie für gerade C gehen, können Sie die Funktionsaufrufe direkt nach C# exportieren.

0

Ich würde denken, dass die API, die Sie anschließen, nichts anderes als eine API ist. Ein Front-End ist Java, und der andere ist C, aber Sie interagieren wahrscheinlich nicht mit Java-Code, wahrscheinlich nur C.

Das sagte, ich nehme an, es wäre, welche Schnittstelle einfacher scheint. Ich vermute, dass C ist, aber wenn es eine großartige Java-bindende Software gibt, die C# Java-Bibliotheken leicht zugänglich macht, könnte es besser sein.

Wahrscheinlich sind beide Link zu C-Code direkt unter der API.

0

Ich mag Eddies Antwort, aber ich würde es mit dieser Beobachtung mildern - es hängt von den Fähigkeiten ab, die Sie im Haus haben. Wenn Sie ein paar Java-Profis haben, dann ist es sinnvoll, Java zu verwenden. Wenn Sie eine Menge C-Programmierer haben, dann ist die Entscheidung offensichtlich.

Ein anderer Kommentar: Sind Sie sicher TAM doesn't do .NET?

0

Ich bin Autor von jni4net, Open-Source-Intra-Prozess-Brücke zwischen JVM und CLR. Es ist auf JNI und PInvoke aufgebaut.

0

Sie sollten keine Brücke zwischen C# und C oder Java machen müssen. Wie Cheeso referenzierte, hat TAM schon seit einiger Zeit eine unterstützte .NET API - siehe here für Informationen.