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

系统结构

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

  • Web: 基于MVC工程模板搭建,系统模型,视图,控制器
  • Service: 业务
  • Repository: 持久化层,集成EntityFramework
  • Tracking:日志组件集成Log4net
  • CommonUtils:公共工具,提供加密解密/序列化/Excel处理,提供Castle Ioc管理

话不多说,直接上干货

集成Log4net

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

Nuget下载

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

日志配置文件

            <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

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

Nuget引入AutoMapper

AutoMapper配置

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

ForMember
ResolveUsing
    

Global.asax.cs系统启动时,启动Map配置。这里在Service层引入一个AutoMapperInit类,过渡一下调用Repository的Initialize方法,是为了不想再Service层引入AutoMapper包,所有Dto与Entity的转换在Repository里处理

    AutoMapperInit.Init();
    

使用AutoMapper

感谢阅读!

另外,也欢迎大家关注我的二维码。更多的职场生活,开发与运维方向的技术精华定期发布,希望您在这有所收获。

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

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

  1. ASP.NET MVC5实现芒果分销后台管理系统(二):Code First快速集成EntityFramework

    在上一篇文章中,我们已经搭建了整个芒果后台管理系统整个工程架构,并集成了AutoMapper,日志组件等,接下来我们将使用Entity Framework完善系统的持久化存储部分.这篇EF的构造,我将 ...

  2. 使用ASP.NET MVC 5快速实现芒果分销后台管理系统(前言)

    ### 前言 在前一篇文章中,我提到最近要陆续为大家写一些.Net实战技术文章.从今天起,我将围绕一个入门级现实的芒果分销管理系统案例,使用ASP.NET MVC 5,从前端到后端,一步一步为大家呈现 ...

  3. 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。

    下载地址:http://download.csdn.net/download/wulang1988/10039402 最新版 INSPINIA IN+ - WebApp Admin Theme v2. ...

  4. asp.net EF+MVC+Bootstrap 通用后台管理系统

    需要源码,请加QQ:858-048-581 开发环境: VS2012或以上 数据库: SQL Server 2008R2或以上   基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级 ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析

    1.任务主界面.任务可以被挂起,启动,和删除.来自著名Quartz扩展 2.任务可以是执行的SQL命令,存储过程,或者是一个后台方法 3.极其复杂的调度任务,循环次数,可以自行设置.并可以间隔执行,比 ...

  6. 后台管理系统之系统运行日志开发(Java实现)

    一,实现运行日志记录在文件中,并实现日志分包记录,项目出问题后方便定位分析.效果如图: 二,代码实现(springboot项目) 只需要在resources目录下新建:logback-spring.x ...

  7. 后台管理系统之系统操作日志开发(Java实现)

    一,功能点 实现管理员操作数据的记录.效果如下 二,代码实现 基于注解的Aop日志记录 1.Log实体类 package com.ideal.manage.guest.bean.log; import ...

  8. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 任务调度系统界面 http: ...

随机推荐

  1. [LC] 17. Letter Combinations of a Phone Number

    Given a string containing digits from 2-9 inclusive, return all possible letter combinations that th ...

  2. log4j.xml配置,包含自定义log4j日志级别及输出日志到不同文件

      一.配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configura ...

  3. 在腾讯云服务器上安装JDK+Tomcat并启动tomcat

    由于Java web项目需要使用到tomcat所以决定在腾讯云服务器(centos7.X)上安装JDK和tomcat,来部署我们的项目. 准备工具: 云服务器:centos7.x+ 本地连接服务器:X ...

  4. Java Design Patterns(2)

    1.Factory Design pattern 工厂设计模式的优点 (1)工厂设计模式提供了接口而不是实现的代码方法. (2)工厂模式从客户端代码中删除实际实现类的实例化.工厂模式使我们的代码更健壮 ...

  5. hexo命令

    2017-09-12 by chenyan 安装 npm install hexo -g #安装npm update hexo -g #升级hexo init #初始化 简写 hexo n " ...

  6. JMeter之BeanShell断言---equals使用

    判断变量是否为root if(!"${User}".equals("root")){ Failure=true; FailureMessage="ER ...

  7. Python时间操作所相关

    相关模块:time,datetime,calendar(日历模块) 获取当前时间: # 获取当前10位时间戳,默认返回为float类型 print int(time.time()) # output: ...

  8. 遗弃.Forsaken.2015.BluRay.720p.x264.DTS-beAst

    ◎译 名 遗弃/落日孤影(台)/赎罪◎片 名 Forsaken◎年 代 2015◎产 地 加拿大/法国/美国◎类 别 剧情/西部◎语 言 英语◎上映日期 2015-09-16(多伦多电影节)/2016 ...

  9. PHP创建缓存文件

    文件操作类 <?php /** 文件操作类 */ class FileIO { /** * 读取目录 * @param string $dirPath dir名称 * @return array ...

  10. [Statistics] Comparison of Three Correlation Coefficient: Pearson, Kendall, Spearman

    There are three popular metrics to measure the correlation between two random variables: Pearson's c ...