2010-12-08 5 views
3

질문에 대한 답변 .NET을 사용할 수없는 네이티브 응용 프로그램에서 WCF "세계"와 어떻게 인터페이스합니까?WCF를 네이티브 (C++) 응용 프로그램과 함께 사용할 수 있습니까?

EDIT : 죄송합니다. WCF가 이러한 광범위한 스펙트럼을 다루고있는 것처럼 보입니다. 통신/IPC 메커니즘으로 WCF/TCP 통신을 사용하는 여러 응용 프로그램이 있고 .NET을 사용할 수없는 네이티브 (C++) 응용 프로그램을 통합해야하는 경우를 생각하고있었습니다.

+1

정확히 무엇을 의미합니까? WCF 서비스에 전화를 걸고 호스트 하나 만들겠습니까? 어떤 종류? –

+1

"인터페이스"란 무엇입니까? 예를 들어 다른 C++ API를 통해 WCF 응용 프로그램 (SOAP 사용)에 대한 클라이언트 (또는 서버)를 구성 할 수 있지만 관리되는 C++가 없으면 MS 라이브러리를 직접 사용할 수 없습니다. –

답변

5

WCF는 프로토콜에 무관심합니다. 그러나 당신은 WCF와 통신하는 방식에서 이것을 고려해야합니다.

상대방이 사용할 수있는 메시지를 보낼 수 있다면 괜찮을 것입니다.

1) 네임드 파이프 결합 :이 예의 사용하기 어렵다 외부 .NET

2) TCP 바인딩 : 그것은 가부

3) basicHttp 바인딩 외부 .NET

사용하기 어렵다 : 그것은 외부 .NET을 구현하는 가장 쉬운 방법 중 하나입니다.

4) wsHttp 바인딩 : ws * 메시지를 생성하고 소비 할 수있는 라이브러리가 있으면 좋지만 약간 어렵습니다.

5) REST API는 : 그것은 참으로 쉬운이며 서비스의 종류는 제공 무엇을 통해 제어 할 수 있다면이 하나 을 추천합니다.

+0

Hello Aliostad, 동일한 컴퓨터에서 프로세스 간 통신이 필요하고 WCF REST 서비스로 데이터를 보내야하는 Java 또는 C++ 클라이언트 프로세스가있는 경우 옵션 번호 5 (REST)를 사용할 수 있습니까? –

0

내가 말하는 "WCF world"가 어떤 것인지 전혀 알지 못합니다. WCF는 이전 SOAP 1.1 형식을 사용하거나 최신 WS-Security를 ​​사용하여 SOAP 웹 서비스를 구현하는 데 사용할 수 있습니다. 그래서, 귀하의 질문이됩니다 : 나는 C + +에서 SOAP 웹 서비스를 호출 할 수있는 대답은 분명히 "예"입니다.

5

예, 이며 관리되지 않는 C++ 응용 프로그램은 WCF를 사용하는 다른 응용 프로그램과 통신 할 수 있습니다. 필자는 WCF를 사용하여 Windows 서비스와 통신하도록 기존 MFC 실행 파일을 수정했습니다.

기본 개념은 C#을 사용하여 .NET 어셈블리에 WCF 클라이언트 코드를 작성하는 것이므로이 방법을 사용하는 것이 더 쉽습니다. 그런 다음 C++ dll을 사용하여 관리되지 않는 C++ 코드와 .NET 어셈블리 사이의 간격을 메우십시오.

이 작업을 수행하는 방법에 대한 단계별 지침이 있습니다. here.

+0

첫 번째 :이 헤드 업과 위대한 설명에 대한 링크를 보내 주셔서 감사합니다. 2 : 불행히도 나는 당신이 연결하는 Q에서 사용자 galets와 같은 문제가있다. 즉 CLR을 100 % 네이티브 프로세스로 끌어들이는 것을 피하고 싶었을 것이다. –

+0

알기. 3 점. 첫째, CLR과의 상호 작용은 C# 어셈블리 (분명히)와 C++ '브리지'dll로 제한됩니다. 이 솔루션은 네이티브 C++ 응용 프로그램과 DLL에 직접 CLR 종속성을 강요하지 않습니다. 둘째, Windows 7부터는 .NET 3.5 SP1이 OS 구성 요소로 포함되며 기본적으로 설치됩니다. 세 번째, 이전 버전의 Windows에서는 항상 필요한 .NET 설치 프로그램을 제공 할 수 있습니다. –

+0

아마 내가 의존성에 대해 신경 쓰지 않고 CLR VM을 내 기본 프로세스 내에서 실행하여 통신을 용이하게한다는 점을 추가해야합니다. –

1

표준 SOAP 프로토콜을 사용하지 않는 "WCF World"가 문제입니다. NetTcpBindingNetNamedPipeBinding에 설명 된대로 관리되지 않는 브리지에 관리되지 않는 종류가 필요합니다. 그래서 대답은 분명히 "예"가 아닙니다. WFC 서비스에서 제공하는 바인딩에 따라 다릅니다.

2

Windows 7 및 Windows 2008 R2 이상 운영 체제에서 Windows Web Services API을 사용하여 네이티브 코드에서 WCF 서비스를 사용할 수 있습니다 (관리 코드에 브리징하지 않고). WWSAPI는 WS- * 및 .NET- * 프로토콜 패밀리를 지원하고 최소 메모리 오버 헤드를 갖는 SOAP의 원시 코드 구현입니다.

WWSAPI는 서비스 설명 문서에서 인터페이스의 C 스텁 코드를 생성하기 위해 편리한 WsUtil tool을 포함합니다. 서비스 모델 메타 데이터 도구 SvcUtil documented here을 사용하여 WSDL 서비스 설명 문서를 생성 할 수 있습니다.

WWSAPI를 사용하여 네이티브 코드에서 WCF 서비스를 호출하는 방법을 보여주는 문서도 helpful MSDN blog입니다. 당신이 C++ 11에서 코딩하고 WCF 서비스는 REST 인터페이스를 노출하는 경우

MSDN here에 기록하고, codeplex here에서 호스팅 카사 블랑카라는 REST 서비스를 소비하는 (또한 마이크로 소프트) 더 현대적인 대안 API가있다.

관련 문제