sábado, 4 de setembro de 2010

TECNOLOGIAS APLICÁVEIS AO DELPHI 7

Quando executamos o Delphi® 7, deparamo-nos com uma coleção de páginas organizadas numa paleta contendo centenas de componentes visuais e não visuais. Para quem é neófito no uso dessa ferramenta, dependendo da pessoa, isso pode ser desencorajador ou, contrariamente, desafiante. Até para mim, que já uso o Delphi há alguns anos, todo esse arsenal de recursos ainda apresentava uma certa nublagem.

As questões que me surgiam eram: qual das tecnologias presentes no Delphi é adequada para que propósitos? Quais as relações entre as centenas de siglas existentes neste planeta interconectado e as maneiras de trabalhar, no Delphi, com os recursos que elas representam? Quais dessas tecnologias vão permanecer e quais estão em processo de mutação ou substituição, notadamente para integração às novas plataformas (.NET, por exemplo) e novas concepções do mundo digital (software livre, sistemas independentes de plataforma, etc.)?

O compêndio a seguir visa reunir alguns aspectos marcantes dessas tecnologias, e foi elaborado a partir do livro Dominando o Delphi 7, de Marco Cantù. Essa obra, bastante extensa, considerada “a Bíblia” do Delphi, assim mesmo não alcança toda a profundidade e extensão dos recursos oferecidos por esse ambiente de desenvolvimento, tal a sua abrangência.

Quando produzi este material, tinha em mente apenas a minha própria orientação, mas, ao finalizá-lo, percebi que se foi útil para esclarecer alguns dos meus questionamentos, também poderia (e deveria) ser disponibilizado para a comunidade de desenvolvedores Delphi e quem mais tivesse interesse no tema. Afinal, conhecimento não disseminado não produz energia.

Ao final do artigo, temos um diagrama que mostra visualmente essas relações.


· ODBC (Open DataBase Connectivity):
§ Conectividade de banco de dados aberta, da Microsoft.

§ A Microsoft começou a substituir o ODBC pelo OLE DB em meados dos anos 90, através do COM.

§ É grande, complexo, impõe maiores demandas sobre programador e exige um nível mais alto de conhecimento, em troca de uma produtividade menor.

§ É destinado a ser usado por programadores em nível de sistema operacional.

§ O ADO é a camada sobre o OLE DB e é referido como uma interface em nível de aplicativo, sendo mais simples que esse.


· IDAPI (Integrated DataBase Application Programming Interface): interface de programação de aplicativo de banco de dados integrada, da Borland, mais conhecida como BDE.

· SOAP (Simple Object Access Protocol – protocolo de acesso a objetos simples):
§ Integrante da estrutura de WebServices (vide WDSL).

§ Criado com base no HTTP-padrão para que um servidor Web pudesse manipular os pedidos SOAP e os pacotes de dados relacionados pudessem passar por firewalls.

§ Define uma notação baseada em XML para solicitar a execução de um método por um objeto no servidor, passando parâmetros para ele, e uma notação para definir o formato de uma resposta.

§ É uma pedra fundamental da arquitetura .NET DA Microsoft e também das plataformas atuais da Sun e da Oracle.

§ O SOAP substituirá as chamadas ao COM, pelo menos entre computadores diferentes.


· WDSL (WebServices Description Language – linguagem de descrição de serviços para a Web):
§ Integrante da estrutura de WebServices.

§ Substituirá a IDL e as bibliotecas de tipo usadas pelo COM/COM+.

§ Os documentos WDSL são outro tipo de documento XML que fornece a definição de metadados de uma requisição SOAP.

§ Um WebService normalmente está contido em um servidor Web que usa uma das tecnologias de extensão de servidor Web disponíveis (CGI, ISAPI, módulos Apache e outras).

§ Um módulo WebServices contém pelo menos três componentes básicos:
a) HTTPSoapDispatcher: recebe a requisição da Web, como qualquer outro distribuidor HTTP.

b) HTTPSoapPascalInvoker: realiza a operação inversa do componente HTTPRIO, pois ele pode transformar requisições SOAP em chamadas a interfaces Pascal (em vez de transformar chamadas a métodos de interfaces em requisições SOAP).

