您能通过单向服务方式确保交付吗?

时间:2013-11-08 20:20:26

标签: c# wcf service named-pipes reliability

假设我有一个向WCF服务器发送消息的代理:

NetNamedPipeBinding b = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
b.MaxConnections = 1000000;
EndpointAddress address = new EndpointAddress(@"net.pipe://sendmessage");
channelFactory = new ChannelFactory<ISendMessage>(b, address);
proxy = channelFactory.CreateChannel();
proxy.SendMessage("Hello, world.");

假设SendMessage函数具有单向OperationContract:

[OperationContract(IsOneWay=true)]
void SendMessage(string message);

运行代码行proxy.SendMessage("Hello, world.");是否保证将消息传递给服务器?如果不是默认情况下,有没有办法保证交货?假设我的应用程序崩溃,并且在proxy.SendMessage("Hello, world.");运行后它立即崩溃,如果没有网络故障,该消息是否会将其发送到服务器?

1 个答案:

答案 0 :(得分:1)

单向操作可确保您的请求在服务端排队。与请求 - 回复操作的主要区别在于客户端在服务器获取消息后立即解除阻塞而不等待操作分派。因此,无法知道操作结果,抛出的异常甚至是调用操作的事实。

您可以在此处阅读详细信息 http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S1