msdn09_capa.JPG

Clique aqui para ler todos os artigos desta edição

 

Desfile de Modas

por Mauro Sant’Anna

O ramo de software, assim como muitos outros, é tomado periodicamente por “modas”. Estas modas manifestam-se através de produtos ou técnicas que prometem resolver uma série de problemas – algumas vezes até criados pela má implementação das modas anteriores.

Usualmente estas tecnologias “de moda” contêm grande dose de verdade e utilidade. O problema é que muitas vezes elas acabam sendo “esticadas” e levadas a lugares onde jamais deveriam ser utilizadas. Aí elas falham espetacularmente e os implementadores culpam à tecnologia e não a si próprios.

Vamos tomar um exemplo, o XML. O XML é uma ótima tecnologia para trocar dados entre diferentes sistemas. Vejamos:

·         O XML é texto, simplificando problemas de conjunto de caracteres (ASCII / EBCDIC) e de “ordenação dos bytes” (“big-endian / little-endian”);

·         Os formatos de datas e o separador decimal são bem definidos;

·         Os dados são “etiquetados”, o que reduz bastante a possibilidade de confusão;

·         Opcionalmente podemos fornecer um “schema XML” (padrão “XDS”), que detalha exatamente o significado de cada etiqueta com base em tipos conhecidos como strings, inteiros, datas etc.

·         O “schema XML” pode fornecer também informações de chaves, relacionamento, obrigatoriedade de campos e até de domínio de valores.

O XML tem, no entanto, uma grande desvantagem: a performance. Um arquivo XML tipicamente tem o dobro do tamanho de uma representação em texto como “delimitado por vírgulas” e umas cinco vezes o tamanho da representação binária equivalente. Evidentemente estas proporções podem variar bastante dependendo dos dados, mas vamos ficar com elas para efeito de comparação. Pelo simples fato de ser maior, gerar, transportar pela rede e depois interpretar tal quantidade de dados sua performance é bem pior que um formato “nativo” (binário), ainda mais se este formato binário já se encontra na memória do computador.

Por estas razões, me parece claro que o uso ideal do XML é para troca de dados entre sistemas diferentes. O XML é um substituto ideal dos velhos e conhecidos arquivos texto. Ele também é a base dos Web Services, que permite que um programa chame outro sem saber em que plataforma o outro programa é escrito. O XML funciona essencialmente como um sistema de tipos capaz de conter dados independentemente da plataforma.

Por outro lado, o XML NÃO é bom para simplesmente substituir um sistema de tipos já existente, como por exemplo para troca de dados dentro de um mesmo programa rodando em um mesmo computador. Neste caso teríamos que pagar o preço de performance sem ter nenhum dos benefícios de interoperabilidade. Por exemplo, se você quiser trocar dados entre uma DLL e um programa desenvolvido pela mesma equipe, basta passar uma instância de uma classe ou “struct”, algo extremamente simples e eficiente.

Outra situação na qual já temos um sistema de tipos bem definido é em bancos de dados relacionais como o SQL Server. Um banco de dados definido em tabelas em banco de dados relacional e acessado por um aplicativo através das “bibliotecas cliente” do banco de dados é algo extremamente eficiente e bem resolvido. Não há vantagens em se colocar uma camada XML no meio só para “usar o XML”. Outro erro é simplesmente descartar o sistema de tipos do banco de dados e armazenar todos os dados como XML dentro da base de dados em campos texto, efetivamente descartando boa parte dos recursos do banco de dados relacional como índices e integridade referencial.

É evidente que podemos ter “bons” e “maus” usos do XML. Não adianta usar o XML “por si só” ou só para colocar em um folheto de marketing dizendo que o produto “é moderno, pois usa XML”.

E como guiar as decisões? Na minha opinião, nada substitui o bom senso. O bom senso é um guia muito melhor do que seguir modas.