c) WSDLHTMLPublish: pode ser usado para extrair a definição WSDL do serviço das interfaces que ele suporta e executar o papel oposto do WebServices Import Wizard.

· Indy (Internet Direct):
§ A página Internet da paleta de componentes do Delphi contém os componentes TcpClient e TcpServer, desenvolvidos em substituição a ClientSocket e ServerSocket, disponíveis em versões anteriores do Delphi. A Borland sugere o uso dos componentes Indy correspondentes.

§ A paleta Indy tem mais de cem componentes. Esses componentes usam exclusivamente conexões com bloqueio (blocking).

§ A base do trabalho com soquetes é o protocolo TCP/IP. Cada conexão de soquete é composto por um endereço IP e a porta TCP. As portas mais comuns são: 80-HTTP; 21-FTP; 25-SMTP; 110-POP3; 23-TelNet. O arquivo services lista as portas padrão.

§ Existem três tipos de conexão:
a) de cliente: são iniciadas pelo cliente e conectam um soquete cliente local a um soquete servidor remoto.

b) de escuta (listening connections): são soquetes servidores passivos esperando por clientes. Quando um cliente faz uma requisição, o servidor gera um soquete dedicado a essa conexão específica e, em seguida, volta ao estado de escuta. Os servidores de escuta indicam a porta que representa o serviço que fornecem.

c) as conexões de servidor são conexões ativadas por servidores, pois elas aceitam uma requisição de um cliente.

§ Os componentes TCP do Indy são: IdTCPClient e IdTCPServer. Coloca-se um deles em um programa e o outro em um programa diferente, configurando-os para a mesma porta e deixa-se que o programa cliente consulte o programa servidor.

§ Os sockets também podem ser usados para operações em bancos de dados remotos, usando DataSnap e SOAP. São adequados para uso em correio eletrônico, protocolos HTTP.

§ Através dos componentes produtores de HTML do Delphi, presentes na paleta Internet, é possível gerar tabelas HTML a partir de tabelas de bancos de dados, usando a tecnologia WebBroker:
a) PageProducer: manipula arquivos HTML nos quais foram incorporadas tags especiais.

b) DataSetPageProducer: extensão do PageProducer, substituindo automaticamente as tags correspondentes aos nomes de campo de uma fonte de dados conectada.

c) DataSetTableProducer: útil para apresentar o conteúdo de uma tabela, consulta o outro conjunto de dados, com pré-visualização em tempo de projeto..

d) QueryTableProducer e SQLQueryTableProducer: são especificamente personalizados para a construção de consultas paramétricas (para o BDE ou dbExpress).


· DataSnap:
§ Arquitetura de multicamada (multitier) física:
a) servidor de dados: instalação e configuração de acesso ao banco de dados;
b) servidor de aplicativos: comunicam-se com o servidor de dados;
c) clientes magros: não se comunicam diretamente com o servidor de banco de dados, mas com o servidor de aplicativos).
§ A vantagem dessa arquitetura é que a configuração do acesso ao banco de dados precisa ser instalada apenas no servidor de aplicativos.

§ Essa arquitetura era chamada Midas.

§ Com o Delphi 7, não é preciso pagar taxa de distribuição para os aplicativos DataSnap.

§ Desenvolvimento cliente/servidor: o banco de dados e o mecanismo de acesso ficam no servidor, reduzindo a necessidade de processamento nos clientes.

§ Exige instalação de bibliotecas específicas na camada intermediária que fornece a seus computadores clientes os dados extraídos do servidor de banco de dados.

§ Não exige um servidor SQL para armazenamento dos dados. Pode servir dados de uma variedade de fontes, incluindo SQL, CORBA e outros servidores DataSnap.

§ Suporta os seguintes protocolos e conexões:
a) DCOM (COM Distribuído), e COM sem estados (MTS ou COM+): oferecem recursos como segurança, gerenciamento de componentes e transações de bancos de dados. Devido a problemas de passagem através de firewalls, até a Microsoft está abandonando o DCOM em favor de soluções baseadas em SOAP.

b) Soquetes TCP/IP: distribuição de clientes através da Web onde não se pode contar com DCOM. Para isso, o computador da camada intermediária deve executar o ScktSrvr.exe, fornecido pela Borland, como aplicativo ou serviço, que recebe os pedidos dos clientes e os encaminha para o módulo de dados remoto, usando COM. Os soquetes não fornecem proteção contra falhas no lado cliente, pois o servidor não é informado e pode não liberar recursos quando um cliente desligar inesperadamente. Apresenta problemas com firewalls.

c) HTTP e SOAP: HTTP simplifica conexões através de firewalls ou servidores proxy (que não gostam de soquetes TCP/IP personalizados). Nesse caso, usa-se um aplicativo servidor Web específico, httpsrvr.dll, que aceite requisições de clientes e cria-se os módulos de dados remotos apropriados, usando COM. Essas conexões Web podem usar segurança SSL. As conexões Web baseadas no transporte HTTP podem usar o suporte de pooling de objetos do DataSnap.

§ O transporte HTTP do DataSnap pode usar XML como formato de pacote de dados, permitindo que qualquer plataforma ou ferramenta que possa ler XML participe. O uso de XML sob HTTP também é a base do SOAP.
§ O componente DCOMConnection pode ser usado no lado cliente para se conectar a um servidor DCOM e MTS, localizado no computador atual ou em outro computador indicado pela propriedade ComputerName. A conexão se dá com um objeto registrado que tem determinado ServerGUID ou ServerName.

§ O componente SocketConnection pode ser usado para se conectar com o servidor por meio de TCP/IP. Deve-se indicar o endereço IP ou o nome do host, e o IntercepGUID do objeto servidor.

§ O componente WebConnection é usado para manipular uma conexão HTTP, que pode passar por um firewall facilmente. Deve ser indicada a URL na qual sua cópia do arquivo httpsrvr.dll está localizada e o nome ou GUID do objeto remoto no servidor.

§ O componente ConnectionBroker pode ser usado como um alias de um componente de conexão real, o que é útil quando se tem um único aplicativo com múltiplos conjuntos de dados-cliente. Para mudar a conexão física de cada um dos conjuntos de dados, basta mudar a propriedade Connection.

§ O componente SharedConnection permite que um aplicativo conecte-se a múltiplos módulos de dados do servidor, com uma única conexão compartilhada.

§ O componente LocalConnection pode ser usado para fazer com que um provedor de conjuntos de dados local atue como a fonte do pacote de dados, permitindo escrever um aplicativo local com o mesmo código de um aplicativo multicamada complexo.

§ Os componentes XMLTransform, XMLTransformProvider e XMLTransformClient se relacionam com a transformação do pacote de dados DataSnap em formatos XML personalizados.

§ O recurso de pooling permite que se compartilhe alguns objetos da camada intermediária entre um número muito maior de clientes, porque quando um cliente não está chamando um método do objeto camada intermediária, esse mesmo módulo remoto pode ser usado para um outro cliente.


· UDDI (Universal Description, Discovery and Integration – descrição, descoberta e integração universais):
§ Esforço para criar um catálogo de serviços Web oferecido por empresas de todo o planeta, objetivando criar uma estrutura aberta, global e independente de plataforma para que as entidades de negócios se encontrem, definam como interagem com a rede Internet e compartilhem de um registro global de negócios, agilizando a adoção do comércio eletrônico na forma de B2B (business to business).

§ Basicamente é um registro global de negócios, incluindo:
a) White Pages: informações de contato, endereços e outras informações.

b) Yellow Pages: registra a empresa em uma ou mais taxonomias, incluindo a categoria industrial, produtos vendidos, informações geográficas e outras.

c) Green Pages: relaciona os serviços Web oferecidos pelas empresas. Cada serviço é relacionado por tipo (chamado Tmodel).

§ A API UDDI se baseia no SOAP.

§ O Delphi 7 inclui um navegador UDDI que você pode usar para localizar um serviço Web ao importar um arquivo WSDL.

· IntraWeb: Desenvolvimento de aplicativos para Web (não sites Web).
§ Propõe-se a programadores que querem apenas criar aplicativos Web no Delphi da maneira como eles criavam aplicativos VCL ou CLX.

§ Os aplicativos criados podem ser usados em um programa WebBroker ou WebSnap.

§ Arquitetura relativamente aberta (o código fonte pode ser adquirido).

§ Disponível para Delphi, Kylix, C++ Builder, Java e .NET (esta última em andamento).

§ Aplicativos IntraWeb podem ser totalmente independentes de plataforma, dependendo de como são desenvolvidos.

§ Ao se trabalhar com WebBroker ou WebSnap, faz-se isso muito no nível de geração de HTML. Quando se trabalha com IntraWeb, faz-se isso em termos de componentes, de suas propriedades e de seus manipuladores de evento, como faz no desenvolvimento visual do Delphi.

§ Podem ser usadas diferentes arquiteturas para criar e implantar aplicativos: o modo application leva em conta todos os recursos da IntraWeb, e pode ser implantado como biblioteca ISAPI, módulos Apache ou modo standalone da IntraWeb. O modo page é uma versão simplificada que você pode ligar aos aplicativos Delphi WebBroker ou WebSnap existentes, e pode ser implantado como ISAPI, Apache, CGI, etc.

§ Incorpora gerenciamento de sessões pré-definido e simplifica o trabalho com elas.

§ Integra-se com WebBroker e WebSnap.


· ModelMaker: Ambiente de Projeto: UML (Unified Modeling Language): ferramenta CASE e de diagramação em UML de ciclo completo extensível, personalizável e específica do Delphi.

· Rave Reports: Geração de Relatórios.

· CLX (Component Library for Cross-Platform): Criação de Sistemas que funcionam em ambientes Windows e Linux (independente de plataforma)

· .NET
§ O Runtime Enviroment da estrutura .NET pode ser baixado gratuitamente no site Web MSDN da Microsoft. O .NET Framework SDK (Software Development Kit), que é mais completo e inclui documentação e ferramentas para desenvolvedores também pode ser baixado dali. Antes de rodar o Delphi for .NET Preview, uma dessas estruturas deve estar instalada.

§ Sob o ponto de vista do programador, o recurso básico da plataforma .NET é o seu ambiente gerenciado, que permite a execução de código intermediário compilado por várias linguagens de programação diferentes (desde que sejam compatíveis com uma definição comum para os tipos de dados básicos). Esse ambiente incorpora muitos recursos, que variam do gerenciamento de memória sofisticado à segurança integrada.

§ A biblioteca de classes cobre diversas áreas de desenvolvimento (formulários baseados no Windows, desenvolvimento para a Web, desenvolvimento de serviços Web, processamento XML, acesso a bancos de dados e muito mais).

§ CLI (Common Language Infrastructure – infra-estrutura de linguagens comum): compreende:
a) CTS (Common Type System – sistema de tipos comuns): cria a fundação para integrar linguagens de programação diferentes. Ela especifica como os tipos são declarados e usados, e os compiladores de linguagem devem ser compatíveis com essa especificação, para aproveitar a integração independente de linguagem da plataforma .NET.

b) Extensible Metadata (metadados extensíveis): Cada unidade (assembly) deve trazer com ela os dados que a identificam completamente (nome, versão, cultura e chave pública opcionais), os dados que descrevem os tipos definidos, os dados que relacionam os outros arquivos referenciados e todas as permissões especiais de segurança exigidas. Pode conter ainda outros elementos.

c) CIL (Common Intermediate Language – linguagem intermediária comum): é a linguagem de programação de um ambiente de execução virtual com um microprocessador abstrato. Os compiladores que têm como destino a plataforma .NET não geram instruções de CPU nativas, mas instruções na linguagem intermediária do processador abstrato. É semelhane aos bytecodes da Java.

d) P/Invoque (Platform Invocation Services – serviços de chamadas de plataforma): Os programas executados no ambiente em tempo de execução da .NET são reproduzidos em sua própria sandbox particular. Existe uma camada grande e complicada de software entre os programas e o sistema operacional. O embiente de execução da .NET não substitui completamente a API Win32, de modo que deve haver uma maneira de fazer a ponte entre os dois mundos.

e) FCL (Framework Class Library – bibliotecas de classe da estrutura): é uma hierarquia de classes semelhante à VCL. Todas as classes, numa aplicação Delphi .NET devem ser herdadas da .NET Fx.

f) PE (Extended Portable Executable – executável portátil extendido): formato usado pelos arquivos-padrão executáveis do Win32 – para dar suporte aos requisitos de metadados da CLI. Assim, o sistema operacional pode carregar um aplicativo .NET da mesma forma que carrega um aplicativo Win32 nativo.

§ CLR (Common Language Runtime – ambiente de tempo de execução de linguagens comum): a CLI é uma especificação e o CLR é a implementação daquela. É uma biblioteca runtime que unifica a grande variedade de serviços oferecidos pelo sistema Operacional Windows e os apresenta ao programador dentro de uma estrutura orientada a objetos. É responsável por todo o universo .NET: carregamento da imagem executável, verificação de sua identidade e segurança quanto a tipos de dados, compilação do código CIL em instruções nativas de CPU e gerenciamento do aplicativo durante sua vida útil. O código CIL que deve ser executado no CLR é chamado de código gerenciado, enquanto o código restante (como o código executável Intel produzido pelo Delphi 7) é não gerenciado.

§ CLS (Common Language Specification – especificação de linguagens comum): é um subconjunto da CTS, definindo regras que governam o modo como os tipos criados nas diferentes linguagens de programação podem interoperar.

· OLE/COM/COM+/DCOM (Distributed Component Object Model):
§ Tecnologia que define uma maneira-padrão para um módulo (aplicativo ou biblioteca) cliente e um servidor se comunicarem, por meio de uma interface específica. Ex.: geração de dados para Excel, Word, AutoCad, um webbrowser, etc.

§ A página Servers da paleta de componentes do Delphi tem os principais servidores de automação DCOM. Os controles ActiveX podem também ser desenvolvidos no Delphi.

· InterBase Express (IBX):
§ Não é um mecanismo de banco de dados independente de servidor, mas um conjunto de componentes para acessar um servidor de banco de dados específico.

§ Esse conjunto de componentes aplica-se a diferentes ambientes (Delphi, Oracle) e plataformas (Linux).

§ Oferecem melhor desempenho e controle, à custa de flexibilidade e portabilidade.

§ Transações: Cada operação de edição/postagem é considerada uma transação implícita, mas deve-se alterar esse comportamento manipulando as transações implicitamente. Deve-se evitar as transações que esperam entrada do usuário para serem concluídas, pois o usuário poderia ficar foram indefinidamente e a transação permaneceria ativa por um longo tempo, consumindo peformance do sistema. Deve-se isolar cada transação corretamente, por meio do nível de isolamento SnapShot para relatórios e ReadCommited para formulários interativos. Uma transação começa automaticamente quanto você edita qualquer conjunto de dados ligados a ela. O comando CommitRetaining não abre uma nova transação, mas permite que a transação atual permaneça aberta.

§ Componentes Ibx: IbSQL: executa instruções SQL que não retornam um conjunto de dados (instruções DDL ou instruções update e delete); IbDataBaseInfo: consultar estrutura e status do banco de dados; IbSqlMonitor: depurador do sistema (o SQL monitor do Delphi é específico para o BDE); IbEvents: recebe eventos enviados pelo servidor.


· Midas (Middle-tier Distributed Applications Services):
§ Serviços de aplicativos distribuídos de camada intermediária.

§ Vide DataSnap.


· WebBroker:
§ Permite a geração páginas HTML com relatórios dinâmicos, a partir de bancos de dados, incluindo contadores de acesso, pesquisas interativas, etc.

· WebSnap:
§ Complementa a base fornecida pelo WebBroker. A diferença básica é que, em vez de ter um único módulo de dados com múltiplas ações eventualmente conectadas aos componentes produtores, o WebSnap tem múltiplos módulos de dados, cada um corresondente a uma ação e tendo um componente produtor com um arquivo HTML anexado.

§ Um aplicativo WebSnap é técnicamente um programa CGI, um módulo ISAPI ou Apache.

§ As vantagens em relação ao WebBroker: permite que cada um de vários módulos Web corresponda a uma página, a integração de script no lado servidor, a XLS (Extensible Stylesheet Language – linguagem de folhas de estilo extensível) e a tecnologia Internet Express. Além disso, existem muitos outros componentes prontos para manipular tarefas comuns, como login de usuários, gerenciamento de sessões, permissões, etc.

