문제

외부 응용 프로그램과 통합하려는 2 개의 데스크탑 응용 프로그램이 있습니다. 응용 프로그램 중 하나는 모든 분포에 공통적이지 않은 특정 기능을 제공하기 위해 나에 의해 개발 된 플러그인으로 확장됩니다. 상황은 다음 다이어그램에서 설명 할 수 있습니다.

Alt Text http://img32.imageshack.us/img32/8902/integration1.png

언급했듯이 외부 응용 프로그램 또는 SDK와 응용 프로그램을 통합 (수신 및 전송)하고 싶습니다. 일반적으로 외부 응용 프로그램의 두 가지 유형의 데이터가 있습니다.

  1. 일반/공통 데이터 - 항상 관련이 있습니다
  2. 특정 데이터 - 각 외부 응용 프로그램에 대해 다르게 처리해야합니다.

"핵심 응용 프로그램"을 사용하면 원하는 상황 이이 다이어그램에 설명되어 있습니다.

대체 텍스트 http://img32.imageshack.us/img32/3299/integration2.png

일반 데이터는 핵심 애플리케이션에서 처리되며 특정 데이터는 플러그인 (지원 플러그인)으로 처리됩니다.

이 응용 프로그램의 분포는 그 중 하나 일 수 있습니다

  • 핵심 애플리케이션 + Yakko App + Yakko App Integrator + Yakko 앱 지원 플러그인
  • 코어 애플리케이션 + DOT 앱 + DOT 앱 통합기

다른 응용 프로그램의 경우 동일한 "통합 자"를 유지하고 싶지만 응용 프로그램 내에서 다르게 처리하려면 다음과 같습니다.

Alt Text http://img32.imageshack.us/img32/2088/integration3x.png

방금 설명한대로 외부 응용 프로그램 및 SDK를 통합하기위한 내 응용 프로그램에서 지원을 구현하는 것이 좋습니다.

메모:

  • Windows에서 C ++를 사용하고 있으며 플러그인은 DLL으로 배포됩니다.
  • 사용될 데이터 유형은 항상 미리 알려져 있습니다. 소스에서 핸들러로 이동하는 일반적인 방법 만 있으면됩니다.
도움이 되었습니까?

해결책

나는 논평자와 동의합니다. com은 좋은 전략처럼 보입니다. 지원 DLL이 설치되면 등록되면 핵심 앱이 플러그인을 찾을 수 있습니다.

hr = CLSIDFromProgID(L"Wakko.1.0", &clsid);  
hr = GetActiveObject(clsid, NULL, &punk);

또는
hr = CoCreateInstance(clsid, ...,..., IID_IWAKKO, ...);

다른 팁

Windows의 IPC 옵션을보십시오 여기

나에게도 Com은 여기서 좋은 선택처럼 보입니다.

이를 수행하는 또 다른 방법은 핵심 애플리케이션이 플러그인의 호출을 청소하는 서버를 실행하도록하는 것입니다. 이름 파이프를 사용하여이를 달성 할 수 있습니다. 이제 지원 앱은이 플러그인을 사용하여 핵심 앱과 통신합니다 (파이프 위에).

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