“OperationContractAttribute”+ wcf的“AsyncPattern”属性有什么用?

时间:2010-03-04 05:34:25

标签: ajax wcf operationcontract

因此,对于使用过ajax的wcf服务,从DB获取记录并在客户端显示它而不使用AsyncPattern的{​​{1}}属性....

  • 我应该何时考虑OperationContractAttribute属性?

我的operationcontract方法的示例,

AsyncPattern

1 个答案:

答案 0 :(得分:1)

AsyncPattern有一些用途 - 它主要是服务器性能优化,允许您在阻塞操作上释放工作线池请求线程。例如,当发生长时间运行的阻塞操作(如DB访问)时,如果您在服务器上使用异步数据库API和AsyncPattern,则工作线程可以返回池并为其他请求提供服务。当数据库访问完成时,原始请求稍后在另一个工作线程上“唤醒”,其余工作完成(服务客户端只是耐心地等待 - 除非您使用的是AsyncPattern感知客户端,否则这一切都是透明的和绑定)。如果仔细完成,这可以让您的服务处理更多请求。为了利用,您需要在服务器上使用具有本机异步实现的API。我看到的唯一可能是候选者的是您在SQLHelper.ExecuteDataset方法中发生的数据库调用 - 您必须阅读底层API以确保TRUE异步选项可用(存在BeginXXX / EndXXX方法)并不一定意味着它是一个真正的异步impl)。 System.SqlClient的东西是真正的异步。

请注意:您必须处理大量请求以使其变得有价值 - 编码复杂性和可读性的成本很高,以此方式进行拆分。您还需要非常好地理解多线程编程 - 锁定,错误处理等方面存在许多缺陷,这些缺陷远远超出了SO帖子的范围。

祝你好运!