All posts tagged Arquitetura

Salve, salve, galera,

Hoje vamos falar um pouco sobre TDD, ou desenvolvimento guiado por testes, que vem sendo muito difundido hoje com a adoção das praticas ágeis como o Scrum por exemplo, e que gera também muitas duvidas sobre o que é e como funciona.

O que é TDD ???

O TDD é uma técnica de desenvolvimento ( que visa a qualidade, mas ainda assim é uma técnica de desenvolvimento e não uma técnica de testes unicamente) que inverte a ordem natural das coisas, onde primeiramente o DESENVOLVEDOR (isso mesmo meus amigos, o desenvolvedor escrevendo testes) deve escrever um teste unitário para um método – aqui vale ressaltar que estamos falando em testes a nível de unidade de código, e não testes de interface, usuário, etc – e posteriormente implementamos esse método de modo que o teste passe, antecipando o entendimento do requisito. Observem na imagem abaixo o ciclo do TDD

Read more


Salve, salve galera, hoje vamos falar sobre alguns principios de orientacao a objetos que sao muito uteis no dia-a-dia e que muitos desenvolvedores desconhecem. Se trata dos principios SOLID.

O termo SOLID se trata de uma abreviacao ( ou de um acronimo como preferir) das primeiras letras de 5 principios muito utilizados e que garantem uma maior estabilidade do codigo.

Os princípios são os seguintes:

  • Single responsibility principle (SRP) – Principio da responsabilidade unica ( Veja AQUI )
  • Open/closed principle – Principio aberto/fechado
  • Liskov substitution principle – Principio da substituição de liskov
  • Interface segregation principle – Principio da segregação de interface
  • Dependency inversion principle – Principio da inversão de dependência

Não vou entrar em detalhes deles por que iremos criar um artigo para detalhar cada um.

Ma de maneira geral temos em comum para todos:

  • Alta taxa de manutenção
  • Facilidade de testes
  • Maior aproveitamento
  • Fácil de estender
  • Garantir integridade da aplicação
  • Evitar códigos defeituoso
  • Evitar código duplicados
  • Etc.

Esses princípios parecem óbvios porem poucos desenvolvedores e ate mesmos arquitetos utilizam.

Eles garantem que temos uma padronizam e uma melhor utilização das ferramentas (independente da tecnologia) e que consigamos extrair o máximo delas.

Nos próximos artigos iremos abordar de maneira bem pratica cada um.

Ate a próxima galera.


E ae pessoal ? tudo em cima ????

Nesse post vou mostrar uma ( das varias ) maneiras de criar um repositório de usuários no ASP.NET MVC. Esse recurso pode ser utilizado por exemplo, em conjunto com o recurso de BaseController para controlar o acesso de usuários. Nesse caso iremos trabalhar com Cookies

Bom vamos la, mãos na massa….


namespace Portal.Seguranca
{
    public class UsersRepository
    {
         public static Models.Usuario.Usuario usuarioLogado
         {
              get
              {
                    var usr = HttpContext.Current.Request.Cookies["UserCookieAuthentication"];
                    if (usr == null)
                    {
                          return null;
                    }
                    else
                    {
                          string NovoToken = CryptographyRepository.Descriptografar(usr.ToString());
                          int IDUsuario;

                          if (int.TryParse(NovoToken, out IDUsuario))
                          {
                                return Usuario.getById(IDUsuario);
                          }
                          else
                          {
                                return null;
                          }
                     }
              }
        }

        public static bool deslogar()
        {
               try
               {
                       HttpCookie http = new HttpCookie("UserCookieAuthentication");
                       http.Expires = DateTime.Now.AddDays(-1);
                       HttpContext.Current.Response.Cookies.Add(http);

                       return true;
               }
               catch(Exception ex)
               {
                      throw ex;
               }
        }

        public static bool registrarUsuario(Models.Seguranca.Usuario usr)
        {
              try
              {
                    if (usr == null)
                    {
                        return false;
                    }
                    else
                    {
                        //Criando um objeto cookie
                        HttpCookie UserCookie = new HttpCookie("UserCookieAuthentication");

                        //Setando o ID do usuário no cookie
                        UserCookie.Value = CryptographyRepository.Criptografar(usr.Codigo.ToString());

                        //Definindo o prazo de vida do cookie
                        UserCookie.Expires = DateTime.Now.AddHours(2);

                        //Adicionando o cookie no contexto da aplicação
                        HttpContext.Current.Response.Cookies.Add(UserCookie);

                        return true;
                    }
            }
            catch (Exception ex)
            {
                 throw ex;
            }
       }
    }
}

Desse ponto endiante, pode simplesmente, fazer a chamada da seguinte forma.


Models.Usuario.Usuario usr = UsersRepository.usuarioLogado;

Lembrando que os Coockies de preferencia devem estar criptografados para segurança.

Ate a próxima pessoal.


Tudo beleza pessoa ?

Hoje vou mostrar uma forma de se trabalhar com Login no ASP.NET MVC. Existem varias formas, mas uma que eu acho interessante e simples de se trabalhar é criarmos um Controller Padrão ( aqui chamado de BaseController) do qual todos os outros Controllers herdaram e assumiram a operação de login do mesmo. A validação do Login pode ser feita por sessões, arquivos XML, Cookies , e afins, essa questão depende do gosto do fregues… :D

Mas vamos colocar a mão na massa….


namespace MVC.Controllers
{
     [HandleError]
     public class BaseController : Controller
     {
          [HandleError]
          protected override void OnActionExecuting(ActionExecutingContext ctx)
          {
               base.OnActionExecuting(ctx);

               Models.Seguranca.Usuario usr = UsersRepository.usuarioLogado;

               if (usr != null)
               {
                    //Codigo caso esteja logado.
               }
               else
               {
                     //Codigo caso nao esteja logado.
                     ctx.HttpContext.Response.Redirect("/Login");
               }
           }
      }
}

Pessoal essa uma maneira bem simples, toda vez que um controller que herde de BaseController for chamado o controller ira executar sua operação padrão ( base.OnActionExecuting(ctx); ) e depois o que for programado por nos. E para ver o resultado basta criarmos um Controller da seguinte forma.

namespace Portal.Controllers
{
     public class HomeController : BaseController
     {
         public ActionResult Index()
         {
               return View();
         }
     }
}

Simples não ?

Em um próximo artigo irei exemplificar o código presente no bloco

Models.Seguranca.Usuario usr = UsersRepository.usuarioLogado;

Ate a próxima pessoal.


Salve, salve galera…

E depois de muio tempo, vamos retornando aos posts :D

O post de hoje na verdade é uma dica que fica para os curiosos em arquitetura do SQL Server, bom quando falamos no comando TRUNCATE TABLE todo mundo diz: “Esse comando limpa a tabela sem deixar rastros…”. Bom, mas a verdade não é bem essa, uma vez que quando utilizamos uma transação conseguimos efetuar o ROLLBACK desse comando, o que nos mostra que existem sim rastros do que foi feito.. de forma muito menor, e com muito menos detalhes do que em um comando DELETE, mas sim , o TRUNCATE gera um LOG.