摘要:
在实际的软件开发项目中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换。例如,一个Web应用通过前端收集用户的输入成为Dto,然后将Dto转换成领域模型并持久化到数据库中。相反,当用户请求数据时,我们又需要做相反的工作:将从数据库中查询出来的领域模型以相反的方式转换成Dto再呈现给用户。有时候我们还会面临更多的数据使用需求,例如有多个数据使用的客户端,每个客户端都有自己对数据结构的不同需求,而这也需要我们进行更多的数据转换。 频繁的数据转换琐碎而又凌乱,很多时候我们不得不做: (1)在两个类型几乎只是名字不同而结构大体相似,却只能以手工的、逐个属性赋值的方式实现数据在类型间的“... 阅读全文
摘要:
AutoMapper的基本使用请参考 :http://www.cnblogs.com/ljzforever/archive/2011/12/29/2305500.html学习一下Nop是如何配置和集成AutoMapper的。IStartupTask.csnamespace Nop.Core.Infrastructure{ public interface IStartupTask { void Execute(); int Order { get; } }}之前的随便介绍了 ITypeFinder实现 , 项目启动时,ITypeFinder会找到... 阅读全文
摘要:
AutoMapper是一个.NET的对象映射工具。项目地址:https://github.com/AutoMapper/AutoMapper。帮助文档:https://github.com/AutoMapper/AutoMapper/wiki主要用途领域对象与DTO之间的转换、数据库查询结果映射至实体对象。使用笔记场景1:源类型BlogEntry,目标类型BlogPostDto,指定属性进行映射(BlogEntry.ID对应于BlogPostDto.PostId)。代码:AutoMapper.Mapper.CreateMap<BlogEntry, BlogPostDto>() .. 阅读全文
摘要:
在NopCommerce中新增一个Domain Model,需要以下几个步骤:1. 新建一个Entity Class (Nop/Core/Domain/Entity.cs)2. 新建一个Mapping Class (Nop/Data/Mapping/EntityMap.cs)3. 新建一个View Model (Nop/Admin/Models/EntityModel.cs 或 Nop/Web/Models/EntityModel.cs)4. 新建Model Validator (Nop/Admin/Validators/EntityValidator.cs 或 Nop/Web/Validat 阅读全文
摘要:
为什么需要分离?我们知道MVC项目各部分职责比较清晰,相比较ASP.NET Webform而言,MVC项目的业务逻辑和页面展现较好地分离开来,这样的做法有许多优点,比如可测试,易扩展等等。但是在实际的开发中,随着项目规模 的不断扩大,Controller控制器也随之不断增多。如果在Controllers文件夹下面有超过两位数controller,即便采用良好的命名 规范,或者用子文件夹的形式区分不同功能的控制器,还是会影响项目的可阅读性和可维护性。因此,在一些场景下,如果能把与某功能相关的文件分离到一个独立 的项目中是非常有用的。譬如网站项目中的前台和后台项目,可以通过此技术分离成两个独立的工 阅读全文
摘要:
IOC和DIIOC中文名被称作控制反转(Inversion of Control),DI被称为依赖注入(Dependency Injection),可参考Martin Fowler的这篇文章来了解这两个概念:IoC容器和DependencyInjection模式。使用控制反转模式开发项目流程是先建立接口,然后再实现类,或许有人不习惯这样的开发方法,但在规模较大的软件架构中,这种方法却可以有效的降低类之间的互相依赖的情况,不但能增加架构的弹性,也能有效的降低软件的复杂度。如果不考虑控制反转的情况,采用直接创建类,并直接在应用层调用该类,如此一来,应用层的对象就会与BLL(业务逻辑层)对象高度依赖 阅读全文