採用微軟提供的silverlight+wcf ria service+ado.net entity或者是linqtosql對於開發小的,且業務邏輯不太複雜的系統來說確實很簡單,也很快,在這兩天的學習中,有些小體會,
但採用已有的框架(比如,nhibernate,sprint.net等)一向來都不是我的風格,因為我比較喜歡可控性,雖然說這些框架都是非常好的東西,但畢竟:一、它們都是為全世界服務的,想得太全就必然「不精」,而我的選擇只需要對我自己的系統負責,那裡面太多的東西對我來說要麼沒有用,要麼就太累贅;二、東西是好,但畢竟被封起來了,要增加一些適合自己系統的快速開發功能,就不太容易了。
通過這幾天的學習,我為我自己的系統構架了乙個簡單的框架,因為初入銀光,能力有限,還望大家賜教。
總的架構就是:資料庫+模型層+ui層(檢視+檢視模型層)(這個就是silverlight的mvvm模式).
我主要集中在模型層,將其分為資料庫訪問層,資料訪問層,業務邏輯層和對外服務層,外加乙個公用的實體層。
資料庫訪問層:主要是與資料庫打交道,之所以單獨作為一層,主要是為了實現多種資料庫訪問的支援,當然,在這一層我會提供乙個統一的訪問介面給資料訪問層。
資料訪問層:主要實現具體的業務資料訪問,比如獲取實體等,這一層封裝具體業務sql的訪問,為了避免資料庫sql語句的差異性,這一層,同樣通過統一的介面提供給業務邏輯層來訪問。
業務邏輯層:業務邏輯的控制主要都在這裡,這一層是資料庫型別無關的,一般情況下只對實體或者datatable進行操作。
前面的幾層採用傳統的程式設計方式形成類庫,供其它層呼叫即可。
對外服務層:採用wfc ria service提供服務給silverlight客戶端呼叫。除了一些許可權控制之外,這層基本都是呼叫業務邏輯層。
實體層:就是資料庫表的實體化一層,實現資料庫表與實體類的對映。
上面的層次可能比較多,之所以不用對外服務層做業務邏輯層,主要原因是對外服務層是專門針對silverlight客戶端,其它的應用都沒法訪問。而目前的這種方式的好處就是業務邏輯層以下,winform,web,webservice,wcf等都可以用,有很大的靈活性。
下面是具體的**(類可以分庫存放,有些層太大還可以分工程):
public class dbhelper
catch}}
public class employee_d
}return thelists;}}
public class employee_b
}public listgetentitys()
[invoke]
public string updateemployee(employee_e model)
[invoke]
public int gettemp(employee_e model, string aaa)
}public inte***ce ientitibase
[datamember]
[key]
string keyvalue
}[datacontractattribute(isreference = true)]
public class employee_e : ientitibase
[datamember]
public string employeedesc
[datamember]
[key]
public int employeeid
[datamember]
public string employeename
[datamember]
public int sss
}[datamember]
private dictionary_dicts = new dictionary();
public dictionarydicts
}public string keyvalue}}
Silverlight學習之布局
silverlight布局主要有三種布局方式 grid stackpanel和canvas canvas canvas 採用的是相對定位布局,通過canvas.left和canvas.top兩個屬性來控制元素在canvas中的位置。效果 其中從上往下第乙個按鈕距左50,距上50。第二個距左50,距上...
Silverlight學習之 Canvas物件
首先canvas為silverlight提供的乙個布局元素之一。每個子物件都呈現在canvas區域中。通過指定x和y座標,可以控制物件在canvas中的定位。這些座標以為象素為單位。x和y座標通常使用canvas.left和canvas.top的附加屬性來指定。canvas.left 指定物件與包含...
學習Silverlight最佳部落格
中文blog terrylee 我和未來有個約會 笑看風雲淡 webabcd 英文blog official silverlight website brad adams 首席產品部門經理 s blog nikhil kothari 微軟principal architect s blog jess...