2012-01-19 46 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'鏈接。 –