2012-07-16 26 views
0

我已經開始在MVVM體系結構中構建WPF應用程序(使用Prism基礎結構)。棱鏡與WCF服務 - 他們總是異步?

我需要的WPF應用程序連接到幾個不同的WCF服務。

我有點疑惑,因爲我無法在網絡上找到這樣的行爲的任何樣本。

我發現了一些連接到WCF服務的Silverlight + Prism示例,但它們總是是異步執行的。

是否有什麼原因呢? (我的服務都是'同步')。

+1

我不認爲有任何WPF應用程序連接到服務的開發人員的示例;只有Silverlight的例子......正如下面所指出的,Silverlight只能將異步連接到服務。我在一個WPF應用程序中使用了一些PRISM組件,這是WCF服務的客戶端,所以這是可能的。 – Thelonias 2012-07-17 00:06:07

+0

你有沒有在線樣品,你看我可以使用?我正在努力理解我在哪裏執行頻道的「開放」,我在哪裏使用它,我如何使用它(每次打開ViewModel時新建一個實例,或者是一個單例 - 這將如何影響故障頻道)等等。 .. – 2012-07-17 07:13:07

+1

我不......但您可以按照StockTraderRI應用程序中使用的模式。在那裏,你可以看到他們正在使用控制器的概念(查看[PRISM docs](http://compositewpf.codeplex.com/releases/view/55580))。如果您使用的是MEF,您可以控制「部件」(即控制器)的創建方式(共享或非共享),因此您最終可以擁有一個持有服務參考的單件控制器。 StockTrader應用程序非常先進,所以我會從文檔開始,然後沿着這個步驟前進。 – Thelonias 2012-07-17 16:02:01

回答

2

的Silverlight只支持異步調用WCF所以這就是爲什麼所有這些樣本做這種方式。

沒有什麼在棱鏡阻止您進行同步調用WCF,但你不能對多目標的模塊爲Silverlight。就用戶界面而言(即使是在WPF中),你可能會更好地異步進行這些調用。

你是否已經實現了你的服務的同步或異步並不是客戶真正不相干 - 生成客戶端代理,則可以產生異步開始/爲每個操作結束對時。