2

假设我有一个向 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.");运行后立即崩溃,假设没有网络故障,消息是否会发送到服务器?

4

1 回答 1

1

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

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

于 2013-11-08T22:34:47.477 回答