欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

程序员文章站 2022-04-15 13:44:36
在构思完系统思维脑图后,小墨回到家中,便摩拳擦掌开始了开发工作。要想迅速完成系统开发,前期系统设计和准备尤其重要,因为小墨做过太多大大小小的业务系统,准备工作也是十分顺利。 系统结构 整个系统工程结构如上,基于传统的三层架构模式(不太懂的快去恶补一下) Web: 基于MVC工程模板搭建,系统模型,视 ......

在构思完系统思维脑图后,小墨回到家中,便摩拳擦掌开始了开发工作。要想迅速完成系统开发,前期系统设计和准备尤其重要,因为小墨做过太多大大小小的业务系统,准备工作也是十分顺利。

系统结构

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

整个系统工程结构如上,基于传统的三层架构模式(不太懂的快去恶补一下)

  • web: 基于mvc工程模板搭建,系统模型,视图,控制器
  • service: 业务
  • repository: 持久化层,集成entityframework
  • tracking:日志组件集成log4net
  • commonutils:公共工具,提供加密解密/序列化/excel处理,提供castle ioc管理

话不多说,直接上干货

集成log4net

虽说李老板的芒果业务系统是如此的简单,可一向有着强迫症的小墨仍然有板有眼的规划系统的各个架构功能,做事尽善尽美是小墨的一贯作风。日志能省吗,当然不能!以下集成log4net.

nuget下载

这里直接右键解决方案nuget中搜索log4net,安装最新版5.2.7

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

日志配置文件

            <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
ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

这里不可避免的用到各个对象的互相转化,当然我们一定不会挨个字段赋值的,很弱,这里我们使用用automapper,因为之后他广泛应用在我们之后的业务中。

nuget引入automapper

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

automapper配置

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

这里因为,我的dto与entity都是简单类型,而且类型都是一致的,所以可以直接map,但是一般在稍微复杂的业务中,dto中经常会嵌套其他dto,或者字段类型也是不匹配的,我们主要使用automapper的以下两个方法去做转换,这里我不做举例了。

formember
resolveusing
    

global.asax.cs系统启动时,启动map配置。这里在service层引入一个automapperinit类,过渡一下调用repository的initialize方法,是为了不想再service层引入automapper包,所有dto与entity的转换在repository里处理

    automapperinit.init();
    

使用automapper
ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

感谢阅读!

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

本文由博客群发一文多发等运营工具平台 openwrite 发布