2013-05-01 26 views
0

我有幾個項目。其中一個項目將作爲Windows服務部署。另一個項目是WPF應用程序。還有一些其他應用程序管理某些數據(外部硬件或數據庫)。數據列表幾乎都是ObservableCollection's。在服務中使用ObservableCollection

我已經讀了一下,看起來好像ObservableCollection只是真正的UI層(WPF應用程序,在我的情況下)。那是對的嗎?我會更好地使用服務/數據管理器層中的事件(PropertyChanged)嗎?

回答

1

在一個服務中,通常所有的對象都應該只處理當前請求所需的時間,對嗎?因此,通常您在服務層中根本不需要更改通知,因爲該服務會對模型本身執行所有更改。對於下一個請求,將從後備存儲中再次讀取所需的對象。

+0

那麼,說2個用戶界面可以使用相同的服務(通過網絡連接到該計算機)。其中一個用戶界面有一個打開的用戶列表。其他用戶界面通過用戶界面導航以添加用戶。他填寫信息並按下「保存」。目前,它已被添加到數據庫中,用戶的ObservableCollection正在更新。這會導致其他用戶界面也被更新。這就是我想要實現的。 – Joetjah 2013-05-01 08:12:56

+0

在這種情況下,即使沒有請求,服務也需要能夠將數據推送到客戶端。通常情況下,我只是讓客戶端定期輪詢用戶列表的更新,除了在點對點情況下,客戶端本身就是服務器。無論如何,由於服務和用戶界面在不同的計算機上運行,​​並且事件需要活動對象引用,所以無論如何這都無法正常工作。 – hbarck 2013-05-01 08:21:43

+0

好吧,這聽起來夠公平!我還有一個問題。我在我的服務中使用'ObservableCollection',在類之間進行交互(不是UI)。它全部在同一個圖層/設置中,但我仍然遇到有關線程的錯誤。更多信息可以在單獨的問題中找到:http://stackoverflow.com/questions/16211346/threading-in-a-windows-service。但簡而言之:我可以在我的服務中使用ObservableCollection來檢查兩個類之間,還是首選事件是RaiseProperty? – Joetjah 2013-05-01 08:28:25