2009-07-30 3 views
6

Java 프로세스를 시작하는 Windows에는 C++ 응용 프로그램이 있습니다. 이 두 앱은 서로 통신해야합니다 (xml 스 니펫을 통해).Windows OS 환경에서 C++ 응용 프로그램과 Java 응용 프로그램 간의 프로세스 간 통신

어떤 프로세스 간 통신 방법을 선택하겠습니까? 그 이유는 무엇입니까?

우리의 테이블에있는 방법은 다음과 같습니다 : 공유 파일, 파이프 및 소켓 (보안 문제가 있다고 생각되지만). 나는 다른 방법에 열려 있습니다.

답변

9

소켓 기반 통신에 보안 문제가 있다고 생각하는 이유가 확실하지 않습니다 (SSL 사용). 잘 정의 된 통신 프로토콜이 있다고 가정하면 언어 불가지론 자이므로 대개 매우 좋은 방법입니다. 예를 들어 Google의 protocol buffers을 살펴보십시오. 필요한 Java 클래스와 스트림을 생성합니다. 내 경험에

, 파일 시스템 (특히 네트워크 파일 시스템)가 필요 메시징에 맞게 조정하지 않는 한 이러한 통신에 적합하지 않은 (내가 본 캐시 문제는 파일이 대상에 의해 선택되지되는 결과 프로세스).

다른 옵션은 메시징 레이어 (예 : AMQ 또는 Tibco)이지만 설정에 더 많은 관리 오버 헤드 (전문 지식 포함)가 관련 될 수 있습니다.

개인적으로 나는 융통성과 단순성 때문에 순수 소켓 방식을 선택했습니다. 완전 제어 이됩니다.

+0

소켓과 보안에 대한 요점. 감사. +1 –

1

Ice 꽤 멋지다 :) 내가 C# 및 크로스 플랫폼 C++ 응용 프로그램 사이의 통신에 대한 명명 된 파이프를 사용하고 좋은 결과만을 했어

3

. 그 소켓을 금지하는 것은 확실히가는 길입니다.

2

소켓이 멋집니다. 그들은 당신에게 각 구성 요소 주위에 블랙 박스 테스팅 레이어를 매우 쉽게 만들 수있을뿐만 아니라 각 구성 요소를 자체 컴퓨터에서 실행할 수 있습니다.

보안 문제는 분명히 중요하지만 중요성에 따라 다양한 옵션이 있습니다. SSL, 사용자 정의 핸드 셰이 킹, 암호로 보호 된 로그인 및 방화벽을 사용하여 보안을 강화할 수 있습니다.

편집 : 내가 권하고 싶지 않지만 JNI를 사용하는 공유 메모리가 있습니다. 내가 당신의 목록에 없기 때문에 나는 그것을 말할 것이라고 생각했다.

관련 문제