C # Взаимодействие с C против взаимодействия с Java: что лучше / проще / быстрее? - PullRequest
1 голос
/ 05 марта 2009

У меня есть приложение на C #, которое в настоящее время проходит аутентификацию в LDAP. Мы хотим расширить функциональность для поддержки IBM Tivoli Access Manager, который состоит из сервера политики и сервера LDAP (а также других модулей). К сожалению, аутентификация на сервере LDAP для нашего клиента неприемлема, поэтому мы должны связываться с сервером политики.

Сервер политики TAM имеет 2 API для аутентификации, один на Java и один на C

Мой вопрос: какой язык C # лучше подходит для взаимодействия, C или Java?

Помните: ремонтопригодность и стоимость разработки.

Спасибо всем заранее.

Ответы [ 6 ]

2 голосов
/ 05 марта 2009

Мне кажется, что C - более простой язык для взаимодействия с C #, так как в .NET есть собственный интерфейс, позволяющий «небезопасный» доступ. Чтобы общаться с Java, вам нужно перейти через JNI, чтобы войти в Java, или использовать J #, или иным образом перепрыгнуть через обручи для связи с C # на Java и обратно.

Я не осуществлял никакой связи C # с Java (кроме как через сокет или через веб-сервисы), но я был в команде, которая использовала JNI для связи с Java на COM через код C ++. В итоге нам пришлось отказаться от решения JNI как слишком громоздкого. Мы переписали компонент C ++ в C # и использовали прибитый сокет для связи между двумя компонентами. Это сработало сказочно.

Исходя из этого опыта, если вы уже используете C #, я бы использовал C API из C #. Это легко сделать.

1 голос
/ 05 марта 2009

В прошлом у меня был хороший успех с Managed C ++ / CLI для взаимодействия с C / C ++, я не могу много говорить о взаимодействии с Java.

Также, если вы собираетесь использовать прямой C, вы можете экспортировать вызовы функций непосредственно в C #.

0 голосов
/ 09 ноября 2009

Вам не нужно создавать мост между C # и C или Java. Как упоминал Cheeso, TAM уже некоторое время поддерживает поддерживаемый .NET API - для информации см. здесь .

0 голосов
/ 31 октября 2009

Я являюсь автором jni4net , внутрипроцессного моста с открытым исходным кодом между JVM и CLR. Он построен на основе JNI и PInvoke.

0 голосов
/ 05 марта 2009

Мне нравится ответ Эдди, но я бы умерил его этим наблюдением - это зависит от навыка, установленного вами в доме. Если у вас есть куча профессионалов по Java, то имеет смысл использовать Java. Если у вас есть куча C-программистов, то выбор очевиден.

Еще один комментарий: вы уверены, что TAM не поддерживает .NET ?

0 голосов
/ 05 марта 2009

Я думаю, что API, с которым вы взаимодействуете, - это не что иное, как API. Один интерфейс - Java, а другой - C, но вы, вероятно, не взаимодействуете с Java-кодом, вероятно, просто C.

Тем не менее, я полагаю, это будет простой интерфейс. Я предполагаю, что C есть, но если есть какое-то отличное Java-связывающее программное обеспечение, которое позволяет C # легко обращаться к библиотекам Java, это может быть лучше.

Скорее всего, они оба ссылаются на код C прямо под API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...