问题标签 [duplex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1988 浏览

wcf - WCF 轮询双工绑定和非 Silverlight 客户端

我花了很长时间才弄清楚这一点。我有一个 WCF 服务,我需要向 Silverlight 客户端发送信息,但我需要一个控制台应用程序才能参与其中。谁能给我一个关于我的 Web.Config 应该是什么样子的提示,以指定控制台应用程序可以访问的附加绑定?当我认为我的工作正常时,SL 客户端无法接收任何消息......

这是我当前的 Web.Config:

0 投票
1 回答
1042 浏览

wcf - 同步使用 WCF 回调(双工)服务

我有一个现有的 WCF 服务,我现在需要使用外部 WCF 回调(又名双工)服务。双工服务本质上是异步的,但我需要保持我原来的 WCF 服务同步。有没有众所周知的模式可以做到这一点?我需要注意的最重要的陷阱是什么?

我目前的意图是调用双工服务,然后等待引发 ManualResetEvent。当双工调用回调时,它将重置事件并使等待操作恢复并完成其工作。

0 投票
1 回答
588 浏览

wcf - 如何使用 net.tcp 进行双工检查 Silverlight 客户端的连接是否仍然有效?

我正在使用 net.tcp 和 netTcpBinding 将 WCF 服务放在一起,以便与我的 Silverlight 客户端进行双工通信。我从 Silverlight 应用程序调用该服务,该服务调用另一个服务器,将 WCF 服务类中的回调方法传递给它。远程服务器多次回调,每次回调时,WCF 服务都会使用回调通道将数据发送到 Silverlight 客户端。大多数时候这一切都很好。

如果用户提出一个大请求,我会在大量回调已经工作后得到一个 TimeoutException。(显然,在其他地方还有一些工作可以防止这种情况发生,但我想首先加强服务。)

在尝试回调 Silverlight 客户端之前,我希望进行某种“if (client.ConnectionState == faulted)”检查,但我似乎找不到保持连接状态的对象。有吗?我是不是从错误的角度来处理这个问题?

这是我第一次尝试服务 net.tcp 和双工。我刚搬家,我的 WCF 圣经还在一个盒子里。某处。:-) 所以,我不能做我通常的背景阅读。

任何指点将不胜感激。这是一些裸代码,以防我的描述太糊涂:

0 投票
1 回答
798 浏览

silverlight - WCF RIA 中是否提供双工消息(服务器推送)?

WCF RIA 中是否提供双工消息(服务器推送)?

在我看来,没有办法为域服务的肥皂端点指定适当的绑定(例如 PollingDuplexHttpBinding)。

有任何想法吗?

谢谢。

0 投票
1 回答
2705 浏览

wcf - 无法通过 WCF 发送大型消息

我使用 WCF 发送各种消息,并且这条消息特别是大约 3200000 字节加上一些字符串和标题。大paylode是通过另一个服务从主机检索的序列化对象,我试图在各个方面模仿其配置。

我使用 netTcp 绑定来提高性能,我们使用了很多回调。我已将客户端和服务器端的所有选项都设置为最高级别。

我在客户端收到此非描述性错误消息:

套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为“00:00:59.9979996”。

和内部扩展:

现有连接被远程主机强行关闭

运行跟踪会带来更多信息(堆栈跟踪顶部):

System.ServiceModel.Channels.SocketConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout) 堆栈跟踪内部扩展顶部:System.Net.Sockets.Socket.Send(Byte[] buffer, Int32偏移量,Int32 大小,SocketFlags socketFlags)

堆栈跟踪内部异常的顶部:

System.Net.Sockets.Socket.Send(Byte[] 缓冲区,Int32 偏移量,Int32 大小,SocketFlags socketFlags)

如果我将有效负载设置为 null(不发送 3.2 MB 对象),则消息会毫不费力地通过。

对象来自另一个服务的事实与我的问题有什么关系吗?在我看来,问题在于消息的大小,但到目前为止,增加配置中的任何选项对我没有帮助。

我试图在没有运气的情况下设置客户端。使用流式传输会导致切换到请求/响应或删除所有回调......

有任何想法吗?

0 投票
2 回答
7797 浏览

.net - 在双工绑定 WCF 应用程序中处理丢弃的客户端

我们在 WCF 应用程序中使用了一个发布-订阅模型,该模型几乎遵循 Microsoft 示例:设计模式:基于列表的发布-订阅

虽然服务提供了subscribe()和的概念,unsubscribe()但在客户端死亡或通道故障的情况下处理清理的最佳实践是什么?目前,当客户端订阅时,我将处理程序附加到当前InstanceContextClosedFaulted事件(服务用户使用 PerSession 实例上下文模式和 netTcpBinding):

