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, "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的更多相关文章
- ASP.NET MVC5实现芒果分销后台管理系统(二):Code First快速集成EntityFramework
在上一篇文章中,我们已经搭建了整个芒果后台管理系统整个工程架构,并集成了AutoMapper,日志组件等,接下来我们将使用Entity Framework完善系统的持久化存储部分.这篇EF的构造,我将 ...
- 使用ASP.NET MVC 5快速实现芒果分销后台管理系统(前言)
### 前言 在前一篇文章中,我提到最近要陆续为大家写一些.Net实战技术文章.从今天起,我将围绕一个入门级现实的芒果分销管理系统案例,使用ASP.NET MVC 5,从前端到后端,一步一步为大家呈现 ...
- 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。
下载地址:http://download.csdn.net/download/wulang1988/10039402 最新版 INSPINIA IN+ - WebApp Admin Theme v2. ...
- asp.net EF+MVC+Bootstrap 通用后台管理系统
需要源码,请加QQ:858-048-581 开发环境: VS2012或以上 数据库: SQL Server 2008R2或以上 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
1.任务主界面.任务可以被挂起,启动,和删除.来自著名Quartz扩展 2.任务可以是执行的SQL命令,存储过程,或者是一个后台方法 3.极其复杂的调度任务,循环次数,可以自行设置.并可以间隔执行,比 ...
- 后台管理系统之系统运行日志开发(Java实现)
一,实现运行日志记录在文件中,并实现日志分包记录,项目出问题后方便定位分析.效果如图: 二,代码实现(springboot项目) 只需要在resources目录下新建:logback-spring.x ...
- 后台管理系统之系统操作日志开发(Java实现)
一,功能点 实现管理员操作数据的记录.效果如下 二,代码实现 基于注解的Aop日志记录 1.Log实体类 package com.ideal.manage.guest.bean.log; import ...
- 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 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 任务调度系统界面 http: ...
随机推荐
- HDU1233 还是畅通工程
题目: Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连 ...
- java的Junit单元测试
函数主要分为以下几类: 1.有固定返回值的.用assert 方法即可. 2.修改了状态. (1)修改了数据库中的数据.可以查询数据库(select 语句),看数据是否发生了改变. --原则上应该是用 ...
- GYOJ_1812_股票(stock)
题目描述 2130年,股神巴菲特投胎了!他投胎到你身上! 你作为股神转世,能力比原股神还要强,你可以预测到今后n天的股价.假设刚开始你的手上有1元钱,你想知道n天后你最多可以赚到多少钱.作为股神转世, ...
- Python Web 基础向(四) 浅谈数据层
数据层一般会给人带来一些困扰,在于其定位不准确.聚合Model的工作也可以放在逻辑层做,但会导致逻辑层变重,经常出现大段晦涩代码.因此我的建议是保留Model聚合层,尽管会导致工作量的略微增加,但却可 ...
- python 学员管理系统
需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的 ...
- 同时安装Python2,Python3如何解决冲突问题【官方解法】
使用py -2或py -3命令来区分调用Python启动器 去掉参数 -2/-3如何运行? 每次运行都要加入参数-2/-3还是比较麻烦,所以py.exe这个启动器允许你在代码中加入说明,表明这个文件应 ...
- 从假图片到假新闻,AI就这样“控制”了我们
在评论某位新蹿红的明星时,围观群众总是习惯性地先从长相上来判定,如"像周润发和梁朝伟的合体"."刘德华和郭富城的合体"等--反正比"黄渤和王宝强的合体 ...
- es6this箭头函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 < ...
- 沈向洋|微软携手 OpenAI 进一步履行普及且全民化人工智能的使命
OpenAI 进一步履行普及且全民化人工智能的使命"> 作者简介 沈向洋,微软全球执行副总裁,微软人工智能及微软研究事业部负责人 我们正处于技术发展历程中的关键时刻. 云计算的强大计算 ...
- win10 pycharm快捷键
编辑: 1.复制(行) ctrl + D (光标与需要复制的代码同行) 2.删除(行) ctrl + Y(光标与需要删除的代码同行) 3.光标换行 Shift + Enter(不管光标在该行的哪个位置 ...