2011-11-30 42 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

这是一个有趣的提议,但我的组织尚未与云计算合作(还) –