2010-02-19 3 views
1

HTTP/SOAP (BasicHTTPBinding)를 통해 WCF 웹 서비스에 연결하는 Linux/c 클라이언트 응용 프로그램이 있습니다. gSOAP을 사용하고 있습니다. 콜백을 사용하여 웹 서비스에 대한 호출을 구현할 수 있습니까? 콜백으로 비동기 적으로 데이터를 가져 오려고합니다.WSOF 기반 HTTP 서비스에서 gSOAP c/Linux 클라이언트로 콜백을 구현할 수 있습니까?

업데이트 : 질문 제목을 업데이트했습니다.

답변

2

WCF는 양방향 서비스 또는 요청 클라이언트에 콜백 할 수있는 기능을 지원합니다. 이중화 서비스는 상태가 좋을뿐만 아니라 고객에게 계약 이행 요구 사항을 부과하기 때문에 매우 복잡 할 수 있습니다.

이중 서비스는 WSDuplexHttpBinding을 사용해야합니다. 콜백 채널에 대한 참조를 얻으려면 OperationContext를 사용해야합니다. 클라이언트는 일부 클래스에서 콜백 계약을 구현하고 클라이언트 프록시에 대한 콜백 클래스의 인스턴스가 포함 된 InstanceContext를 제공해야합니다. 양방향 통신은 지원되어야하며, 클라이언트가 자체 방화벽이나 인터넷을 통해있는 경우 해결해야 할 복잡한 문제 일 수 있습니다. 양면 서비스를 작성할 때주의를 기울이십시오 ... 그들은 가치가있는 것보다 종종 더 많은 문제가 있습니다 ... 그래서 정말로 필요로하는지 확인하십시오. ;-)

다음 페이지는 도움이 될 수도 : 저도 같은 문제와 내가 애 쓰고 접근 방식을 직면하고

http://msdn.microsoft.com/en-us/library/ms731064.aspx

+0

좋은 의견에 감사드립니다. 콜백 구현이 gSOAP를 사용하는 c/Linux 핸드 헬드 컴퓨터에서 가능할 수 있다면 나도 알 수 있습니까? – Kangkan

+0

나는 정말로 모른다. 나는 gSOAP에 대해 들었다. 그러나 나는 그것에 대해 많이 모른다. WCF는 단순한 SOAP/WSDL 웹 서비스 플랫폼 그 이상입니다. 다른 플랫폼에서 일반적으로 지원하지 않는 여러 프로토콜 및 바인딩 유형을 지원합니다. 듀플렉스 웹 서비스의 경우 크로스 플랫폼 지원에 대한 표준이 없다고 생각합니다. 따라서 gSOAP는 WCF의 이중 구현을 지원해야합니다. – jrista

1

basicHttpBinding은 콜백을 지원하지 않습니다. 또 다른 접근법은 클라이언트가 응답을 위해 폴링 할 수있는 다른 방법을 갖는 것일 수 있습니다.

+0

감사합니다. 이 경우 동기화 요청을하고 싶습니다. – Kangkan

1

는 gsoap 서버/클라이언트의 쌍을하는 것입니다. 기본적으로 각 프로세스는 포트에서 비누 호출을 수신하고 클라이언트 호출을 다른 서버로 보냅니다. 이렇게하면 폴링이나 다른 복잡한 접근법을 피할 수 있습니다. 코드는 구현 된 비즈니스 로직에 상관없이 스레드 안전성이 분명해야하지만 클라이언트/서버 콤보 쌍은 지금까지 생각한 가장 간단한 솔루션입니다.

분명히 언급 된 서버와 언급 된 클라이언트의 솔루션의 양면을 제어 할 필요가 있습니다.

+0

감사합니다. @Dragos. 나에게 상황은 약간 다르다. 이 정보를 다른 사람에게 도움이 될만한 정보로 공유하려면 +1하십시오. – Kangkan