Os Riscos do AutoMapper no .NET: AutoMapper facilita, mas pode prejudicar a performance da sua aplicação .NET
AutoMapper facilita, mas pode prejudicar a performance do seu software, ainda se performance é um atributo de qualidade a ser considerado. Talvez a melhor estratégia é não utilizá-lo.
Embora a performance possa ser prejudicada, adotar o AutoMapper ainda tem sido uma opção de produtividade para muitos desenvolvedores
Configurando o AutoMapper para fazer mapeamento de objetos
1 2 3 4 5 6 7 |
private static readonly MapperConfiguration Configuration = new(_ => { _.CreateMap<InserirClienteCommand, Cliente>(); }); private static readonly IMapper Mapper = Configuration.CreateMapper(); public static Cliente ToClienteAuto(this InserirClienteCommand command) { return Mapper.Map(command); } |
Como proposto, com poucas linhas de código o mapeamento é feito. Toda facilidade de mapeamento colabora para uma redução da complexidade do código, mas em contra partida, traz problemas de performance.
Ao comparar com o “jeito tradicional” de fazer cópia de um objeto, o risco de “esquecimento” de algumas propriedades pode acontecer. Mas, ao considerar que esse esquecimento facilmente se resolve com validação, seguimos no “jeito tradicional”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public static Cliente ToClienteManual(this InserirClienteCommand command) { var result = new Cliente() { Codigo = command.Codigo, Nome = command.Nome, Documento = command.Documento, InscricaoEstadual = command.InscricaoEstadual, DataDeAbertura = command.DataDeAbertura, Site = command.Site, Cep = command.Cep, Endereco = command.Endereco, Numero = command.Numero, Bairro = command.Bairro, Cidade = command.Cidade, Uf = command.Uf, Telefone = command.Telefone }; return result; } |
Utilizar AutoMapper em cenários críticos pode prejudicar a performance da sua aplicação o tempo para “preencher” e a alocação de recursos em memória são os dois principais indicadores que podem tornar o AutoMapper menos performático.