在非常基础的层面上,WCF 使用二进制 (Net.Tcp)、HTTP 或 MSMQ 在线传输消息是否正确?
您将传输层与序列化机制混淆了。WCF 传输 http://msdn.microsoft.com/en-us/library/ms733769.aspx选项包括 TCP、命名管道、HTTP 和 MSMQ。WCF序列化 http://msdn.microsoft.com/en-us/library/aa751889.aspx选项包括二进制、文本(包括 SOAP、POX 和 JSON)和 MTOM。
然而,在所有情况下,无论数据如何传输,消息本身都是带有标头和正文的 SOAP 格式吗?因此它是一种以 HTTP/S 或二进制格式传输的 XML 消息。
不。WCF 使用Message http://msdn.microsoft.com/en-us/library/ms734675.aspx类作为通信的原子单元。它在结构上类似于 SOAP,但它不是像 SOAP 那样的序列化格式。
Net.Tcp 对于我的客户端服务器应用程序来说是一个不错的选择吗?它与消息应用程序类似,因为客户端都是位于我的服务器防火墙另一侧的远程用户。我读到的大多数内容都告诉我们要使用 WS* 和 HTTP。
听起来 TCP 不是一个好的选择。除非您能够在端口 80 或 443 上操作服务器,否则防火墙可能会使 TCP 变得困难。根据我自己的个人经验,我还建议不要在 Internet 部署中使用带有 TCP 绑定的 WCF。当 TCP 连接丢失时,WCF 会让您跳过很多环节来捕获并重新建立它。 HTTP 绑定更容易管理。
Net.Tcp 是否受标准保护且无需证书? - 也就是说 - 人们无法在线收听并解码传入和传出的数据。
The 默认情况下,NetTCP 绑定通过 TLS 进行保护 http://msdn.microsoft.com/en-us/library/ms731172.aspx.
是否可以使用 net.tcp 发送用户名和密码而无需安装证书?
您可以使用预安装的证书通过 TCP 绑定进行身份验证。您还可以将用户名和密码添加到消息标题中,但这是另一回事。
如果是这样,我想我可以将其连接到我的会员提供商,并验证对我的服务合同实现中每个方法的访问。
您可以使用以下命令提取消息标头操作上下文 http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontext.aspx并提取您喜欢的任何信息并将其与您的身份验证提供商一起使用。
我假设在用户名和密码安全的情况下,代理会使用用户名和密码进行初始化,并且此信息会随每个请求一起发送。
and
然后,我的成员资格提供程序将针对每个方法调用而被调用,并执行所需的任何操作来获得该方法的授权。
听起来你想看看如何:使用 ASP.NET 成员资格提供程序 http://msdn.microsoft.com/en-us/library/ms731049.aspx.