繁体   English   中英

基于 TCP 的基本绑定的 WCF 如何不可靠?

[英]How WCF with basic binding over TCP is not reliable?

由于我的介绍很糟糕,使人们感到困惑,因此我正在编辑问题并删除我之前所做的介绍。

现在,这是我现在担心的商业案例。 C#伪代码:

 Array.ForEach(files, filename =>
                    {
                        try
                        {
                           WcfServiceClient wcfClient = new WcfServiceClient();
                           wcfClient.SomeMethodWhichPostsFile(filename);
                        }
                        catch (Exception ex)
                        {
                            LogException(ex)
                        }
                    }
                );

我很困惑,因为 WSBinding 的存在是可靠的,而 basicHTTPBinding 不是。 我知道具有可靠会话的 WSBinding 可以保证交付、订单、内容被加密等。但是在我用伪代码描述的情况下,根据我的观点,即使使用 basicHttpBinding 和基于 TCP 的 HTTPS,我也支持所有这些。 TCP 为我提供可靠性、顺序保证和 HTTPS 加密。

  1. (1. 被删除) 我和以前的有关系吗? 或者换个说法:是否有一个例子表明 basicHttpBindind 在指定条件下无法提供与具有可靠会话的 WS 绑定相同的功能?

  2. 我的业务案例要求按照发出的顺序接受 WCF 调用。 如果我在 foreach 循环中从客户端同步发送它们(如伪代码所示),我假设服务器上的顺序是有保证的,无论它们是否在一个 TCP 连接内发送,因为我正在等待响应,然后我发送另一个请求。 这里即使是负载均衡器也无法将消息打乱,因为没有并行化,消息是一条一条同步发送的。 我认为只有在我发送消息而不等待响应的情况下才会发生混乱,并且我使用不同的 TCP 连接。 那么,我在这里吗? :)

可靠性一词有不同的含义,解释也取决于上下文。 您在问题中对可靠性的解释是消息已传递 您引用的来源中可靠性的解释是消息只传递一次 您的困惑来自于采用“HTTP 不可靠”这一陈述,该陈述对可靠性的一种解释,并在您对可靠性的不同解释中使用它。

HTTP 不能保证消息只被传递一次,它最多可以保证消息至少传递一次 在发送请求或接收响应时,底层 TCP 连接可能会中断。 在这种情况下,客户端可能会忽略问题或重试,这可能会导致没有消息传递(在发送请求时忽略错误),但也会多次传递相同的消息(如果在响应期间连接中断,则重试)。 通过重试直到成功收到响应,可以保证至少收到一次消息,这是您对可靠性的解释,而不是您引用的声明中的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM