Notícias

Revista PROGRAMAR – 31ª Edição Outubro 2011

5 Comentários

Neste mês de Outubro, ainda com o calor à porta, a equipa da Revista PROGRAMAR não se importa de suar para lhe trazer uma nova edição.

Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre NHibernate com técnicas para software melhor e mais rápido, com a colaboração da comunidade NetPonto.


No artigo da edição anterior abordamos os temas de configuração de NHibernate, diferentes formas de mapear as entidades e diferentes formas de obter os dados da base de dados no contexto do seguinte domínio:

public class Edicao
{
public virtual DateTime DataEdicao {get; set; }
public virtual Artigo TemaDeCapa { get; set; }
public virtual IList<Artigo> Artigos {get;set;}
}
public class Artigo
{
public virtual int Id { get; set; }
public virtual string Titulo { get; set; }
public virtual ISet<Autor> Autores {get;set; }
}
public class Autor
{
public virtual int Id { get; set; }
public virtual string Nome { get; set; }
public virtual string Email { get; set; }
public virtual ISet<Artigo> Artigos {get;set; }
}

Neste artigo vamos ver como podemos aproveitar algumas das funcionalidades mais avançadas do NHibernate para tornar as nossas aplicações mais  eficientes, reduzindo o número de pedidos à base de dados assim como a quantidade de dados que são transmitidos. Em certos momentos iremos usar a ferramenta NHProf para observar a comunicação entre a nossa aplicação e a base de dados.

Performance

Uma das falácias de computação distribuída é de que latência é zero. Na realidade, qualquer chamada a um sistema remoto é ordens de magnitude mais lenta do que a mesma chamada a um sistema local e dentro do mesmo processo. Outra falácia é de que a largura de banda é infinita. Como tal é boa prática reduzir o número de chamadas remotas ao servidor de dados e o tamanho dos dados a receber e enviar se queremos ter aplicações com boa performance
mesmo quando em carga.

Como reduzir o número de chamadas

Um dos casos típicos onde fazemos mais chamadas à base de dados do que o necessário é quando mostramos uma listagem de itens que necessita de dados de mais do que uma tabela:

foreach (var artigo in session.QueryOver<Artigo>().List())
{
var autores = artigo.Autores.Select(a => a.Nome);
Console.Out.WriteLine( “Artigo {0} com autores {1}”,
artigo.Titulo, string.Join(“, “, autores.ToArray()));
}

Neste caso, estamos a mostrar o título de um artigo em conjunto com os autores. Se olharmos para o SQL gerado vemos que por cada artigo vamos à base de dados buscar os autores.

Este comportamento é resultante das capacidades de lazy-loading da biblioteca em conjunto com as configurações por omissão que carregam os objectos de cada relação apenas quando esta é acedida.

Tal comportamento implica que vão ser efectuados no mínimo tantos queries quanto artigos mostrarmos. Qualquer latência no acesso ao servidor de sql aumenta significativamente o tempo de resposta da nossa aplicação, quando na realidade seria possível minimizar as chamadas à base de dados e obter todos os dados de uma só vez.

Nesta 31ª edição, além do artigo completo sobre NHibernate – Técnicas para software melhor e mais rápido, pode ainda encontrar os seguintes artigos:

  • Geração de Números Aleatórios – Parte 1–> O primeiro de 4 artigos do mesmo autor da excelente série «Programação em Lua», desta vez sobre geração de números aleatórios.
  • Programar para Windows Azure –> Conheça alguns detalhes bem como alguns cuidados que deveremos ter em conta quando desenvolvemos para esta plataforma.
  • Programação Orientada a Objectos em Java 6 –> Saiba algumas das melhores práticas e métodos de programação neste paradigma em Java 6.
  • DataBinding em Silverlight 4 –> Conheça o conceito de Databinding na plataforma Silverlight.
  • VISUAL (NOT) BASIC – Primeiros Passos com GDI+ –> Saiba mais sobre a API responsável por tudo o que nos «chega aos olhos» no mundo Windows.
  • CORE DUMP – Martelo <=> Inépcia –>  Neste artigo de opinião, conheça segundo o autor, a origem das falhas nas bases de muitos profissionais de TI.

E ainda em colaboração com a comunidade SharePointPT:

  • Padrão alternativo de Sharepoint –>  Neste artigo da comunidade SharePointPT, saiba como desconstruir as abordagens mais tradicionais, através de uma solução pouco comum através de uma arquitectura que optimiza os módulos de maior interesse para o cenário apresentado.

Nesta edição a Programar continuará também a premiar os autores dos três melhores artigos, dado o sucesso na edição anterior. E os leitores devem dar a sua opinião aqui.

Edição 31 da Programar

Também pode gostar

Comentários

5

Responder a antony Cancelar resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de antony
    antony

    Parabéns pela excelente edição!

  2. Avatar de Tiago
    Tiago

    Eu sei que não tem nada haver com a noticia mas visto vocês serem experts deixo aqui a pergunta aguardando com confiança e ansiedade que possa ser respondida…

    segui este tutorial à risca http://www.youtube.com/watch?v=p9Y-NBg8eto

    aparece a bolinha mas ela nao responde aos comandos…porque?
    se alterar a velocidade inicial (2 em vez de 0) ela movimenta-se mas continua sem responder aos comandos…

    Muito obrigado desde já

  3. Avatar de serva
    serva

    Excelente edição e cheia de pragmatismo , gostei muito da introdução

    Os meus cumprimentos

    Serva

  4. Avatar de click here xD

    Acompanho sempre a revista e sempre me agradou : )