Nopcommerce架構淺談之架構層次

来源:http://www.cnblogs.com/tombaur/archive/2017/01/16/6289073.html
-Advertisement-
Play Games

前面談到了系統的文件,從文件結構中我們也可以看出Nop的層次劃分還是非常清晰,下麵我將介紹下Nop的架構層次,並對每個層做簡要的介紹,先看我畫的層次圖。 這個系統基本上按照了ddd的形式做了劃分,我本身對ddd也是新手,可能對更深的研究就比較困難,但是大家可以看到,數據層被做了很嚴格的隔離,充分的從 ...


  前面談到了系統的文件,從文件結構中我們也可以看出Nop的層次劃分還是非常清晰,下麵我將介紹下Nop的架構層次,並對每個層做簡要的介紹,先看我畫的層次圖。

  

 

  這個系統基本上按照了ddd的形式做了劃分,我本身對ddd也是新手,可能對更深的研究就比較困難,但是大家可以看到,數據層被做了很嚴格的隔離,充分的從系統中解耦出來,如果將來換資料庫並不是什麼難事,只需要重寫數據層對數據的實現即可。

  1、Data數據層使用了ef的框架,使用了sqlserver資料庫,具體我會在專門的資料庫專題中詳細解釋。

  2、Nop.Core 層是系統的核心層,或許我們用ddd的意思叫基礎設施層,或許大家會說裡面不是有了基礎設施嗎? 但是我認為基礎設施是整個系統的,這裡的core層更多的是扮演了基礎設施的角色,從緩存的實現、配置、模型等等。後續會具體的研究該部分。

  3、Nop.Service層和webframework層,這兩個比較有意思,為什麼都叫他們服務層? 前者是整個系統的服務層,提供了對每個領域的實現,後者更像是web的的領域服務,提供了web的大量的服務措施。整個系統的妙處在於將這兩部分的服務解耦,當我需要切換成其他的服務模式的時候是非常輕鬆的,你可以通過winform形式實現,也可以通過webapi提供介面,等等的這些都是可以通過 service實現基礎功能。

  4、對於應用層,是非常薄的一層,不涉及到任何領域邏輯的實現,他們只關註前端的整合。

 

  簡要的分析,後續還會繼續對模塊做深入的專題解析,探討他們的實現路徑。

 

  

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在頁面想webApi post json數據的時候,發現webapi不能直接以json的方式接受數據(註:我是沒有發現一個很好的方式來post json數據的);但是可以以數據結構的方式傳遞; 如下: 1 public class Diff 2 { 3 public string Id { set; ...
  • 預設MVC的 View頁面 不參與編譯,當更改view對應model後,view編譯也能通過,或者頁面有錯誤的服務端代碼時也不會報錯。 那麼如何在編譯的時候能讓View中的錯誤也不能通過呢。經過查找找到了方法,本機MVC5.0 適用,其他版本未試。 方法: 一、修改 .csproj 工程文件,用tx ...
  • 1.添加編輯按鈕 打開文件Index.js 【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Views\Category\Index.js】 在actions中添加如下代碼: actions: { title: app.localize('Action ...
  • 今天我們來講一下原型模式。老樣子,我們先舉一個案例: 一、案例 我們找工作,需要投簡歷,一份簡歷是不夠的,我們需要多複製幾分簡歷。 好,我們用簡單的控制台程式來完成上述的需求。 二、演繹 1、第一步演繹 客戶端調用: OK,我們實現了上述的功能,搞了三份簡歷出來。我們可以通過複製粘貼,複製更多分簡歷 ...
  • 雖然已經可以添加商品分類,但還需進行優化,比如:用戶是否輸入、輸入字元串是否有格式限制等等。 打開添加分類按鈕,名稱不輸入任何字元,直接保存,會發現列表添加一條空記錄。在實際項目中,這是不允許出現的事情,我必須對分類名稱進行必填限制,但用戶沒填寫時,給予提示信息。 數據驗證就涉及客戶端和服務端,建議 ...
  • 1.打開Index視圖 頁面中添加一個按鈕,代碼如下: <div class="row margin-bottom-5"> <div class="col-xs-6"> <div class="page-head"> <div class="page-title"> <h1> <span>分類</s ...
  • 今天來講一下工廠方法模式。 大家可能聽著這個模式有點耳熟,是的,前面第一篇博文,我們講到了簡單工廠模式。嗯,他們有的確非常相似,今天我們就拿簡單工廠模式中的案例舉例子即可。 學會了簡單工廠模式,對於工廠方法模式也就自然而然的會了。 大家知道,簡單工廠有個很明顯的缺點,就案例來說,我增加一種演算法,則需 ...
  • IT生涯將近10年,一直對於軟體架構還是將懂非懂,因為每一個團隊的經歷不一樣,所以達到的高度也不一樣,所以經歷決定一個架構師的水平能力(騰訊的架構也不一定適用中小型,做ERP的不一定適合互聯網),也由於行業的特性,所以架構也隨環境,行業特性,團隊水平性而產生裂變,所以說團隊的技術水平決定架構的層次, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...