2013-06-21 121 views
1

我还没有看过AutoMapper源代码,但正要对我的解决方案中的API控制器进行一些更改,并有一个想法。ASP.NET Mvc - AutoMapper最佳实践 - 性能

我喜欢编写代码的方式是让我的控制器方法尽可能简洁,例如我使用通用异常属性来处理try{}catch{}方案。

所以只有与控制器动作完全相关的代码实际上在动作方法中。

所以我刚到达的情况下,我需要为方法创建一个AutoMapper地图。我最初以为我会将它添加到控制器构造函数中(如之前所做的那样),以便立即可用。

但是,随着控制器的增长,遵循这种模式可能会引入很多不必要的工作,取决于调用的控制器操作方法。

考虑到每个请求创建和销毁控制器,这可能会变得昂贵。

对此有什么建议?考虑到AutoMapper被静态访问,我想知道它的内部是否超出了请求生命周期,并且它在每次调用CreateMap()时都会在创建新映射之前内部检查现有映射?

回答

3

您应该为每个AppDomain创建一次您的地图(CreateMap),理想情况下是在此域启动时(Application_Start)。

+0

这也使得更多的意义,因为我只是看着'AutoMapper'的源代码,它确实超过了请求的生命期。谢谢Darin – Jammer