BrnShop開源網上商城第一講:架構設計

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   tar   

原文:BrnShop開源網上商城第一講:架構設計

  首先在此感謝大家對BrnShop項目的支援和鼓勵!我們在發布BrnShop以前曾推測項目會受到不少園友的支援,但沒想到園友們的支援大大超過我們的預測。4天6000次瀏覽,140個推薦,170個評論,8000次下載。看到這些資料後我們內心除了激動外,更多了一份責任。無論將來遇到多大的困難,我們一定要堅持把BrnShop堅持到底!!

  如果你還不知道BrnShop是什麼或還沒有下載源碼的可以點此下載,如果下載源碼後發現商城有bug,也可以點此下載(什嗎?你還是1.0.**版本?我們現在都已經更新到1.0.141版本了!)。

  在開始今天的主題前,有個問題先向大家解釋下:不少園友運行我們的程式後,以為前台頁面功能不完整,於是認為我們的商城是個殘缺品,功能不全。在此我針對這個問題向大家鄭重說明下:不是我們的功能不全,對於一個商城來說該有的功能我們程式都提供了,不信你可以查看下每個控制器及它的動作方法,就會發現你想要的各個功能。只是這些功能預設主題並沒有相應的頁面或糅合進別的頁面去了。我們的預設主題只提供一個示範功能(君沒見Php的ecshop的預設主題更粗糙嗎?)。

  好了,下面進入今天的主題:BrnShop開源網上商城架構設計

  拿到源碼的朋友知道BrnShop解決方案是由4個解決方案檔案夾構成的。它們分別是Libraries,Presentation,Strategies和Plugins,下面是這四個解決方案檔案夾的和介紹:

  

  • Libraries:商城基礎類庫,主要提供系統核心,資料訪問,商務邏輯等功能。
  • Presentation:商城web展示,提供網站前台和後台實現。
  • Strategies:包含各種策略程式集
  • Plugins:包含開發授權,支付等外掛程式。

  通過上面的介紹大家可以看出其實BrnShop的主要功能都在Libraries和Presentation中,而Strategies和Plugins只是提供者外圍的一些服務。到這相信大家的思路就清晰多了,下面依次介紹各個項目:

  BrnShop.Core項目:這個項目是BrnShop最核心的項目,它供應商城最底層,最基礎的服務。首先通過圖片給出各個模組的基本介紹:

  

  • 對於非同步模組,緩衝模組,配置模組,資料模組,郵箱模組,隨機值模組,Session模組,簡訊模組這8個模組來說,BrnShop.Core項目只提供載入和介面,並不包含具體實現。大家請看郵箱模組代碼(其它7個模組的實現原理一樣):
 1     /// <summary> 2     /// BrnShop郵件管理類 3     /// </summary> 4     public class BSPEmail 5     { 6         private static IEmailStrategy _emailstrategy = null;//訊息原則 7  8         static BSPEmail() 9         {10             Load();11         }12 13         /// <summary>14         /// 訊息原則執行個體15         /// </summary>16         public static IEmailStrategy Instance17         {18             get { return _emailstrategy; }19         }20 21         /// <summary>22         /// 載入訊息原則23         /// </summary>24         private static void Load()25         {26             try27             {28                 string[] fileNameList = Directory.GetFiles(System.Web.HttpRuntime.BinDirectory, "BrnShop.EmailStrategy.*.dll", SearchOption.TopDirectoryOnly);29                 _emailstrategy = (IEmailStrategy)Activator.CreateInstance(Type.GetType(string.Format("BrnShop.EmailStrategy.{0}.EmailStrategy, BrnShop.EmailStrategy.{0}", fileNameList[0].Substring(fileNameList[0].IndexOf("EmailStrategy.") + 14).Replace(".dll", "")),30                                                                                        false,31                                                                                        true));32             }33             catch34             {35                 throw new BSPException("建立\"訊息原則對象\"失敗,可能存在的原因:未將\"訊息原則程式集\"添加到bin目錄中;將多個\"訊息原則程式集\"添加到bin目錄中;\"訊息原則程式集\"檔案名稱不符合\"BrnShop.EmailStrategy.{策略名稱}.dll\"格式");36             }37         }38 39     }

  通過以上代碼大家不難看出實現的核心思想就是“約定大於配置”和“策略模式”。這裡的“約定大於配置”大家需要注意下,如果大家想自己實現一個策略,例如郵箱策略(其它策略一樣),請一定要保證符合約定限制,具體就是程式集名一定要滿足“BrnShop.EmailStrategy.{自訂名稱}.dll”格式,命名空間滿足"BrnShop.EmailStrategy.{自訂名稱}"格式,主類名必須是“EmailStrategy”。還有一點就是為了保證策略程式集能正確的編譯到BilShop.Web項目的bin檔案夾中,一定要設定項目產生的輸出路徑為“..\..\Presentation\BrnShop.Web\bin\”

  目前商城預設實現了每個策略,他們的對應關係及介紹如下:

  

  • 當前只有企業版提供NOSQL實現,所以目前Data檔案夾中的NOSQL為空白,後期隨著企業版的開源也會補上NOSQL代碼實現。
  • 外掛程式部分內容比較多,我後面會專門寫一遍部落格介紹。不過大家可以先看看這篇文章http://shazwazza.com/post/Developing-a-plugin-framework-in-ASPNET-with-medium-trust

  BrnShop.Data項目:這個項目主要是通過調用BrnShop.Core項目中的BSPData類來和各種資料存放區做互動,大家可以自己看下代碼,都有注釋,沒什麼難度。PS:前幾天園子裡有個朋友說想用EF替換掉sql語句和預存程序,他當時的替換點是重寫BrnShop.Data項目,在此我不反對他使用EF,只是替換點不應該是BrnShop.Data項目,而是BrnShop.RDBSStrategy.SqlServer策略程式集。

  BrnShop.Services項目:商城的業務功能實現,如果你想找商城某個功能的實現可以來這個項目中找,例如購物車的實現。PS:在BrnShop.Service項目中有個Admin檔案夾,這個檔案夾是商城後台操作要用到的類。

  BrnShop.Web.Framework項目:這個項目主要供應商城web層面的設計。大家可以開啟看一看裡面都是自訂控制器類,分頁,動作篩選器等MVC方面的東西。

  BrnShop.Web.Admin項目:商城網站後台,這個項目的類型是類庫,不是web項目(但mvc的各部分俱全),所以不能直接啟動。PS:關於網站發布問題,這裡提供一個簡單的方法,首先將vs的組建組態改成"release",然後將BrnShop.Web項目中的web.config檔案中的compilation節點的debug屬性設定成“false”,然後重建BrnShop.Web項目,最後把BrnShop.Web項目的檔案夾複製並刪除無用的檔案(例如obj檔案夾下的檔案)到iis中就可以了。

  BrnShop.Web項目:商城網站前台:使用ASP.NET MVC3實現。各個檔案夾或檔案解釋如下:

  

  今天這一篇博文主要是協助大家對BrnShop項目有個整體的認識,下一篇我會介紹下BrnShop的ASP.NET MVC實現。敬請期待!

  有對網上商城程式設計感興趣的朋友,歡迎加入QQ群:235274151,大家可以探討下!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.