terça-feira, 31 de maio de 2011

Revista ClubeDelphi 129

O Delphi 1 em 1995 introduziu o que conhecíamos por Integrated Database Application Program Interface – IDAPI. Era basicamente um conjunto de bibliotecas DLLs que proviam uma forma unificada de acesso a banco de dados relacionais, principalmente Paradox, produto no qual era incluído. Nas versões seguintes do Delphi a IDAPI se transformou e foi incorporada no BDE – Borland Database Engine, conjunto de bibliotecas baseado em drivers para os principais bancos de dados do mercado da época, incluindo Oracle, DB2, Interbase e SQL Server. O BDE podia ser usado tanto por aplicações Delphi Win32 quanto C++ Builder, ferramenta também da Borland análoga ao Delphi, com o mesmo IDE e framework (VCL), porém com a sintaxe da linguagem baseada no C. O BDE tinha inúmeros problemas bastante conhecidos desde os seus primórdios, que não atenderam a demanda de requisitos básicos que surgiram com a crescente evolução dos sistemas corporativos, baseados em multicamadas (n-tier) e Web. Não era escalável, possui vários bugs com acesso concorrentes, seu mecanismo de update cache era arcaico (em disco, não em memória, pois na época sobrava HD e faltava RAM), existiam bugs conhecidos com alguns tipos de dados de alguns bancos (BLOBs, BCD), tinha problemas quando usado com o MTS/COM+, rodava somente em ambiente Windows (o que era um problema com a política da atual Borland na época de construir ferramentas multiplataforma), além disso era necessário instalar praticamente todo o engine nos clientes mesmo que fosse acessar um simples arquivo DBF. Até era possível levar apenas um driver, mas o processo era complicado. O BDE não rodava bem em rede, o que começou a ser um problema já no Delphi 2, quando surgiram os primeiros conceitos de desenvolvimento client-server. O BDE prendia o cursor de dados do banco, consumindo recursos. No Delphi 5 a Borland lança em seu IDE dois novos frameworks alternativos de acesso a dados, o DbGo, componentes que encapsulam as tecnologias ADO, ODBC e OleDB, e o IBX, para acesso exclusivo e nativo ao Interbase (e algumas versões do Firebird). Ambos também tinham seus defeitos, mas pelo menos tínhamos alternativas (outra era a Zeos, não nativa). O Kylix 1, o Delphi para Linux, trouxe à tona o dbExpress, com a mesma ideia do BDE, um conjunto de componentes bastante semelhantes (baseados em TDataSet), porém com uma arquitetura interna diferente. Usando interfaces e drivers, através de uma camada extremamente fina, era possível fazer uma aplicação se comunicar diretamente com o banco alvo. A cache passou a ficar em memória, no ClientDataSet, sem prender cursores do banco. O framework era multiplaforma, tanto que apareceu no ambiente Windows com o Delphi 6, e está hoje entre nós até o Delphi XE. Ele até deu uns passeios pelo mundo .NET com uma implementação para ADO.NET chamada BDP, mas que se foi junto com o Delphi for .NET (hoje usamos os Prism e os providers nativos do .NET Framework). E desde o Delphi 2009, o DBX faz também parte do lado cliente das aplicações DataSnap, unificando também os diferentes protocolos de acesso. Sem dúvida uma enorme evolução, que você vai poder acompanhar nesta edição, no artigo do Fabrício Kawata, que demonstra os principais recursos do novo dbExpress 4.

Artigos:

Otimização de Commands para WPF
Paulo Quicoli

dbExpress 4
A evolução do modelo de acesso a dados do Delphi
Fabrício Hissao Kawata

Delphi Prism
Melhorias da linguagem – Parte 3
Rodrigo Araujo

Biblioteca madCollection
Muito além de exceptions e hooking
Vitor Luiz Rubio

Padrões Criacionais
Simplicidade com Padrão Builder
Rafael Stavarengo

Visual Studio vs. RAD Studio
Comparativo entre os IDEs, para desenvolvedores Delphi Prism – Parte 3
Rodrigo Araujo

Programação Android
Free Pascal no sistema do Google – Parte 2
Felipe Monteiro de Carvalho

Revista .net Magazine 85

Reflection é um poderoso recurso presente na maioria das linguagens orientadas a objetos que permite inspecionar metadados de objetos em tempo de execução, o que inclui, por exemplo, informações sobre tipos, classes, interfaces e enumerações. O recurso é amplamente utilizado em várias situações. Por exemplo, aplicações que permitem que o usuário altere alguma configuração em um controle de tela, personalizando conforme sua necessidade, podem usar Reflection para isso. Frameworks de persistência normalmente recebem objetos da camada de apresentação, necessitando inspecionar este objeto buscando em runtime informações sobre nomes de propriedades, para então gerar comandos SQL dinamicamente. Isso pode ser feito com Reflection. Muitas vezes o uso do recurso vai de encontro à utilização de Generics, onde temos objetos fortemente tipados. Outros preferem ligar objetos em runtime através de interfaces, uma boa prática. Acredito que a obtenção de uma boa arquitetura de software, expansível, plugável e flexível, seja a combinação harmoniosa de Reflection, Generics e Interfaces. Nesta edição, você vai entender como usar reflexão para criar um mecanismo que é flexível quanto à persistência de dados em diferentes servidores de banco de dados, na matéria do Vladimir Rech.
O Vinicius Quaiato vai apresentar os fundamentos técnicos da plataforma para Cloud Computing da Microsoft, o Windows Azure. O autor apresenta os componentes Compute, Storage e AppFabric, os tipos de aplicação Worker Roles, Web Roles e VM Roles, os tipos de armazenamento Queues, Blobs, Tables e Drive. Na parte prática veja como criar uma solução usando o SDK Tools e o Azure Emulator. Ainda temos a matéria do Sidnei que integra o Azure com o Bing Maps. Já o Fernando traz uma importante abordagem sobre o Windows Communication Foundation – WCF, tratando do gerenciamento de instâncias no servidor, com os modelos PerCall, PerSession e Single. Veja como e quando usar cada um dos modelos suportados pelo WCF.
Muitas boas práticas nesta edição. Além da matéria de capa do Vladimir, temos um artigo sobre Refatoração, do Guilherme Oenning. O autor aborda técnicas para manter um código limpo (sem “mau cheiro”). Refatoração é o nome dado à técnica onde são feitas pequenas alterações a fim de melhorar a legibilidade do código, aumentar o desempenho, melhorar a estrutura do projeto ou remover duplicações sem que isso afete o comportamento externo do software. Lembre-se ainda que o Visual Studio oferece, desde a versão 2005, um menu específico para ajudar na refatoração. O Alexandre Tadashi trata deste que sem dúvida é um dos recursos mais poderosos do WPF – Windows Presentation Foundation, o mecanismo Data Binding, que permite fazer a ligação de dados entre objetos. Para isso, o autor apresenta o uso de boas práticas, como o padrão MVVM (Model – View - ViewModel). Integração Contínua é o assunto do artigo do Juan Lopes, que você vai conferir em nossa sessão Engenharia de Software.

Arigos da edição:

ASP.NET Generic Handlers
Rodrigo Sendin

Bing Maps na nuvem
Criando soluções com Bing Maps e Windows Azure
Sidnei Santiago

Windows Azure
Fundamentos da plataforma de Cloud Computing da Microsoft
Vinicius Quaiato

WCF
Gerenciamento de instâncias
Fernando Rodrigues da Silva

Reflection com Banco de Dados
Como usar os recursos de Reflection para preencher dados de classes
Vladimir Rech

Refatoração
Mantendo uma base de código limpa
Guilherme Oenning

Data Binding
Ligando dados em WPF
Alexandre Tadashi Sato

Integração Contínua
Práticas para facilitar um modelo de trabalho mais fluido
Juan Lopes

Injeção de dependência com Unity
Desenvolvendo com baixo acoplamento
Anderson Santos Gusmão