【问题标题】:Silverlight EAP vs APM to WCF ServicesSilverlight EAP 与 APM 到 WCF 服务
【发布时间】:2012-01-19 22:44:18
【问题描述】:

我正在构建一个使用 Web 服务的 Silverlight 应用程序。

我有一个 ServiceAgent 调用,用于从我的 ViewModel 中隐藏代理实现。

我的问题是哪种异步编程模型最适合 Silverlight 应用程序?也就是说,我应该使用基于事件的异步模式(EAP)还是异步编程模型(APM)?

请告诉我过去哪种方法最适合您。

【问题讨论】:

  • 请解释“我的 ViewModels 中的代理实现”

标签: silverlight asynchronous


【解决方案1】:

经验法则是在 UI 代码和 APM 用于后端或库服务时实现 EAP。

我想在你的情况下,在 UI 线程上引发事件会很有用,所以我会选择 EAP。

您可能还想考虑使用新的 TAP:Task-based Asynchronous Pattern。当今年晚些时候发布时,这将更容易移植到 C#5 async


更新:

我应该建议使用 TaskFactory.FromAsync,因为您正在包装现有的 APM。

【讨论】:

  • 我基本同意这一点。但是,我目前使用生成的代理,可以使用 ChannelFactory 轻松使用 Begin 和 End 方法。最终我想离开生成的代理并从我自己的代理类中使用 ClientBase/ChannelFactory。我认为编写基于事件的异步代码会涉及更多。你同意吗?
  • 您将不得不在某个地方编组回 UI 线程 - 问题是在哪里?如果您公开 EAP,您将封装 API 背后的复杂性,并使您的客户端(UI)更容易。正如您所说,公开 APM 会更容易,但您的客户端会更复杂。
  • 不幸的是,我目前仅限于 Silverlight 3,所以这对我来说还不是一个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多