§ Oferece um bom suporte à manipulação de conjuntos de dados: o DataSetAdapter conecta-se a um conjunto de dados, através de um ClientDataSet e exibe seus valores em um formulário ou tabela, por meio do editor visual do componente AdapterPageProducer.

§ Além de visualização, permite edição dos dados de formulários.

§ Permite relacionamentos mestre/detalhe.


· ActiveX:
§ Evolução da tecnologia VBX (16 Bits, Delphi 1): componentes da Microsoft para Visual Basic, quando passou a se chamar OLE, ou OCX (que é a extensão usada).

§ Os controles típicos Windows usam uma interface baseada em mensagens, enquanto os objetos de Automação e os controles ActiveX usam propriedades, métodos e eventos (como os objetos do Delphi).

§ Mesmos componentes ActiveX podem ser usados em vários ambientes de desenvolvimento, como Delphi, Borland C++ Builder, etc.


· dbExpress (DBX):
§ Tecnologia de Acesso a Banco de Dados, sem depender do BDE.

§ É chamada camada ‘magra’ de acesso a banco de dados, substituindo o BDE.

§ Baseia-se no componente ClientDataSet (paleta Data Access), o qual tem a capacidade de salvar tabelas em arquivos locais – algo que a Borland tenta vender com o nome de MyBase.

§ Disponível para as plataformas Windows e Linux.

§ Basicamente não exigem nenhuma configuração nas máquinas dos usuários finais.

§ Limitada em termos de recursos: pode acessar apenas servidores SQL (nada de arquivos locais, só se salvá-los localmente); não tem recursos de cache e oferece apenas acesso unidirecional (só para consultas, não inclui, altera, exclui, etc.)

§ Indicada para produção de relatórios em HTML (só consultas).

§ Para uso numa interface de edição de dados, deve ser usado juntamente com um componente Provider (cache e queries), que pode importar dados. É útil para arquiteturas cliente/servidor ou de múltiplas camadas.

§ Acessa muitos mecanismos de bancos de dados diferentes: Interbase, Oracle, MySql (Linux), Informix, Db2, Ms SQL Server, mas enfrenta alguns problemas de diferenças de dialeto SQL.


· ADO (ActiveX Data Objects):
§ Interface de alto nível da Microsoft para acesso a banco de dados.

§ Implementado na tecnologia de acesso a dados OLE DB da Microsoft.

§ Acessa banco de dados relacionais, não relacionais, sistemas de arquivos, e-mail e objetos corporativos personalizados.

§ Independe de servidor de banco de dados, com suporte a servidores locais e SQL.

§ Mecanismo pesado e configuração simplificada. O tamanho da instalação do MDAC (Microsoft Data Access Components) atualiza grandes partes do sistema operacional.

§ Compatibilidade limitada entre versões: obriga o usuário a atualizar os computadores para a mesma versão que utilizou para desenvolver o programa.

§ Apresenta vantagens para quem usa Access ou SQL Server, oferecendo melhor qualidade de drivers que os dos provedores de OLE DB normais.

§ Não serve para desenvolvimento independente de plataforma: não disponível no Linux ou em outros sistemas operacionais.

§ O pacote ADO foi denominado pela Borland de dbGo, e seus componentes principais são: ADOConnection (para conexão ao banco de dados), ADOCommand (para execução de comandos SQL) e ADODataSet (para execução de requisições que retornam um conjunto de resultados). Além desses, existem 3 componetes de compatibilidade: ADOTable, ADOQuery e ADOStoredProc, que podem ser usados para portar aplicativos baseados no BDE. E ainda há o componente RDSConnection, que permite acessar dados em aplicativos multicamadas (multitier) remotos.

§ A Microsoft está substituindo o ADO pela sua versão .NET, a qual se baseia nos mesmos conceitos básicos. Assim, o uso do ADO pode fornecer uma boa preparação para quem caminha na direção de aplicativos .NET nativos (embora a Borland também planeje portar o dbExpress para aquela plataforma).


· ADO .NET:
§ Evolução significativa da ADO, para a arquitetura .NET, voltada a desenvolvimento para a Web.

