Cuide bem do seu domínio! Parte 2

Dando sequência ao post anterior vamos iniciar os testes de validação das nossas entidades com base nas especificações de Alunos e Matriculas.

Passo 13 - Abra o arquivo AlunoTests.cs no projeto de testes. Na barra de menu do Visual Studio clique em TEST -> RUN -> ALL TESTS. A imagem abaixo mostra o resultado na guia Test Explorer, retornando False na classe onde informamos dados inválidos(Aluno_Consistente_False), e retornando True para a classe onde passamos dados válidos(Aluno_Consistente_True).

Continue reading

Cuide bem do seu domínio! Parte 1

Irei abordar nesse post e nos próximos uma forma de iniciar o desenvolvimento de uma aplicação web ASP.NET MVC 5 com base na metodologia do TDD - Test Driven Development, Specification Pattern, DDD e SOLID. Iremos focar na criação das entidades e serviços do domínio aplicando os testes de unidade que irão validar as regras de negócio da aplicação. Portanto, sem CRUD e sem camada de apresentação.

Vamos ao exemplo:
Será criada uma aplicação para cadastro de cursos, alunos e matrículas. Considerar como regras de negócio os dados abaixo:

Continue reading

Entity Framework - DetectChanges

Conforme prometido no post anterior, vou resumir o funcionamento do método DetectChanges do EntityFramework. Para isso, vamos tomar como exemplo a classe de uma entidade Aluno conforme abaixo:

public class Aluno
{
    public int AlunoId { get; set; }
    public string Nome { get; set; }
    public int TurmaId { get; set; }
    public virtual Turma Turma { get; set; }    
}

Não há nenhum trecho no código acima que notifique e mantenha o controle de alteração dessa entidade.

Continue reading

EntityFramework vs NHibernate

UPDATE
Pessoal, fiz uma alteração no código, pois eu estava incrédulo com os números e resolvi estudar um pouco mais o funcionamento do EF. E sim, ele pode ser rápido!

Desabilitei o controle automático de alteração conforme sugerido no site da Microsoft - Entity Framework Automatic Detect Changes

O tempo que era de em média 40 segundo pra inserir 10.000 registros, passou a ser de 3 segundos aproximadamente. No contexto do meu teste, desabilitar esse controle automático é válido. Pode haver alguma implicação quando estivermos tratando de um ambiente mais complexo e principalmente quando estivermos lidando com operações de entidade relacional. Farei uma análise mais aguda sobre o comportamento do EF ao desabilitarmos o Auto Detect Changes. Assunto para um próximo post.

Continue reading

Customizando layout de login no ASP.NET Identity

O ASP.NET Identity é perfeito para gerenciamento de usuários e pode ser customizado facilmente. O MVP Eduardo Pires tem bastante material sobre o Identity que estão me ajudando bastante com os estudos em ASP.NET. Por sinal, tive a oportunidade de fazer o curso online de ASP.NET MVC 5 com ele e recomendo a todos. Ótima didática e conteúdo muito bom.

De fato, é muito simples implementar o gerenciamento de usuários. Por padrão o Identity será configurado se você não remover o recurso de autenticação durante a criação do projeto.

O meu intuito com esse post, é criar um projeto de autenticação customizando o comportamento da aplicação pensando numa aplicação corporativa. Para isso, irei fazer algumas customizações no template de login e também na área restrita contendo painel de admin, registro de usuários e alguns CRUD's básicos.

Continue reading

Como remover popup de autenticação no IE com ADFS 3.0

Para alterar o método de autenticação das zonas de Intra ou Extranet, acesse o powershell no servidor de ADFS e execute:

Get-AdfsGlobalAuthenticationPolicy

adfs01

Execute para alterar pro modo Forms

Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider {FormsAuthentication}

Veja como ficou:

adfs02

Isso fará com que o usuário que tente fazer o acesso com Internet explorer não abra aquela popup horrível. E o melhor de tudo é que a mensagem de erro "A sua senha expirou..." pode ser tratada com um código javascript quando a senha do usuário está expirada. Assim você poderá redirecionar o usuário para alterar a senha em um form na web.

adfs03

 

Até mais !!!