在這個系列里我們將學習一般業務系統的整個過程,涉及到從數據庫一直到silverlight頁面的各個方面。示例中遵循我一貫的風格,不采用任何第三方框架。但為了簡單起見,這里不考慮多種數據庫支持(其實多種數據庫支持在可以利用存儲過程的情況下,非常簡單,封裝一個數據庫訪問層即可),同時為了減輕貼圖的壓力,我們假設各位對于基本的silverlight的程序創建沒有任何問題。下面是整個程序的大致框架:

1)數據庫:示例中采用sqlserver.
2)應用服務層:分為4.5層,其中實體層是大部分層次都需共享的,因此力求簡單,干凈(除了必要的屬性外,不要給實體任何方法),其它4層一次是:
A)數據庫訪問層:封這一層的目的一是為了簡化數據訪問層訪問數據庫的接口,二是為了支持多種不同類型的數據庫;
B)數據訪問層:這層主要是提供各種業務數據的訪問包括查詢,修改,刪除,新增等。這一層的目的是為了使得業務邏輯層對數據的訪問數據庫無關(是不是數據庫,何種數據庫都可無關),并使得業務層在業務邏輯處理過程中可以采用搭積木的方式進行,有利于復雜業務邏輯的處理和復用。
C)業務邏輯層:負責處理業務邏輯,同時RIA服務層數據需要規整也在此進行封裝,如果業務邏輯同時涉及到多個數據,也可以在這里通過創建不同的數據訪問實例來實現。
D) WCF RIA 服務層:主要負責對Silverlight客戶端提供服務,同時檢查客戶端與服務端調用的安全,注意這一層除了安全檢查外,不進行任何業務邏輯處理,而是直接調用業務邏輯的相應方法。
以上的分層好處是:業務邏輯可以除了提供給RIA服務層外,其實對于Aspnet,webservice,Winform等都是適用的,可以最大限度的復用業務邏輯。
3)SilverLight客戶端:分4層,依次是實體與服務代理層,模型層,視圖模型層,視圖層。
A)實體與服務代理層:這層包括自動生成的實體和服務代理,主要負責與服務端得遠程服務調用。
B)模型層(M):負責處理數據緩存,負責處理調用服務代理層的服務。增加這一層的目的就是要使得對于VM層而言,數據是來自本地還是網絡服務不再關心,畢竟silverlight屬于富客服端技術體系;
C)視圖模型層(VM):負責視圖的模型數據組織,并提供一定的對視圖的控制功能。
D)視圖層(V):與客戶交互,并將交互情況及時反饋給VM層。