Dot-Net
多少業務邏輯屬於 RIA 服務層?
我最近一直在試驗使用 .NET 4.0 的 Silverlight、RIA 服務和實體框架。我試圖弄清楚該堆棧是否適用於我即將進行的任何項目。似乎這些技術對於開發應用程序非常有成效,但我正在努力決定如何建構這個堆棧之上的應用程序。
我遇到的主要問題是,在大多數展示中,我看到的大多數業務邏輯都以 RIA Services 域服務類中的 DataAnnotations 和自定義驗證而告終。這對我來說似乎不合適。我認為域服務基本上是一種美化的 Web 服務,它恰好可以輕鬆地將資訊推送到客戶端。但我所看到的大部分內容似乎都將域服務定位為應用程序中業務邏輯的主要來源。
所以,我的問題:
- 使用此堆棧的應用程序中業務邏輯(規則、驗證、行為、授權)的最佳位置是什麼?
- 是否在架構級別發布了使用此堆棧的任何指南?
我的問題與大型、複雜和長期存在的應用程序有關。顯然,對於只有幾個螢幕的應用程序,這不是問題。
編輯: 我要提到的另一件事是,顯然你可以讓域服務類變得愚蠢,但是你會失去很多被推送到客戶端的自動實體資訊(例如驗證)。然後,如果你輸了,使用 RIA 服務還有什麼意義嗎?
我們的團隊正在 RIA 堆棧之上實施 Silverlight 應用程序。我們決定在 RIA 實體之上建構一個域模型。此外,我們選擇遵循 MVVM 模式來對 UI 互動進行建模。
到目前為止,我注意到以下好處:
- 域類是放置業務邏輯(包括複雜驗證)的好地方。
- 域類使用 RIA 實體和上下文作為數據儲存的介面。
- 域類是根據業務問題建模的,不需要與 RIA 實體建立一對一的關係。
- 簡單的 UI 驗證可以存在於 ViewModel 中。
另一件需要注意的事情是,我們已經實現了自己的並發身份映射,並將臟跟踪推送到 RIA 上下文。
在實踐中,這種架構需要更多的編碼工作,但在可讀性和可維護性方面付出了很多時間。即使對於簡單的 CRUD 應用程序,我也會遵循這種做法。能夠建構更準確地表示問題空間的域模型是一個引人注目的優勢。