2010-12-16 79 views
0

我建立使用MVVM模式的Silverlight應用程序,但我不明白我在這裏失蹤......堅持MVVM架構問題

  1. ViewsProject(Silverlight應用程序),包含用戶控件和頁面。參考ViewModelsProject。
  2. ViewModelsProject(Silverlight類庫)包含後端的視圖代碼。此外,業務邏輯將駐留在此處。它會參考Models項目。

  3. ModelsProject(Windows類庫)包含:本地數據庫的Ado.net實體模型和構建於實體模型上的WCF RIA DomainService。它的目的是從本地數據庫獲取數據,並通過域服務公開實體。

  4. Web項目:包含ViewsProject的xap。

到目前爲止,我所做的一切都正確嗎?如果是,那麼請幫我理解:

如何在ViewsModel 項目中調用 域服務的方法?如果我參考 ModelsProject,我得到的錯誤是 只有silverlight項目可以添加 。 如果我將ModelsProject更改爲 silverlight類庫項目 那麼我無法添加我的數據庫的實體模型 。

+1

MVVM沒有規定,你需要在單獨的項目中分離出來的模型的ViewModels和視圖。這些都可以在不同文件夾中的同一個項目中生存,並且仍然可以實現MVVM設計。 – 2010-12-16 04:34:07

+0

該解決方案預計會隨着時間的推移而大大擴展,因此爲了節省未來的麻煩,我決定將解決方案分解爲程序集而不是文件夾 – InfoLearner 2010-12-16 04:39:57

+1

先讓它變得容易,並使應用程序正常工作。然後你可以考慮在多個項目/組件之間進行分配。我同意亞倫。 – Jehof 2010-12-16 07:50:57

回答

0

我找出了答案。

將ViewModelsProject(Silverlight類庫)更改爲Silverlight應用程序類型。 在創建項目期間選中啓用Ria服務。

在視圖模型類中,使用ModelsProject添加。 編譯ViewModelsProject。

WCF Ria服務的所有方法都將出現在代碼中。

0

從你的viewmodels恕我直言分離你的看法沒有太大的意義。我已經看到過這種方法,但視圖模型(至少在我的腦海裏)代表了一種比域模型能夠提供的更適合數據視圖的抽象。 ViewModel提供了一個間接層,允許在沒有模型的情況下更改演示文稿,但它不過是一種適配器/控制器混合體,並且與視圖一起生活。

雖則回答你的問題......

通常情況下,你有你SL項目通過從您的視圖的視圖模型指揮致電您的域名服務(通常爲Web服務)。 viewmodel命令將直接或間接地進行Web服務調用。此Web服務確實需要是而不是是SL類庫,因爲它位於遠離客戶端的Web服務器上。

我在這裏感受到你在桌面應用方面的想法。請記住,SL項目運行客戶端,您的數據不在那裏。爲了連接所有這些,你需要一些遠程服務來獲取數據。由於數據不在客戶端,因此常規庫引用不好。

HTH,Stimul8d

+0

我不認爲你理解我的問題。我的問題很簡單:如何從我的Silverlight應用程序中使用WCF Ria服務? – InfoLearner 2010-12-16 17:11:46

+0

也許改變問題的標題,然後cus不清楚。那麼Daniel的回答可能就足夠了。 – Stimul8d 2010-12-17 09:39:29

1

對於客戶端項目使用WCF RIA服務,您需要在項目屬性中設置WCF RIA服務鏈接。

對於使用WCF RIA Services時的項目體系結構中的模塊化和分離, 可以使用WCF RIA類庫。

alt text