Byteart Retail V3 - 全新的面向.NET與領域驅動設計的企業應用實踐案例


經過近一個多月的努力,我使用自己的業余時間在V2的基礎上對Byteart Retail案例重新打造,使得V3以一種全新的面貌出現在關注.NET企業級架構和領域驅動設計的讀者朋友面前。與前兩個版本相比,V3無論在界面上,還是在業務方面,甚至是技術方面都有了很大的進步。雖然系統完善了不少,但畢竟我沒辦法將全部時間精力SNAGHTML439a24d都投入在這一開源項目上,所以V3肯定還存在不少缺陷,因此希望朋友們能夠諒解,如果遇到問題,可以自己試着研究並動手解決,我想這樣會對自己有很大的幫助。如果實在無法解決,或者有好的想法和建議,也歡迎在此留言與我聯系。對Byteart Retail不太了解的朋友,可以點擊下面的鏈接以了解前兩個版本的詳細信息,一些相關的設計思路和架構視圖,我就不在此重復了。

EntityFramework之領域驅動設計實踐【后續篇】:基於EF 4.3.1 Code First的領域驅動設計實踐案例

Byteart Retail V2 - 基於Entity Framework Code First的領域驅動設計實踐案例

案例源代碼下載

請【單擊此處】下載本案例的所有源代碼和Visual Studio 2012解決方案文件(zip壓縮包)。很多朋友建議我將本案例轉移到類似codeplex或者GitHub的repository中,由於時間關系,暫時還沒能將其轉移到這些網站中,因此V3仍然以zip包下載的方式提供給大家,還望海涵。我爭取在后續的開發過程中,將其加入codeplex或者GitHub中。

運行案例程序

先決條件

從V3開始,本案例使用Visual Studio 2012開發,因此,要編譯本案例的源代碼程序,則需要首先安裝Visual Studio 2012。由於數據庫采用了SQL Server Express LocalDB,因此,這部分組件也需要正確安裝(如果是選擇完整安裝Visual Studio 2012,則可以忽略LocalDB的安裝)。此外,無需安裝其它組件。

編譯運行

將下載的ByteartRetail_V3.zip文件解壓到一個本地的磁盤目錄下,然后在Microsoft Visual Studio 2012中打開ByteartRetail.sln文件,再將ByteartRetail.Web項目設置為啟動項目后,直接按F5(或者Debug –> Start Debugging菜單項)運行本案例即可。注意:

  1. 如果不打算以Debug的方式啟動本案例,那就需要首先展開ByteartRetail.Services項目,任選其中一個.svc的服務文件(比如UserService.svc)然后點擊右鍵選擇View In Browser菜單項,以便啟動服務端的ASP.NET Development Server;最后再直接啟動ByteartRetail.Web項目
  2. 由於Byteart Retail V3的數據庫采用的是SQL Server 2012 Express LocalDB(默認實例),在程序連接LocalDB數據庫時,LocalDB需要創建/初始化數據庫實例,因此在首次啟動時有可能會出現數據庫連接超時的異常,如果碰到這類問題,則請稍等片刻然后再重試。MSDN上有關於這個問題的描述:

    The first time a user on a computer tries to connect to LocalDB, the automatic instance must be both created and started. The extra time for the instance to be created can cause the connection attempt to fail with a timeout message. When this happens, wait a few seconds to let the creation process complete, and then connect again.

  3. 如果以上述第一點的方式運行ByteartRetail.Web項目並出現與WCF綁定相關的錯誤時,這表示WCF服務並沒有完全啟動,請重新啟動ByteartRetail.Services項目,然后再啟動ByteartRetail.Web項目

登錄賬戶

啟動成功后,就可以單擊頁面右上角的“登錄”鏈接進行賬戶登錄。默認的登錄賬戶有(用戶名/密碼):

  • admin/admin:以管理員角色登錄,可以對站點進行管理
  • sales/sales:以銷售人員角色登錄,可以查看系統中訂單信息並進行發貨等操作
  • buyer/buyer:以采購人員角色登錄,可以管理商品分類和商品信息
  • daxnet/daxnet:普通用戶角色,不能對系統進行任何管理操作

解決方案結構

ByteartRetail.sln包含以下項目:

  • ByteartRetail.Design:包含一些設計相關的圖畫文件,僅供參考,沒有實際意義
  • ByteartRetail.Application:應用層
  • ByteartRetail.DataObjects:數據傳輸對象及其類型擴展
  • ByteartRetail.Domain:領域層
  • ByteartRetail.Domain.Repositories:倉儲的具體實現(目前是基於Entity Framework 5.0的實現)
  • ByteartRetail.Infrastructure:基礎結構層
  • ByteartRetail.Infrastructure.Caching:位於基礎結構層的緩存實現
  • ByteartRetail.ServiceContracts:基於WCF的服務契約
  • ByteartRetail.Services:WCF服務
  • ByteartRetail.Web:基於ASP.NET MVC的站點程序(表示層)

以下是各項目之間的依賴關系:

image

改進的內容

與之前的版本相比,V3更多的是在業務方面有了新的功能,同時在技術方面也有一些改進。

業務方面

  1. 添加了商品分類功能,豐富了原有的商品種類划分
  2. 添加了用戶角色功能
  3. 添加了商品信息的維護功能
  4. 添加了“特色商品”的功能
  5. 完善了訂單狀態
  6. 優化了界面效果,提高了用戶體驗(菜單、分頁等)

技術方面

  1. 使用ChannelFactory實現WCF的調用,替代了原有的直接使用Service Reference的方式,為后續的WCF認證和授權做准備
  2. 在配置文件中加入了與Byteart Retail相關的配置節點,這包括:分頁設置以及角色的映射信息等
  3. 通過AOP攔截的方式引入緩存機制,使用Patterns & Practices Enterprise Library Caching Application Block為WCF服務提供數據緩存機制。在今后的版本更新中將引入Appfabric Cache作為緩存供應者
  4. 更新了倉儲(repository)的接口定義,實現了基於Entity Framework的分頁功能
  5. 演示了Entity Framework 5.0對枚舉(enum)類型的支持

總結

時間關系,暫時先介紹這么些內容,有關技術方面的細節,我打算以系列文章的方式詳細介紹,爭取能夠涉及到Byteart Retail項目的各個角落。Byteart Retail案例將會繼續發展下去,無論在業務方面還是在技術層面,都將會有新的內容加入。我也會根據大家的建議,更早地將其發布到codeplex上,以便大家能夠隨時跟蹤本案例項目的狀態。

其實平時做這些工作的時候,也會要頂着不小的壓力,一方面有時候工作上的事情會很多,當然需要把手頭工作放在首位;另一方面來自生活的壓力,也有周圍的人會覺得我做這些事情也是毫無收益,又是何苦。在此也談談自己的感受吧。雖然國內技術牛人很多,比我技術做的好的也不少,但我們的軟件技術水平跟國際上的一些國家之間還是有一定的差距,當然,“環境因素”暫且放一邊,“國內水平”、“國際水平”的分析也先放一放。我們就說說自己能做的事情,我也不指望自己能夠給目前的這些“現狀”帶來多大的改變,因為自知實力有限,但我覺得我能夠一些事情,或者說能夠給他人帶來一些影響。就拿現在在社區博客中做的事情來說,或許我做的這些能夠影響到他人,比如讓一些朋友少走彎路,或者幫另一些朋友理清了解決問題的思路,我想這就是很好的。你存在於世界上,你對其產生了影響,也算是一種成就。事實上一生中能做的事情是有限的,能做好的更是少之又少,關鍵是貴在堅持吧。最后也感謝一下那些支持我的朋友們。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM