ASP.NET MVC5實現芒果分銷後臺管理系統(一):系統結構設計,集成AutoMapper,Log4net

来源:https://www.cnblogs.com/dalianmaodada/archive/2020/03/21/12536429.html
-Advertisement-
Play Games

在構思完系統思維腦圖後,小墨回到家中,便摩拳擦掌開始了開發工作。要想迅速完成系統開發,前期系統設計和準備尤其重要,因為小墨做過太多大大小小的業務系統,準備工作也是十分順利。 系統結構 整個系統工程結構如上,基於傳統的三層架構模式(不太懂的快去惡補一下) Web: 基於MVC工程模板搭建,系統模型,視 ...


在構思完系統思維腦圖後,小墨回到家中,便摩拳擦掌開始了開發工作。要想迅速完成系統開發,前期系統設計和準備尤其重要,因為小墨做過太多大大小小的業務系統,準備工作也是十分順利。

系統結構

file

整個系統工程結構如上,基於傳統的三層架構模式(不太懂的快去惡補一下)

  • Web: 基於MVC工程模板搭建,系統模型,視圖,控制器
  • Service: 業務
  • Repository: 持久化層,集成EntityFramework
  • Tracking:日誌組件集成Log4net
  • CommonUtils:公共工具,提供加密解密/序列化/Excel處理,提供Castle Ioc管理

話不多說,直接上乾貨

集成Log4net

雖說李老闆的芒果業務系統是如此的簡單,可一向有著強迫症的小墨仍然有板有眼的規劃系統的各個架構功能,做事盡善盡美是小墨的一貫作風。日誌能省嗎,當然不能!以下集成Log4net.

Nuget下載

這裡直接右鍵解決方案Nuget中搜索Log4net,安裝最新版5.2.7

file

日誌配置文件

            <configuration>
                <configSections>
                    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
                </configSections>

                <log4net debug="true">
                    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
                        <file value="Logs/Log" />
                        <appendToFile value="true" />
                        <rollingStyle value="Composite" />
                        <staticLogFileName value="false" />
                        <datePattern value="_yyyy.MM.dd.'log'" />
                        <maxSizeRollBackups value="20" />
                        <maximumFileSize value="5MB" />
                        <layout type="log4net.Layout.PatternLayout">
                            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
                        </layout>
                    </appender>
                    <root>
                        <level value="DUBEG" />
                        <appender-ref ref="RollingLogFileAppender" />
                    </root>
                </log4net>
            </configuration>

幾點必要說明:

        <file value="Logs/Log" /> 配置logs列印路徑
        <staticLogFileName value="false" />  配置Log文件名非靜態,因為小墨想每天生成一個Log文件
        <datePattern value="_yyyy.MM.dd.'log'" /> 日誌文件格式 Log_2020.03.20.log

Global.asax.cs里配置Log啟動

        public class LoggerFactory
            {
                    public static void Config()
                    {
                            var baseDir = AppDomain.CurrentDomain.BaseDirectory;
                            var filePath = Path.Combine(baseDir, "Config\\Log4net.config");
                            var fileInfo = new FileInfo(filePath);
                            log4net.Config.XmlConfigurator.Configure(fileInfo);
                    }

            }

然後就可以優雅的使用日誌啦!

//聲明

    ILog logger = log4net.LogManager.GetLogger(typeof(MvcApplication));

//使用

    logger.Info("大青芒管理系統已啟動.");

這裡可以再將ILog包裝下,支持參數化列印日誌,可以在優化下。

集成AutoMapper

首先說明下整個系統的Model,Dto , Entity,根據業務需要定義也是比較簡單,主要分為用戶(代理表),訂單表,所以就有
UserModel/UserInfo/UserEntity
OrderModel/OrdeDto/OrderEntity
file

file

這裡不可避免的用到各個對象的互相轉化,當然我們一定不會挨個欄位賦值的,很弱,這裡我們使用用AutoMapper,因為之後他廣泛應用在我們之後的業務中。

Nuget引入AutoMapper

file

AutoMapper配置

file

這裡因為,我的Dto與Entity都是簡單類型,而且類型都是一致的,所以可以直接Map,但是一般在稍微複雜的業務中,Dto中經常會嵌套其他Dto,或者欄位類型也是不匹配的,我們主要使用AutoMapper的以下兩個方法去做轉換,這裡我不做舉例了。

ForMember
ResolveUsing
    

Global.asax.cs系統啟動時,啟動Map配置。這裡在Service層引入一個AutoMapperInit類,過渡一下調用Repository的Initialize方法,是為了不想再Service層引入AutoMapper包,所有Dto與Entity的轉換在Repository里處理

    AutoMapperInit.Init();
    

使用AutoMapper
file

感謝閱讀!

file

本文由博客群發一文多發等運營工具平臺 OpenWrite 發佈


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

-Advertisement-
Play Games
更多相關文章
  • Spring 整合 Mybatis 在開始使用 MyBatis Spring 之前,需要先熟悉 Spring 和 MyBatis 這兩個框架和有關它們的術語。 MyBatis Spring 需要以下版本: | MyBatis Spring | MyBatis | Spring 框架 | Spring ...
  • Startup構造函數 ConfigureServices方法 Configure方法 在ConfigureWebHostDefaults中直接配置服務和請求管道 ASP.NET Core一般使用Startup類來進行應用的配置。在構建應用主機時指定Startup類,通常通過在主機生成器上調用Web ...
  • 前言 為什麼在開發中,介面文檔越來越成為前後端開發人員溝通的樞紐呢? 隨著業務的發張,項目越來越多,而對於支撐整個項目架構體系而言,我們對系統業務的水平拆分,垂直分層,讓業務系統更加清晰,從而產生一系統平臺和系統,並使用介面進行數據交互。因此可見,業務的不斷發展,介面不斷增多,很多介面各自寄宿在不同 ...
  • 記錄更改控制項外觀學習 更改控制項外觀有三種方法:屬性、Style、ControlTemplate。 Style:可以一次對多個控制項設置屬性。 ContentTemplate: 自定義Control外觀,利用行為更改外觀。 屬性:<Window x:Class="WpfApp1.MainWindow" ...
  • 一、引言 面向介面(抽象)編程,是為了降低程式的耦合度,符合依賴倒置原則。因此典型的三層架構UI、BLL、DAL基於介面設計後,會拓展成UI、IBLL、BLL、IDAL、DAL。在上一篇《C# IoC學習筆記》中我們可以瞭解到,控制反轉(IoC)使對象的創建交給了第三方IoC容器如Unity。利用U ...
  • 面向對象: 面向對象方法是軟體工程、程式設計的主要方向,也是最有效、最實用和最流行的軟體開發方法之一。 C#是完全面想對象(OOP)的程式設計語言,具有面向對象程式設計方法的所有特性。 面向對象方法的基本思想就是從所要解決的問題本身出發,儘可能運用自然的思維方式(分析、抽象、分類、繼承),以現實世界 ...
  • C# Net 使用 openxml 寫入 對象 到 Excel 中 C# Net 使用openxml寫入對象到Excel中 文尾看效果 效果一(模板文件寫入集合對象) 效果二(新建文件寫入集合對象) 加入包:OpenXml 創建文件:ExcelWrite.cs 複製下麵全部代碼到文件 ExcelWr ...
  • 1、下載插件fiddler 獲取代碼,方式:https:////www.cnblogs.com/my2020/p/12458110.html 將左側拖入右側,點擊“Run Code”運行查看是否可行 2、打開VS,新建操作台程式 3、將fiddler中的代碼粘貼進行修改調試 4、進入“屬性”將“控制 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...