OnClientLost处理程序只是取消订阅客户端,但是:

  1. 上面的做法是否是一个好的做法,并且足够强大,可以在客户端断开双工通信时捕获所有情况?或者服务是否应该只处理在尝试与客户端通信并处理清理时遇到的异常?
  2. 除了取消订阅客户端回调处理程序之外,是否应该执行任何进一步的清理,尤其是在出现故障的情况下?

这个问题提出了一个类似的问题,但最终没有提供对客户端调用订阅和/或取消订阅之外的案例的答案

谢谢

0 投票
2 回答
5373 浏览

sockets - 如何使用单线程在 TCP 上实现全双工通道?

我正在编写的网络库需要通过 TCP 套接字发送和接收消息。消息可以随时发送或接收,即应作为全双工通道工作。

我能够使用两个线程来实现这样的场景:调用 send() 的主线程和主要在 recv() 调用时阻塞的专用线程。

我的问题是:是否可以用单个线程实现相同的场景?即通过注册一些回调函数?

附带说明:我需要在 C++、Java 和 Python 中实现这个场景。

0 投票
3 回答
10393 浏览

wcf - WCF 中长时间运行进程的进度通知 - 如何?

我必须设计和实现一种方法来处理客户端/服务器应用程序中长时间运行的进程。一个典型的长时间运行的过程将/可能需要 2-3 分钟。同时我还需要向 UI 报告进度并保持 UI 响应。

考虑到这些,我想到了一些解决方案:

  • 一个异步请求启动进程,该进程启动服务器端进程并返回分配的 LRPID(长期运行进程 ID),然后使用该 LRPID 从客户端定期轮询。(优点:易于部署,没有防火墙干扰Con:不优雅,资源消耗等)

  • 使用双工绑定(例如 NetTcpBinding)并在取得进展时从服务器发起回调(Pro:优雅、高效,Con:部署噩梦)

  • 【你的建议???】

您对此有何看法?

0 投票
1 回答
1856 浏览

c# - WCF 回调超时和 Visual Studio 灾难性故障

一种愚蠢的错误,但是当我想通过服务器端服务(WCF Duplex)调用客户端时发生了这种情况:

消息无法在分配的 wcf 回调超时 00:01:00 内传输,可靠通道的传输窗口中没有可用空间

还有东西mysterious happened too。在登录方法中,当我调用服务时,如果用户名和密码错误,我会找到发件人回调,然后GetError在发件人上调用方法以显示诸如“用户错误”之类的逻辑错误。这很好用,但是如果用户和密码正确并且可以访问,我会收到该错误(所有其他客户端方法相同 - 在所有这些方法中,我发送的数据比简单字符串多,我发送的是 geterror)!

编辑 2:正如我在大多数回调方法中所说,我发送的数据如数据上下文(LINQ to SQL)数据类(列表或单行)。所以这可能是我的问题还是不是!
(但这不是我第一次使用 WCF-duplex,还使用回调方法中的发送数据结构,我太震惊了。)

同样在那个错误之后我得到了这个错误,

屏幕无法处理来自服务http://server:15450/service.svc灾难性故障的请求

编辑 3: 服务配置:

客户端配置

更多信息:我使用 .NET 3.5 和 Visual Studio 2010。同样在客户端超时后,我仍然遇到同样的错误,with 00:01:00 Time. 为什么会这样?

0 投票
2 回答
1303 浏览

wcf - WCF双工通道,解耦请求和响应

我正在考虑一个项目,在该项目中我将被要求使用各种称为“异步”模式、“双工”模式或 SOAP Web 服务的“回调”模式。在这种模式下,服务的调用者在 SOAP 标头中提供一个“回复”地址,并且服务不会在 HTTP 响应中返回调用的输出,而是创建一个到该“回复”的单独 HTTP 连接" 地址并向其发布响应消息。这通常在 WCF 中使用 CompositeDuplexBinding 实现,如下所示:

这导致每次调用不是一个,而是两个 HTTP 连接:一个从客户端到服务,然后一个从服务返回到客户端。从服务实现的角度来看,没有任何变化,你有一个实现接口方法的方法,你接受请求并返回响应。太棒了,这几乎是我需要的。

在我的情况下,请求和响应可以分开几分钟到几天。我需要一种方法来分离请求和响应,并“存储”状态(消息、响应 URI 等等),直到我有足够的信息在以后响应(或者在某些情况下甚至永远不会响应)。

我对让我的方法基本上一次“暂停”长达几天以及所需的愚蠢超时值(如果它们甚至被认为是有效的),我并不感到非常兴奋,但我不知道该怎么做把这样的系统放在一起。

为了完全清楚,我正在实现一组标准机构提供的标准,因此我没有灵活性来更改 SOAP 消息语义或更改协议实现。这种交互正是在 WS-Addressing 中实现ReplyTo 标头时的意图。

你会怎么做?也许 Workflow Foundation 支持这种事情?