InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

AutoMapper 1.0 For .NET Released

作者 Jon Arild Tørresdal 译者 王波 发布于 2010年2月6日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
开放源代码 ,
.NET

Jimmy Bogard编写的开源项目AutoMapper经过一年的开发之后,在近日发布了1.0版本。AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DTO,一般用于ViewModel模式和跨服务范畴。

AutoMapper给用户提供了便捷的配置API,就像使用约定来完成自动映射那样。AutoMapper包含以下功能:

  • 平展
  • 投影
  • 配置验证
  • 列表和数组
  • 嵌套映射
  • 自定义类型转换程序
  • 自定义值转换程序
  • 自定义值格式程序
  • Null值替换

AutoMapper是一款单向映射器。这意味着它并没有内建映射对象支持来回写至原始源,除非用户在更新映射对象之后明确地创建逆向反射。这需要通过设计完成,因为让DTO回写到,比方说:域模型或其他东西,就会更改它的持久性,同时人们也认为它是反模式的。在这种解决方案中,命令消息在双向映射中往往是更好的选择。然而,在某些特定环境中,有人可能会为双向映射辩解,比如:非常简单的CRUD应用程序。一个支持双向映射的框架就是Glue

在AutoMapper的路线图上,对Silverlight和Mono的支持优先在列表中出现。同时“一流的反向映射支持”也赫然在列,故InfoQ询问Jimmy是否准备添加双向映射支持时,他回答道:

就我个人而言,我并不想支持双向映射,当然要支持该项功能确实需要ASP.NET MVC中有一流的ActiveRecord支持(这是Rail仍对微软解决方案在很大程度上存在影响之原因)。如果你看看Rail如何处理表单请求的话,你会发现它是一项非常简洁的事情。我不希望添加该项功能,因为我觉得它违背了很多设计理念,例如:POJO/POCO和域模型模式等。然而,越来越多的人需要一份Silverlight的正式版本。

你认为AutoMapper应该添加双向映射吗?

查看英文原文:AutoMapper 1.0 For .NET Released
 

译者 王波 是匆匆IT过客,涉足于.NET编程技术,潜心研究和译书,与友人共译《C# 3.0揭秘》 。

性能存在一些问题,在使用的时候需要谨慎对待 发表人 刘 生权 发表于
Re: 性能存在一些问题,在使用的时候需要谨慎对待 发表人 Chen Zhen-bao 发表于
Re: 性能存在一些问题,在使用的时候需要谨慎对待 发表人 Meng Edward 发表于
  1. 返回顶部

    性能存在一些问题,在使用的时候需要谨慎对待

    发表人 刘 生权

    AutoMapper确实是个不错的东西,但是在性能上存在问题,使用的时候还是要谨慎。
    Codeplex上还有一个项目叫EmitMapper,效仿AutoMapper,但是不是用反射机制,而是Emit的方式,性能相当不错。不知道有没有哪位老兄试用过EmitMapper?传授一下经验。

  2. 返回顶部

    Re: 性能存在一些问题,在使用的时候需要谨慎对待

    发表人 Chen Zhen-bao

    呵呵,自乐一下,没想到我2005年设计的支持双向映射的OOMapper还成这两个玩意的前辈了。

  3. 返回顶部

    Re: 性能存在一些问题,在使用的时候需要谨慎对待

    发表人 Meng Edward

    我看了OOMapper的源代码也是使用反射机制去映射,而且没有缓存。所以不会列入考虑的范围。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。