4

很抱歉这些愚蠢的问题,但是关于 WCF 的一些事情我无法理解。对于以下内容的一些建议将非常有用......

  • 在非常基本的层面上,WCF 使用二进制 (Net.Tcp)、HTTP 或 MSMQ 在线传输我的消息是否正确?

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

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

  • Net.Tcp 是否受标准保护且没有证书?- 也就是说 - 人们无法通过网络收听并解码传入和传出的数据。

  • 是否可以在没有安装证书的情况下使用 net.tcp 发送用户名和密码?

  • 如果是这样,我想我可以将它连接到我的会员提供者并验证对我的服务合同实现中每个方法的访问。

  • 我假设在用户名和密码安全的情况下,代理使用用户名和密码进行初始化,并且每个请求都会发送此信息。

  • 然后将为每个方法调用调用我的成员资格提供程序,并执行它需要做的任何事情来获得该方法的授权。

很抱歉问题转储,但很高兴知道我是否以正确的方式思考 WCF 的工作方式。

谢谢。

4

2 回答 2

16

在非常基本的层面上,WCF 使用二进制 (Net.Tcp)、HTTP 或 MSMQ 在线传输我的消息是否正确?

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

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

不,WCF 使用Message类作为通信的原子单元。它在结构上类似于 SOAP,但不是像 SOAP 那样的序列化格式。

Net.Tcp 对我的客户端服务器应用程序来说是一个不错的选择吗?它类似于信使应用程序,因为客户端都是防火墙另一侧的远程用户到我的服务器。我正在阅读的大部分内容都在告诉使用 WS* 和 HTTP。

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

Net.Tcp 是否受标准保护且没有证书?- 也就是说 - 人们无法通过网络收听并解码传入和传出的数据。

默认情况下,使用 TLS 保护 NetTCP 绑定

是否可以在没有安装证书的情况下使用 net.tcp 发送用户名和密码?

您可以使用预安装的证书通过 TCP 绑定进行身份验证。您还可以在邮件标题中添加用户名和密码,但这是另一回事。

如果是这样,我想我可以将它连接到我的会员提供者并验证对我的服务合同实现中每个方法的访问。

您可以使用OperationContext提取 Message 标头并提取您喜欢的任何信息并将其与您的身份验证提供程序一起使用。

我假设在用户名和密码安全的情况下,代理使用用户名和密码进行初始化,并且每个请求都会发送此信息。

然后将为每个方法调用调用我的成员资格提供程序,并执行它需要做的任何事情来获得该方法的授权。

听起来您想看看How to: Use the ASP.NET Membership Provider

于 2010-03-14T10:58:21.753 回答
3

除了 Sipwiz 的出色回答:

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

是的——几乎。WCF 的大多数绑定都使用 SOAP 作为其在线格式 - 除了webHttpBindingWCF 数据服务(以前称为“Astoria”或 ADO.NET 数据服务)或 WCF RIA 服务等相关事物。他们使用 REST 方法来传输数据,与 SOAP 无关。

有关 REST 的更多信息,请查看MSDN 上的 WCF REST 开发人员中心

于 2010-03-14T16:41:57.140 回答