程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 淺談.Net版(C#)的CMP模式 - 一個上線商城的系統架構

淺談.Net版(C#)的CMP模式 - 一個上線商城的系統架構

編輯:關於ASP.NET

商城上線快2、3個月了,一直都懶得寫點東西,在加上雜七雜八的事情也比較忙,所以都沒有把這個系統當時做的整個架構思緒整理清,昨天才從深圳完了兩天回來,怎感覺是要做的事來著.剛開始接觸CMP模式的時候也是看了它幾天,到谷歌百度裡面一搜,我們博客園裡面就有蛙蛙池塘的提高軟件開發效率三板斧之二利用CMP模式一文裡有它的詳細介紹,在這裡我自己也對這個用CMP模式拿來真正上項目時候的問題來做個總結.

項目名稱:惠海IT商城

網址:http://http://www.huihaimall.com/

開發環境:WinXP SP3、IIS5.0、Dreamweaver、VS 2005、SQL-Server 2000

項目描述:項目實現了商品的浏覽篩選(主要是公司做的IT產品)、會員商品收藏、訂購(訂單)、發郵件推薦給朋友、會員積分、收貨地址薄、DIY自主裝機等,業務邏輯全部在本項目中用.NET(CMP)實現,而展示就不一定都是用.net的aspx頁面來做,如DIY裝機就是用Flex生成flash來實現的,但是它們都是同步的(同登陸同注銷,包括會員產品收藏等).還有一個最重要的就是後台管理也是用Flex調用.net來實現的,由於要提供Flex調用的接口,所有還提供了幾個WebService的頁面(關與身份驗證請見:在WebService中使用Session或Cookie---實現WebService身份驗證(客戶端是Flex) ),另外在用JQuery發送Ajax請求的時候頁面傳輸數據時候還有用到Json數據(Flex好象有幾個地方也用到了).

項目解決方案截圖如下:

下面,我對上圖所示以我的了解進行簡要的介紹:

CMPServices 它裡面主要是一些CMP配置和服務的基類,他們對應的名稱和功能內如下所:

名稱 功能描述   CMPConfigurationHandler 繼承自IConfigurationSectionHandler,用來讀取在Web.Config文件內的自定義CMP配置. CommandMapping 命令映射類,用於某一個業務的容器,一般為對應Insert、Delete、Update、Select裡某一個存儲過程名為CommandName,裡面可能包含多個CommandParameter.   CommandParameter 存儲過程參數類,裡面有ParameterName、Size、DbTypeHint等屬性,還有一個ClassMember的屬性,表示對應實體模型的屬性,一般ParameterName為@Name而ClassMember值就為Name(預先配置好的),因為一般存儲過程的參數名就對應數據庫實體模型的列字段.   ContainerMapping 容器映射類,一般為一個業務實體,比如用戶,它裡面就有Insert、Delete、Update、Select這4個CommandMapping,而且它有個key在CMP裡面的映射ID叫ContainerMappingId和ContainedClass對應為實體對象模型名.   ContainerMappingSet 多個ContainerMapping容器映射集合類,裡面的Hashtable可根據ContainerMappingId映射ID的key來匹配ContainerMapping.   PersistableObject 持久對象基類,實體類繼承它能實現對數據的保存(一般為Insert、Delete、Update命令操作).   PersistableObjectSet 繼承自PersistableObject,實現數據持久化保存結果(一般為Select命令操作).   SqlPersistenceContainer 業務的容器基類,構造函數需ContainerMapping,包含Insert、Delete、Update、Select四個虛方法.   StdPersistenceContainer 業務的容器,構造函數ContainerMapping調用父類構造函數,根據ContainerMapping對Insert、Delete、Update、Select四個方法進行具體的實現.  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved