Могу ли я подключиться к API Java с помощью C #? - PullRequest
5 голосов
/ 22 апреля 2009

Мне поручено написать приложение для подключения к DoubleClick DART API и загрузки рекламных объявлений.

API в настоящее время является только Java, но они работают (в конечном итоге) над выпуском версии SOAP.

Как разработчик C #, я хотел бы написать приложение на C # и получить доступ к Java API, пока не будет доступен SOAP API.

Могу ли я сделать это? Если да, то как?

Если нет, я изучу Java, напишу приложение, а затем переделываю его, когда API SOAP доступен, но это не предпочтительный вариант действий.

Спасибо за помощь.

Ответы [ 7 ]

3 голосов
/ 17 мая 2009

IKVM.NET может быть вашим решением. Это виртуальная машина Java, которая переводит байт-код Java в .NET IL.

Что вы можете сделать, это скомпилировать API Java (предоставляемый в виде jar или исходных файлов) с использованием ikvmc.exe в сборку .NET, а затем сослаться на эту сборку из вашего проекта C #.

IKVM имеет ограниченную поддержку пользовательских интерфейсов Java (AWT), но, поскольку это API, это не должно относиться к делу.

Я не пробовал это сам, поэтому не могу гарантировать, что это действительно работает.

См. http://weblog.ikvm.net/story.aspx/faq

1 голос
/ 24 июня 2009

Забудьте API Java DART и переключитесь на этот новый подход API WebService:

http://doubleclickadvertisers.blogspot.com/2009/06/webservices-api-jun-2nd-2009-release.html

1 голос
/ 23 апреля 2009

Да, вы можете сделать это, и некоторое время назад мы должны были сделать нечто очень похожее.

API Doubleclick основан на Java и, по сути, представляет собой набор методов для опроса базы данных.

Что вам нужно сделать, это обернуть эти методы внутри веб-службы, используя что-то вроде Axis2, а затем развернуть веб-службу на сервере Tomcat (все это с открытым исходным кодом). Это открывает доступ к веб-службе, и вы можете затем вызывать веб-службу с любого телефона.

Итак, в вашем случае вы добавляете ссылку на веб-сервис в Visual Studio, а затем ваш класс C # вызывает веб-сервис, который вызывает метод Doubleclick Java.

Фактический код Java минимален (приблизительно 10 строк), поскольку все, что он делает, - это вызов, а затем форматирует вывод. Развертывание занимает больше времени, чем написание кода!

Нашей средой разработки Java является Eclipse, и я написал об этом в блоге здесь .

1 голос
/ 22 апреля 2009

Это API веб-сервисов или файл JAR, который вы предоставили? В последнем случае J # может быть опцией, и в этом потоке есть несколько других опций моста: http://www.velocityreviews.com/forums/t140810-java-c-interop.html

0 голосов
/ 03 июня 2009

На самом деле мы пошли немного по-другому.

  1. Веб-служба C # теперь вызывает класс Java с помощью javaw.exe (используя Process) и передает идентификатор (GUID).
  2. GUID используется в качестве имени файла для файла XML, который записывается классом java.
  3. Если процесс (javaw) завершается без ошибок, веб-служба открывает файл (GUID) .xml и извлекает данные.

Хотя это не оптимальный метод, он работает для этого процесса в краткосрочной и долгосрочной перспективе, когда становится доступно решение SOAP, веб-служба легко обновляется.

0 голосов
/ 17 мая 2009

Я бы сказал, что использование слоя J # может быть хорошим вариантом. Я использовал его только один раз, но это помогло мне.

0 голосов
/ 22 апреля 2009

Помимо этого, могу ли я рекомендовать писать ваш веб-сервис RESTful, скорее (или в сочетании с), чем SOAP? Преимуществом будет взаимодействие между любыми языками, которые вы можете использовать в будущем, а не только теми, которые могут генерировать код на основе WSDL. Просто мысль.

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