2010-03-14 81 views
5

对于愚蠢的问题感到抱歉,但只是关于WCF的一些事情我无法让我的头。将不胜感激了以下一些建议....WCF net.tcp绑定,消息格式和安全问题

  • 在一个非常基本的水平是正确的,WCF使用二进制(的net.tcp),HTTP或MSMQ传输线路上我的信息?

  • 但是,无论在任何情况下,无论数据如何以带有标题和正文的SOAP格式传输消息本身,都是如此?所以它是一种以HTTP/S或二进制格式传输的XML消息。

  • Net.Tcp是我的客户端服务器应用程序的不错选择 - 它类似于Messenger应用程序,因为客户端都是位于防火墙另一端的远程用户。我正在阅读的大部分内容都告诉使用WS *和HTTP。

  • Net.Tcp是否由标准和无证书保护? - 也就是说 - 人们无法在线路上收听并解码出入数据。

  • 是否可以使用net.tcp发送用户名和密码,并且没有安装证书?

  • 如果是这样,我认为我可以将其挂钩到我的成员资格提供程序,并验证对我的服务合同实施中每种方法的访问权限。

  • 我推测,使用用户名和密码安全性,代理服务器将使用用户名和密码进行初始化,并且该信息将随每个请求一起发送。

  • 然后我的会员提供商将被调用每个方法调用,并做任何需要做的事情来获得该方法的授权。

不好意思问题的转储,但很想知道我是否正确思考WCF如何工作。

谢谢。

回答

15

在一个非常基本的水平是正确的,WCF使用二进制(的net.tcp),HTTP或MSMQ传输线路上我的信息?

您正在混淆传输层和序列化机制。 WCF transports选项是TCP,命名管道,HTTP和MSMQ。 WCF serialisation选项是二进制文本(包括SOAP,POX和JSON)和MTOM。

但是,无论在任何情况下,无论数据如何以带有标头和正文的SOAP格式传输消息本身?所以它是一种以HTTP/S或二进制格式传输的XML消息。

号码WCF使用Message类作为通信的原子单位。它就像结构中的SOAP一样,但它不像SOAP那样是序列化格式。

是净。Tcp是我的客户端服务器应用程序的一个很好的选择 - 它类似于Messenger应用程序,因为客户端是防火墙另一端的所有远程用户到我的服务器。我正在阅读的大部分内容都告诉使用WS *和HTTP。

听起来像TCP不会是一个好的选择。除非您能够在端口80或443上运行服务器,否则防火墙可能会使TCP变得困难。从我个人的经验来看,我还建议不要在Internet部署中使用带有TCP绑定的WCF。当一个TCP连接丢失时,WCF会让你跳过很多环节来捕获并重建它。 HTTP绑定更容易管理。

Net.Tcp是否由标准和无证书保护? - 也就是说 - 人们无法在线路上收听并解码出入数据。

NetTCP binding is secured by default with TLS

是否可以使用net.tcp发送用户名和密码,并且没有安装证书?

您可以使用预先安装的cerificate进行TCP绑定验证。您还可以将用户名和密码添加到您的邮件标题中,但这是另一回事。

如果是这样,我认为我可以将其挂钩到我的成员资格提供程序,并验证对我的服务合同实施中每个方法的访问权限。

您可以使用OperationContext提取邮件头并提取您喜欢的任何信息并将其用于身份验证提供程序。

我认为用用户名和密码安全,代理用用户名和密码初始化,这个信息是随每个请求一起发送的。

然后我的会员供应商将被调用为每个方法调用,做任何需要做的就是该方法的授权。

这听起来像你想看看How to: Use the ASP.NET Membership Provider

3

除了Sipwiz”出色答卷:

但是这是真的,在所有情况下, 不管数据是如何 在 传输的消息本身在SOAP格式头和 身体?所以它是一种以HTTP/S 或二进制格式传输的XML消息 。

是 - 差不多。 WCF的大多数绑定都使用SOAP作为它们的格式 - 除了webHttpBinding和WCF数据服务(以前称为“Astoria”或ADO.NET数据服务)或WCF RIA服务等关联事项外。他们使用REST方法传输数据,而与SOAP无关。

有关REST的更多信息,请查看WCF REST Developer Center on MSDN