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

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

系統結構

file

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

  • 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>

幾點必要說明:spa

<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);
                    }

            }

而後就能夠優雅的使用日誌啦!debug

//聲明設計

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

//使用3d

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 發佈

感謝閱讀!

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈
相關文章
相關標籤/搜索