1. 概述
系統基於.Net 4.0開發,采用C#語言,開發工具為Microsoft Visual Studio 2010;數據庫采用了Sqlserver2005。
整個系統基於B/S架構,采用了傳統的三層開發模型,數據層采用了ORM,使用的是Mysoft.Data的組件;業務層與表現層之間用了spring.net的IOC組件;表現層采用了Vtemplate組件進行模型與控制、視圖的分離。
2. 解決方案描述
在解決方案中,共分為五個項目。如下圖
2.1. 業務層
BLL解決方案文件夾下,是業務層的兩個項目;
Song.ServiceInterfaces是所有業務層的接口
Song.ServiceImpls 是業務層(Song.ServiceInterfaces)的接口實現。
之所以分成兩個項目,是為了基於面向接口編程,例如當業務層代碼需要變動時,只需要改動實現,不用改動接口。實口與實現類的關系是在Song.Site項目中的web.config中配置的。如下圖
上圖定義了接口名稱,以及其實現類。這里是用了Spring.net的IOC(控制反轉)組件。
2.2. 數據層
Song.Entities是數據實體。
數據層的處理采用了ORM方式處理,這里是用了Mysoft.Data開源組件,網上可以找到下載。使用方法如下:
在Lib解決方案文件夾下,有WeiSha.Data.Generete.exe,雙擊打開。如下圖步驟操作。
生成實體后,在Song.ServiceImpls項目中引用Song.Entities
在編寫時,例如增加一個記錄
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">業務實體</param>
public void Add(Accessory entity)
{
entity.As_CrtTime = DateTime.Now;
Song.Entities.Organization org = Business.Do<IOrganization>().OrganCurrent();
if (org != null)
{
entity.Org_ID = org.Org_ID;
entity.Org_Name = org.Org_Name;
}
Gateway.Default.Save<Accessory>(entity);
}
其中關鍵性語句是 Gateway.Default.Save<Accessory>(entity);
2.3. 表現層
Song.Site是表現層,主要是aspx網頁,Js,css等文件構成。
當在表現層調用業務層代碼時,采用如下示例代碼
Song.Entities.Subject[] subj = Business.Do<ISubject>().SubjectCount(Organ.Org_ID, true, 0);
上述代碼是調用專業的接品,取當前機構下所有專業。
Vtemplate組件的使用
Vtemplate組件實現了模型與視圖的分離,可以通過它來實現更換模板風格等操作。
使用方法是,在Song.Site項目中的.ashx文件繼承於Basepage.cs類,Basepage實現了一個模型與視圖的匹配控制。例如About.ashx的視圖是指向Templates/(當前選中的模板庫)/ About.htm
2.4. 其它項目
Song.Extend是一些擴展類,其中包括用戶登錄等。