§ Supre as falhas do COM, que é a base da ADO como por exemplo:

a) o COM é inaceitável como mecanismo de transporte;

b) o COM só roda em ambiente Windows;

c) o COM não penetra firewalls corporativos.

§ A solução para os problemas da ADO veio com o uso de XML.


· ASP .NET:
§ Adoção da arquitetura .NET, voltada a desenvolvimento para a Web.

· MyBase (vide dbExpress):
§ Apropriado para aplicativo de banco de dados monousuário local.

§ Para executar qualquer aplicativo que use ClientDataSet, você precisa implementar a biblioteca midas.dll, (vide Midas) que pode apresentar conflitos de versões.

§ A partir do Delphi 6, a midas.dll pode ser ligada diretamente ao executável pela unidade MidasLib (vide Midas).

§ O componente ClientDataSet suporta os formatos CDS (padrão) e XML (Extended Markup Language).


· MDAC (Microsoft Data Access Components): componentes de acesso a dados da Microsoft
§ É um guarda-chuva para as tecnologias de bancos de dados da Microsoft e inclui ADO, OLE DB, ODBC e RDS (Remote Data Services – serviços de dados remotos).

§ O MDAC é lançado independentemente e disponível para download gratuito e distribuição praticamente gratuita.

§ O Delphi 7 vem com o MDAC 2.6.

§ O MDAC SDK faz parte do Platform SDK do Windows, que pode ser baixado gratuitamente.

§ Estão inclusos no MDAC os seguintes provedores: Drivers ODBC, Jet 3.5 (Access 97), Jet 4.0 (Access e outros DB), SQL Server, Oracle, Serviços OLAP (Online Analytical Processing – processamento analítico on-line), CSV e Texto Simples.


· XML (Extensible Markup Language – Linguagem de Marcação Extensível):
§ É uma versão simplificada da SGML.

§ É extensível porque permite marcas (tags) livres, em contraste com HTML, que tem tags prédefinidas.

§ Existem duas técnicas normais para gerenciar documentos XML em programas Delphi:
a) DOM (Document Object Model – modelo de objetos documento): carrega o documento inteiro em uma árvore hierárquica de nós, permitindo leitura e manipulação.

b) SAX (Simple API for XML – API simples para XML): analisa o ocumento, chamando um evento para cada elemento desse, sem construir qualquer estrutura na memória.


· BDE (Borland Database Engine):
§ Acesso a bancos de dados locais: Paradox, dBase e servidores SQL, bem como tudo o que possa ser acessado por meio de drivers ODBC.

§ A Borland a considera obsoleta, tende a sair do ambiente Delphi.

§ A paleta BDE do Delphi 7 ainda mantém os componentes Table, Query, StoredProc e outros do BDE.


· CORBA (Common Objects Request Broken Architecture): arquitetura de agente de requisições de objetos comuns.
§ Até o Delphi 6, era um mecanismo de transporte para os aplicativos DataSnap. Devido a questões de compatibilidade com as versões mais recentes da solução CORBA da Visibroker da Borland, esse recurso foi descontinuado no Delphi 7.

§ Essa arquitetura foi redirecionada através da transformação de pacotes de dados em XML e entrega dos mesmos a um navegador Web (cria-se uma camada extra: o servidor Web recebe os dados da camada intermediária e os distribui para o cliente). É a arquitetura Internet Express.


· Internet Express: é parte da plataforma WebSnap.
§ Contém um componente-cliente chamado XMLBroker, que pode ser usado em lugar de um conjunto de dados-cliente para recuperar dados de um programa DataSnap de camada intermediária e torná-los disponíveis para um tipo específico de produtor de página, denominado InetPageProducer.

§ É uma arquitetura de quatro camadas: servidor SQL, servidor de aplicativos (o servidor DataSnap), servidor Web com um aplicativo personalizado e o navegador Web.

§ É uma tecnologia para a construção de clientes baseados em navegador, a qual permite enviar o conjunto de dados inteiro para o computador cliente, com o código HTML e algum código JavaScript para manipular o arquivo XML e exibí-lo na interface com o usuário definida pelo código HTML. É o código JavaScript que permite ao navegador exibir os dados e manipulá-los.


