2011-11-30 50 views
0

我構建了一個解決方案,它將使用WCF來使組織中的所有計算機定期「回家」。假設爲了討論的緣故,我組織中的每臺計算機都連接了一個天氣傳感器。此應用程序的目的是每臺計算機應聯繫中央服務器報告天氣在其位置。要傳輸的數據被編碼爲一個字符串。如何使用WCF使電腦「回家」?

假設爲了討論的緣故,我有一個Windows服務,每天調用一次方法SendWeatherReport。這個函數的簽名是:

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或其他常用端口上工作。我這裏主要關心的是,我不知道如何配置軟件來識別WCF服務器...

+0

您不必使用tcp綁定。使用傳輸安全性的http綁定將加密您的數據。但您需要爲您的服務器端提供SSL證書。這也不太可能被防火牆阻止,因爲它是標準的https。 – Hinek

回答

3

WsHttpBinding可以加密消息,即使沒有https。

你必須創建綁定與SecurityMode="Message"如果你想使用SOAP加密或SecurityMode="Transport",如果你想(可以)使用https 看看How to: Set the Security Mode

我的感覺是使用HTTP協議會配置二進制TCP更簡單得多,因爲代理通常只允許http流量。

關於認證,它取決於:)最安全的機制是使用客戶端證書,但是您需要它與標準的用戶/密碼認證嗎? (及其所有的基礎設施工作)

+0

感謝您的回答!我嘗試使用wsHttpBinding,並且收到錯誤消息。它說:「調用者沒有被服務認證。」「回家」的機器不會使用與服務器相同的登錄憑據,因此重要的是他們能夠以某種方式進行交談。也許一些SSL證書是爲了... –

+0

配置WCF通常是一個問題耐心。您必須使IIS中的設置,服務器conf中的設置以及客戶端應用程序中的設置相匹配。並不總是微不足道的。一個建議,嘗試導航到您的瀏覽器的svc文件(如果您使用的話)。如果一切正常,你會看到一條好消息,如果沒有,會出現一條錯誤消息來幫助你解決問題。 –

2

聽起來像是完美的應用Microsoft's Service Bus

+0

這是一個有趣的提議,但我的組織尚未與雲計算合作(還) –