我正在構建一個使用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」 –