ASP.NET MVC5实现芒果分销后台管理系统:系统结构设计,集成AutoMapper,Log4net
Posted dalianmaodada
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET MVC5实现芒果分销后台管理系统:系统结构设计,集成AutoMapper,Log4net相关的知识,希望对你有一定的参考价值。
在构思完系统思维脑图后,小墨回到家中,便摩拳擦掌开始了开发工作。要想迅速完成系统开发,前期系统设计和准备尤其重要,因为小墨做过太多大大小小的业务系统,准备工作也是十分顺利。
系统结构
整个系统工程结构如上,基于传统的三层架构模式(不太懂的快去恶补一下)
- 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, "ConfigLog4net.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,因为之后他广泛应用在我们之后的业务中。
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的主要内容,如果未能解决你的问题,请参考以下文章
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(55)-工作流设计-表单布局
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统--工作流演示截图
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(57)-插件---ueditor使用
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(54)-工作流设计-所有流程监控
构建ASP.NET MVC5+EF6+EasyUI 1.5+Unity4.x注入的后台管理系统-前言与目录(持续更新中...)
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(63)-Excel导入和导出