DEV Community

Cover image for Performance na validação de e-mail em .NET
Márcio Krüger
Márcio Krüger

Posted on

Performance na validação de e-mail em .NET

Todo dev, desde o iniciante até o sênior, já fez uma validação de e-mail, seja em .NET ou em sua linguagem. E Sempre utilizamos a expressão regular para isto.. Não é mesmo?

O .NET vem aprimorando e trazendo novas funcionalidades a cada versão. Você conhece a System.Net.Mail?

No .NET há diferentes maneiras, incluindo Regex, EmailAddressAttribute, RegularExpressionAttribute , MailAddress ou usando bibliotecas externas

System.Net.Mail

Você sabia que pode utilizar o construtor MailAdress que se encontra na biblioteca System.Net.Mail'

Ela segue o padrão RFC 2822 de padrão de envio de mensagem, o E-mail.

Utilizando System.Net.Mail
Basta dar um using de System.Net.Mail e utilizar método abaixo:

public bool CheckEmail_MailAddress() =>
MailAddress.TryCreate("marcio.kgr@gmail.com", out var _);

Benchmark

A pergunta é, se vale a pena utilizar ele ao invés da forma convencional utilizando a expressão regular.

Vamos ao resultado do Benchmark utilizando .NET 7

Benchmark

Veja que dependendo da forma de utilização da expressão regular, ela pode ser muito mais performática.

Considerações

Levando em conta a complexidade de trabalhar com Expressão regular e performance do que o .NET já entrega na biblioteca, é muito interessante a sua utilização

Links: Github ValidacaoEmailBenchmark

Top comments (1)

Collapse
 
georgehvm profile image
George Henrique

Interessante, mas num teste preliminar aqui, usei "MailAddress.TryCreate("marcio.kgr@gmail", out var _)" e retornou true.

Com o regex dá pra amarrar melhor, a pena é que perde-se performance.