AutoMapper 不再是无脑首选的那一天
多年来,AutoMapper 一直是默认选择。你添加 NuGet 包,编写一个配置类,然后就再也不去管它了。但在 2025 年,这种情况对我而言发生了改变。
几乎接连发生了两件事:
- AutoMapper 转向商业化。 2025 年 7 月 2 日,吉米·博加德(Jimmy Bogard)宣布,通过新公司 Lucky Penny Software 推出 AutoMapper(以及 MediatR)的商业版本。对于个人以及年收入低于 500 万美元的公司,它仍然是免费的,但超过这一规模的公司现在需要购买付费许可证。(公告)
-
最后一个可免费修补的版本出现了一个高危通用漏洞披露(CVE)。 CVE-2026-32933(通用漏洞评分系统 7.5,高危)是一个通过不受控递归导致的拒绝服务漏洞:映射深度嵌套的对象图会导致
StackOverflowException(堆栈溢出异常),从而使整个进程崩溃,而在现代 .NET 中,你甚至无法捕获它。问题在于?修复程序已合并到付费版本(15.1.1 / 16.1.1)中。
因此,如果你使用的是免费版本,你就坐视一个已知的拒绝服务漏洞,且没有免费的升级路径。在工作中,这意味着一件事:我们必须从每个项目中迁移移除 AutoMapper。
问题所在:没有人拥有最新的数据
候选方案并不少:Mapperly、Mapster、TinyMapper、AgileMapper,或者只是手动编写映射代码。困难之处不在于寻找选项,而在于确定在生产环境中真正值得信任哪一个,这是一个你需要依靠数据而非感觉来做出的决定。
我去寻找基准测试,却碰壁了:
- 大多数比较都是多年前的。
- 没有任何测试是在 .NET 10 上运行的。
- 库版本已过时,因此结论不再适用。
- 每个人基准测试的场景都略有不同,因此无法进行公平比较。
性能特征会随着每个运行时和每个库的发布而变化。2021 年的基准测试对于 .NET 10 上的 Mapperly 4 几乎没有任何参考价值。我不想要一个静态快照。我想要一些随时间推移保持真实有效的东西。
所以我构建了它。
解决方案:永不过时的基准测试
我构建了一个 BenchmarkDotNet 运行器,用于在一致的场景下测量主要的 .NET 映射库的性能,并配备了一个小型落地页来展示结果。
它与那些“我在 2022 年某个下午基准测试了这些库”的文章有何不同:
- 它在专用的虚拟专用服务器(VPS)上每小时自动运行一次。
- 库版本会自动更新至最新版本,因此数据始终反映你今天实际会安装的内容。
- 结果取最近 3 个月的平均值,以平滑噪声并显示长期趋势,而非单次幸运运行的结果。
- 没有原始 JavaScript 对象表示法(JSON),没有冗长的标记语言(Markdown)文本块,只有干净、交互式的图表。
我测量的内容
四个涵盖你在实际代码中遇到的场景:
| 场景 | 压力测试重点 |
|---|---|
SimpleFlat |
扁平普通旧 CLR 对象(POCO)到 POCO,名称相同 |
NestedObject |
包含嵌套类型的对象图 |
Collection |
映射列表/数组
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
友情链接: 爱名网 杭州电子商务研究院 企通社 epower企服引擎 二十二科技集团 第一商务 域名交易 爱名奖 LTD方法论 营销SaaS 22知协 .Co.Ltd数字门户 ToB总监联盟 网站编辑器 官微名片 丽水山泉 浙工大校友企业家联谊会 站点智能 DMP 西湖龙井茶官网 标诺网 欧朋不锈钢全屋定制 通用站点案例库 索易软件 巨量星球 衡源升业称重 恒齿传动股份 更多
|