Nopcommerce架構淺談之文件結構


 

應該是在兩年前了,在拜讀園子里大神的文章時偶然了解到有個叫NopCommerce的商城系統,苦於沒有時間,各種耽誤,其中研究過一段時間,也就是一個星期時間,后來又耽擱了,直到最近,隨着項目進入間歇期,終於有時間好好的研究下nop的代碼了,作為優秀的.net B2C商城系統,從系統的架構設計角度出發,具有很強的拓展性,結合DDD思想,我覺得可以對系統有更深入的了解。

今天我就簡單的先將系統解決方案中的項目做拆解,並附上自己的理解。我這里使用的是3.7版本的源碼,官方目前到3.8,整體應該差別不大,可以到官網查看http://www.nopcommerce.com

從四個文件夾說起:

  一、Libraries

這里存放了大量的領域層服務、領域事件、基礎設施等,可以說是整個系統的最核心,我的理解是即使沒有展示層,這里的所有的功能也是完整的,換句話說,如果我將整個系統開發成API,這里地方不需要做額外的改動,只需要api程序調用這里的相關功能就可以實現,絕對的松耦合。

  1. Nop.Core項目

     

    文件沒有顯示齊全,但是可以大概看到,這個項目里存放了大量的通用支撐功能,用ddd的話講應該就叫通用支撐子域,還包括了基礎設施,領域類等。

  2. Nop.Data項目

     

    這個項目里是同數據庫做交互操作的數據層,在ddd里屬於基礎設施一部分,也可以單獨拎出來,以后換數據庫也不是難事。

     

  3. Nop.Service項目

    領域服務,主要進行領域邏輯的實現。這個層的客戶只有應用層,那么應用層在哪里?就在展示層中。其實這個里面並不包括web技術所特有的一些領域邏輯實現,就像我開始講的,web的領域邏輯實現在展示層中的web框架項目中。

  二、Plugins   插件機制是nop系統的一個很大的特色,不需要對系統做二次開發,可以靈活的開發出各種插件應用於系統。這個文件夾下面防止了大量的插件項目。

    從名字就可以看出來了,有支付插件,有留言簿插件,有各種打折促銷插件,這個以后再細說。

   三、Presentation   展示層面,分為后台管理admin項目,前台web項目,web框架項目,他的絕妙之處在於將web框架從領域邏輯層剝離,就像剛才上面所講的,可以將libraries里的服務單獨拿出來用,沒有任何的違和。

        

  這里重點說下Framework,它是對Nop.Service的補充,重點在於對web程序的應用功能進行領域服務的深入。

  四、Tests  大量的測試項目,這個在老外寫的規范的項目里都是必須存在的,但是在國內,猿們為了更快的完成老板交代的任務,基本不會去做單元測試,唉。。。其實這個是絕對好,可以節省大量的時間。

       

 

后面我將逐個進行分析,對於nopcommerce,我的目標不是改裝他,而是更多的學習先進的開發思維,一定要結合ddd思想。

 


免責聲明!

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



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