2012-01-19 41 views
0

我正在构建一个使用Web服务的Silverlight应用程序。Silverlight EAP vs APM到WCF服务

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

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

请让我知道哪些在过去对你最有效。

+0

请解释“代理实施从我的ViewModels” –

回答

1

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

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

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


UPDATE:

我应该使用TaskFactory.FromAsync因为你是包装现有APM已建议。

+0

我主要同意这一点。但是,我目前使用生成的代理,并可以使用ChannelFactory轻松使用Begin和End方法。最终,我想从生成的代理移开,并使用我自己的代理类中的ClientBase/ChannelFactory。我认为写入事件库Asynch代码会涉及更多。你会同意吗? – caa

+0

你将不得不再次回到UI线程 - 问题在哪里?如果您公开EAP,则可以将复杂性封装在您的API中,并让您的客户端(UI)更加轻松。正如你所说,它会更容易揭露APM,但是那么你的客户将变得更加复杂。 –

+0

@caa我已经更新了我的答案,并附有'FromAsync'链接。 –