Mat*_*att 7 .net wcf asynchronous-wcf-call
标记WCF方法有什么区别
[OperationContract(IsOneWay = true)]
添加服务引用时属性和检查生成异步操作复选框?
根据我的阅读,似乎只能在客户端定义调用的异步性质.如果是这样的话,有什么意义[OperationContract(IsOneWay = true)]呢?
现在,我只是在WCF方法中运行以下方法.
public void UpdateIndex(IndexElement[] indexElements)
{
// start the update on a new thread.
Thread thread = new Thread(() => UpdateIndexThread(indexElements));
thread.Start();
}
Run Code Online (Sandbox Code Playgroud)
我在客户端的代码中创建了一个服务引用,我只需调用:
indexerClient.UpdateIndex(indexElements);
Run Code Online (Sandbox Code Playgroud)
indexerClient我的WCF服务的实例在哪里.
这还行吗?它似乎没有,它几乎就像在返回之前等待线程完成一样.
Bri*_*ian 11
这些是非常不同的.
在概念层面,IsOneWay = true表示消息模式是"发射并忘记"而不是例如"请求 - 响应".也就是说,IOW = true表示从客户端到服务器的消息,但不是从服务器到客户端的回复.相反,即使返回类型为void(例如"空"消息),非IOW = true方法通常也会有响应消息.
异步模式用于客户端代码的行为 - 例如它是否阻止等待返回值.Async是一个"本地"的东西,有关详细信息,请参阅此博客.您可以为同步服务器提供异步客户端,也可以为异步服务器提供同步客户端.WCF将在幕后为您提供编程模型.如果您有一个请求 - 响应消息模式并使用'generate async',生成的客户端将为您提供一个可以调用异步的方法(例如,发送消息,并在回复到达时获得回调).
因此,对"本地编程模型"使用"async",并使用IOW进行"在线传输".
请注意,在您的示例中,如果您将方法标记为IOW = true,那么我认为服务器代码中没有理由使用Thread.Start().您可以在WCF为您的服务器提供的线程上完成工作.
| 归档时间: |
|
| 查看次数: |
5086 次 |
| 最近记录: |