我正在构建一个使用Web服务的Silverlight应用程序。Silverlight EAP vs APM到WCF服务
我有一个ServiceAgent调用,用于从我的ViewModels隐藏代理实现。
我的问题是哪种异步编程模型最适用于Silverlight应用程序?也就是说,我应该使用事件库异步模式(EAP)还是异步编程模型(APM)?
请让我知道哪些在过去对你最有效。
我正在构建一个使用Web服务的Silverlight应用程序。Silverlight EAP vs APM到WCF服务
我有一个ServiceAgent调用,用于从我的ViewModels隐藏代理实现。
我的问题是哪种异步编程模型最适用于Silverlight应用程序?也就是说,我应该使用事件库异步模式(EAP)还是异步编程模型(APM)?
请让我知道哪些在过去对你最有效。
经验法则是在UI代码和APM用于后端或库服务时使用EAP。
我想你的情况,在UI线程上引发的事件会很有用,所以我会选择EAP。
您可能还想考虑使用新的TAP:Task-based Asynchronous Pattern。这将使它更容易在今年晚些时候发布时移植到C#5 async
。
UPDATE:
我应该使用TaskFactory.FromAsync因为你是包装现有APM已建议。
我主要同意这一点。但是,我目前使用生成的代理,并可以使用ChannelFactory轻松使用Begin和End方法。最终,我想从生成的代理移开,并使用我自己的代理类中的ClientBase/ChannelFactory。我认为写入事件库Asynch代码会涉及更多。你会同意吗? – caa
你将不得不再次回到UI线程 - 问题在哪里?如果您公开EAP,则可以将复杂性封装在您的API中,并让您的客户端(UI)更加轻松。正如你所说,它会更容易揭露APM,但是那么你的客户将变得更加复杂。 –
@caa我已经更新了我的答案,并附有'FromAsync'链接。 –
请解释“代理实施从我的ViewModels” –