【问题标题】:WCF (SOAP): async Service OperationsWCF (SOAP):异步服务操作
【发布时间】:2015-06-09 20:54:41
【问题描述】:

在使用 WCF SOAP 服务时,Visual Studio 会在客户端消费者应用程序中自动创建服务器中方法的同步和异步版本。例如服务器中的这个非异步方法:

public Data GetData(){
 return data;
} 

可以兼作

var i = client.GetData();

var i = await client.GetDataAsync();

现在我的问题是,在服务器端使用异步服务操作方法是否有益?我的意思是,如果将服务合同方法实现为异步,服务器端会不会有任何性能提升?

【问题讨论】:

  • IINM,在您的示例中使用 async 来使用外部服务将使“您”受益,即消费者/客户端应用程序。
  • @EdSF:当然可以,但我的意思是在服务器端使用异步方法会有什么好处吗?
  • 鉴于上述情况(服务器上没有异步)?那么它不会有任何异步“好处”......(除非我误解了你的问题)。它将执行“就像它通常同步处理请求一样”(无论调用客户端/s 是否通过异步请求)。

标签: c# web-services wcf asynchronous soap


【解决方案1】:

...如果将服务合同方法实现为异步,会在那里 在服务器端是否有任何性能提升?

不,在服务器端根本不会有任何区别。客户端上的异步服务操作是纯粹的客户端实现。服务无法区分来电。

您认为服务的 IDisposable 实现会是 有益与否

如果您谈论的是服务端代码,那么您将使用ServiceHost 容器来运行您的服务,该服务已经实现了 IDisposable,或者将从 IIS 或 WAS 动态加载,在这种情况下您无法控制正确的粒度来实现 IDisposable。

如果您的服务的内部代码在执行过程中使用任何非托管资源,那么您将需要管理这些东西的处置,但这是 .net 101 并且不仅适用于 WCF。

【讨论】:

  • Tom,还有一个问题,您认为为服务实施 IDisposable 是否有益?
  • @Arrrr - 这是一个奇怪的问题 - 请参阅我的回答编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多