· CGI (Common Gateway Interface):
§ Protocolo para a programação de servidores Web, permitindo a geração de páginas HTML dinâmicas.

§ É independente de plataforma, permitindo ao navegador enviar e requisitar dados. Quando o servidor detecta uma requisição de página do aplicativo CGI, ele lança o aplicativo, passa dados de linha de comando da requisição de página para o aplicativo e, em seguida, envia a saída-padrão do aplicativo de volta para o computador-cliente.

§ Os aplicativos CGI podem ser gerados através de várias ferramentas e linguagens, inclusive o Delphi.

§ É limitado aos sistemas baseados no processador Intel.


· APIs:
§ Alternativas ao CGI são o uso das APIs de servidor Web: ISAPI (Internet Server API, da Microsoft); NSAPI (Netscape Server API) ou API Apache. Essas APIs permitem escrever uma biblioteca que o servidor carrega em seu próprio espaço de endereçamento e mantém na memória. Após carregar a DLL, o servidor API pode executar requisições individuais por meios de linhas de execução dentro do processo principal, em vez de iniciar um novo arquivo EXE para cada requisição, como no caso de aplicativos CGI, sendo ainda mais rápidas que estes.

§ No Delphi, essas tecnologias são implementadas através do WebBroker.



Creio que esta síntese possa facilitar aos usuários do Delphi na tomada de decisões, no momento do planejamento de sistemas, auxiliando na escolha das tecnologias apropriadas para os objetivos dos softwares, assim como poderá auxiliar na adequação das aplicações aos recursos de hardware e software disponibilizados pelos clientes. Não tive a pretensão de alcançar toda a abrangência do ambiente Delphi, mas somente fornecer um ponto de partida para orientar a seleção do ferramental, considerando algumas circunstâncias atuais e tendências futuras do mundo do software.

O diagrama a seguir mostra visualmente as relações entre as tecnologias, pacotes de componentes Delphi, linguagens e protocolos de comunicação.

Um pouco sobre Uberaba - MG


Definição
Uberaba
é um município brasileiro do estado de Minas Gerais, na região do Triângulo Mineiro. Sua população, segundo estimativa do IBGE em 2009, é de 296.261 habitantes. A cidade conta com um dos maiores polos industriais do Brasil e o 3° maior de Minas Gerais, está em 8° lugar nas cidades mais populosas de Minas Gerais e a 3° maior em extensão. É uma das cidades que mais crescem no Brasil, contando com mais de 135 bairros. Segundo alguns autores, o topônimo "Uberaba", nome de um rio do município, origina-se do termo tupi "Y-berab" que quer dizer "água clara" ou "rio brilhante".

IDH (indicadores de desenvolvimento humano)

O Índice de Desenvolvimento Humano Municipal - IDH, medido pelo Programa das Nações Unidas para o Desenvolvimento, indica que Uberaba saltou da 9ª para a 4ª colocação em Minas Gerais, num período de 10 anos. Entre os anos de 1991 e 2000, a renda per capita mensal na cidade foi elevada de R$274,75 (duzentos e setenta e quatro reais e setenta e cinco centavos) para R$400,40 (quatrocentos reais e quarenta centavos), analistas mostram que hoje a renda per capita mensal está próxima de R$1.300,00. O PIB per capita em 2009 é de R$ 18.800,00. Sua mortalidade infantil é de 7,06 por mil nascidos e a expectativa de vida da população é de 73,9 anos. A taxa de alfabetização equivale a 95% da população, com dados do Censo 2001.


Fonte: Wikipédia

Falar muito e não dizer nada


Olha só copiei essa, e postei aqui, achei interessante, e se vocês observarem vão notar que muita gente acaba fazendo isso mesmo.

A tabela abaixo permite a composição de mil sentenças: basta combinar, em seqüência, uma frase da primeira coluna, com uma da segunda, da terceira e da quarta (seguindo a mesma linha, ou ‘pulando’ de uma para outra).
O resultado sempre será uma sentença correta, mas sem nenhum conteúdo.
Experimente na próxima reunião e impressione o seu chefe!!!

Programa como falar em público: ‘TECHNICAL EMBROMATION’ !!!