2011-11-30 4 views
0

WCF를 사용하여 조직의 모든 컴퓨터가 주기적으로 "집으로 전화"하도록하는 솔루션을 설계하고 있습니다. 조직의 각 컴퓨터에 날씨 센서가 연결되어 있다고 가정 해 봅시다. 이 응용 프로그램의 목적은 날씨가 그 위치에 무엇이 있는지보고하기 위해 각 컴퓨터가 중앙 서버에 연결해야한다는 것입니다. 전송할 데이터는 문자열로 인코딩됩니다. WCF를 사용하여 컴퓨터를 "전화 걸기"로 만드는 방법은 무엇입니까?

내가 하루에 한 번하는 방법 SendWeatherReport를 호출하는 Windows 서비스를 가지고 토론을 위해 가정하자. 이 함수의 서명은 다음과 같습니다

void SendWeatherReport(string report); 

나는 다음과 같은 인터페이스와 WCF 방법을 설정 한 것으로 가정합니다

[ServiceContract] 
public interface IWeatherReportReceiver 
{ 
    [OperationContract] 
    void GetReport(string report); 
} 

나는 다음과 같은 요구 사항이 있습니다 :

1) 내 일기 예보를 정보는 독점적이며 기밀입니다. 보안 목적으로 암호화되어야합니다.

2) 날씨 정보는 인터넷을 통해 전송됩니다. 보고서를 수신하기 위해 WCF 서비스를 실행하는 컴퓨터는 example.com입니다.

3) 날씨 보고서는 서버에 그것의 방법에 약간의 오버 열심히 구성 방화벽을지나 받아야합니다. 지금은 내 요구 사항을 설명했다고

, 나는 이러한 요구 사항을 충족하기 위해 내 엔드 포인트 구성을 설정할 수있는 방법을 나에게 설명해주십시오.

(1)을 만족하려면 net tcp 바인딩을 사용해야한다고 생각합니다. (3)에서이 바인딩을 포트 80, 443 또는 다른 일반적으로 사용되는 포트에서 작동하도록 구성 할 수 있습니다. 여기 내 주요 관심사는 내가

+0

tcp 바인딩을 사용할 필요가 없습니다. 전송 보안을 사용하는 http 바인딩은 데이터를 암호화합니다. 그러나 서버 측에 SSL 인증서가 필요합니다. 또한 표준 https이기 때문에 방화벽에 의해 차단 될 가능성이 적습니다. – Hinek

답변

3

WsHttpBinding과도 HTTPS하지 않고, 메시지를 암호화 할 수 있습니다 ... WCF 서버에 자신을 식별하기 위해 소프트웨어를 구성하는 방법을 모른다는 것이다.

당신은 당신이 SOAP 암호화를 사용하려면 SecurityMode="Message"와 바인딩 만들기 위해, 또는 SecurityMode="Transport" 원하는 경우 (수)를 사용하여 HTTPS How to: Set the Security Mode

내 느낌 살펴 보자는 HTTP 프로토콜을 사용하는 것이 될 것입니다 프록시는 HTTP 트래픽 만 허용하기 때문에 바이너리 TCP를 훨씬 더 간단하게 배포 할 수 있습니다. 인증에 관한

, 그것은 가장 안전한 메커니즘은 클라이언트 인증서를 사용하는 것입니다 :) 따라,하지만 당신은 그것을 표준 사용자/암호 인증에 비해 필요합니까? (그리고 작동하는 데 필요한 모든 인프라)

+0

답변 해 주셔서 감사합니다. wsHttpBinding을 사용하여 시도하고 오류 메시지가 나타납니다. 그것은 "호출자는 서비스에 의해 인증되지 않았습니다." "집에 전화하는"컴퓨터는 서버와 동일한 로그온 자격 증명을 사용하지 않으므로 어떻게 든 이야기 할 수 있어야합니다. 아마도 일부 SSL 인증서가 주문 상태 일 것입니다 ... –

+0

WCF 구성은 종종 인내심을위한 질문입니다.IIS의 설정, 서버 구성의 설정 및 클라이언트 응용 프로그램의 설정을 일치시켜야합니다. 항상 사소한 것은 아닙니다. 한 가지 제안은 브라우저에서 svc 파일 (사용중인 경우)을 탐색 해보십시오. 모든 것이 정상이면 좋은 메시지가 표시되고 그렇지 않은 경우 오류 메시지가 나타나 문제를 해결할 수 있습니다. –

2

Microsoft's Service Bus을위한 완벽한 응용 프로그램처럼 소리.

+0

이것은 흥미로운 제안이지만 내 조직은 아직 클라우드 컴퓨팅을 사용하지 않습니다. –