문제

일부 C# 코드를 Java 애플리케이션에 통합하기 위한 좋은 솔루션이 있는 사람이 있습니까?

코드가 작아서 java로 다시 작성해도 되지만 가능하면 코드를 재사용하는 편이 낫습니다.반복하지 마세요.

또한 C#을 웹 서비스 등으로 노출할 수 있지만 여기에는 보안/암호화 기능이 포함되어 있으므로 가능하면 긴밀하게 통합된 상태를 유지하는 것이 좋습니다.


편집하다:서버 기반 앱에 있을 것이므로 다른 런타임을 "다운로드"하는 것은 관련이 없습니다.

도움이 되었습니까?

해결책

Java 바이트코드 컴파일러에 대한 IL이 있습니다. 메뚜기 그것은 당신에게 유용할 수 있습니다.나는 그것을 시도한 적이 없습니다.

그래도 Java로 코드를 다시 작성해 보겠습니다.

편집하다:Grasshopper는 더 이상 사용할 수 없는 것 같습니다.

다른 팁

Java 기본 인터페이스를 사용하여 DLL로 컴파일된 C# 코드를 호출합니다.

C#의 양이 적다면 Java로 포팅하는 것이 훨씬 쉬울 것입니다.양이 많다면 이 방법도 좋은 방법이 될 수 있습니다.

이에 대한 높은 수준의 개요는 다음과 같습니다.

http://en.wikipedia.org/wiki/Java_Native_Interface

다른 옵션은 C# 코드에서 COM 어셈블리를 만들고 J-Interop을 사용하여 이를 호출하는 것입니다.

http://sourceforge.net/projects/j-interop/

나는 다음의 저자이다 jni4net, JVM과 CLR 간의 오픈 소스 프로세스 내 브리지.JNI 및 PInvoke를 기반으로 구축되었습니다.C/C++ 코드가 필요하지 않습니다.나는 그것이 당신을 도울 수 있기를 바랍니다.

짧다면 자바로 코드를 다시 작성하시는 게 좋을 것 같습니다.하나의 50Mb 런타임을 다운로드하는 것만으로는 충분하지 않습니다.

우리는 사용했었다 JNBridge 이를 위해 훌륭하게 작동했습니다.Java->.NET을 처리하며 그 반대의 경우도 모두 in-proc로 처리합니다.

hadle을 다음과 같이 다시 작성하고 싶지 않은 경우 프로세스 간 통신 그리고 다음 중 하나를 선택하세요:

  • 명명된 파이프
  • 소켓
  • 비누

별 문제가 없다면 다시 작성하겠습니다.웹 서비스는 작동하겠지만 약간의 코드를 재사용하는 것만으로도 많은 오버헤드가 발생할 것 같습니다.

http://www.infoq.com/articles/in-process-java-net-integration 동일한 프로세스 공간에서 CLR과 JVM을 실행하고 호출을 앞뒤로 전달할 것을 제안합니다.매우 효율적으로 들립니다.한번 해보고 통합해보겠습니다 제이스 잘 작동한다면.

명령줄 유틸리티로 노출할 수 있는 코드라면 다른 호스트 언어가 시스템 호출을 사용하여 유틸리티를 실행하도록 합니다.

C# 앱이 Java를 호출해야 하는 경우 적절한 명령줄 인수를 사용하고 텍스트 출력을 반환하는 특수 Java 기본을 컴파일하세요.

가장 오래되고 간단한 방법입니다.

브리징 라이브러리를 통해 C# 클래스(dll로 컴파일)를 호출할 수 있으며, 다양한 라이브러리를 사용할 수 있으며 각각의 특성이 다릅니다. JNBridge Java 클래스의 코드를 관리하기 위해 호출할 수 있는 프록시 클래스를 생성합니다. JCOBridge C# 클래스를 로드하고 호출 메커니즘을 사용하여 Java에서 사용할 수 있습니다. 자보넷 호출 메커니즘을 사용하여 Java 클래스를 가져오고 Java 코드를 호출할 수 있습니다.
탐색된 모든 솔루션은 그래픽 사용자 인터페이스 통합 및 기타 편의 기능을 통해 .NET에서 Java 코드를 호출하거나 그 반대로 호출할 수 있는 상용 솔루션입니다.

연결:
jnbridge java-.NET 브리지 개발자 및 배포 라이센스 스키마(30일 무료 평가판 포함)
제이코브리지 무제한 평가판이 포함된 java-.NET 브리지 개발자 및 배포 라이센스 스키마
자보넷 java-.NET 브리지 연구 및 전문가 라이선스 스키마(가입 후 30일 무제한 평가판 포함)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top