Home
    Artigos
    Palestras
    Notícias
    Downloads
    Livros
    Lista-Discussão
    Cadastre-se
    Parcerias
    Quem Somos
    Anuncie
   Fale Conosco
 
Lay-Out www.creative3.com.br
   Visitantes On-line 13 Usuário(s) Pesquisa Rápida

Artigos

ASP.NET no Delphi 8

Por Ricardo Ferreira

Introdução

Neste artigo iremos discutir como funciona o framework do .NET para a web, o ASP.NET, bem como alguns conceitos de ADO.NET, o middleware de acesso a banco de dados oficial da plataforma .NET.

Iremos ver também como criar um exemplo de ASP.NET usando o Delphi 8, a mais nova versão do Delphi, agora totalmente voltando para a plataforma .NET.

Apresentação da Tecnologia

O ASP.NET é um ambiente de programação para se construir aplicações para Internet com o HTML de front–end. O ASP.NET é uma evolução do antigo ASP (Active Server Pages), com algumas melhorias na parte de execução servidora, integração com a plataforma .NET, acesso aos principais objetos do COM (Component Object Model), e muito mais.

Web Services, é uma parte opcional do ASP.NET, que é uma tecnologia de processamento de mensagens em XML, para implementar comunicação entre aplicações legadas, e ainda existe o ADO.NET, parte do .NET para acesso a banco de dados.

Arquitetura do ASP.NET

Os componentes principais da arquitetura .NET, são os WebForms, os controles ASP.NET e o código por trás das DLL’s compiladas (Antigas ISAPI). Esse código compilado, possue toda a lógica da aplicação, e que pode ser escrita em qualquer linguagem de programação que implemente os conceitos do .NET.

Esse código quando executado dentro do servidor web é renderizado a transformando em código HTML, que vai para o browser do cliente.

Componentes WebForms

Os WebForms definem a interface com o usuário para a sua aplicação web, contendo código HTML puro. A função deles é apenas definir a camada de apresentação, de forma que o acesso à lógica da aplicação seja simples e clara para o desenvolvedor.

Para se melhor entender o que são WebForms, vamos ver um pouco da evolução do desenvolvimento web no Delphi.

Um dos maiores problemas no desenvolvimento web feito nas edições anteriores do Delphi, era conciliar o código das regras de negócio, com a camada de apresentação. Por exemplo, quem lembra do bom e velho WebBroker. Nele, tínhamos que criar páginas HTML separadas, e criar diversos objetos Actions para manipular os requests da aplicação, e código do tipo Request.ContentFields.Values['nome'], eram constantes na aplicação, ou seja, tínhamos que amarrar nomes de controles da página, dentro da lógica da aplicação no WebModule.

Daí surgiu na versão 6.0 do Delphi, o conceito de WebSnap, um framework para agilizar o desenvolvimento web, de tal forma que ela fosse escrita Snap (“Num piscar de olhos”). A principal idéia do websnap era abstrair a camada de apresentação, o front-end, a partir das regras de negócio. Então se usava componentes conhecidos como adapters, que podiam representar os dados, de qualquer natureza, mesmo de componentes DataSets.

Ai com certeza, o desenvolvimento web deslanchou, o desenvolvimento era mesmo RAD, principalmente depois da chegada do IntraWeb, que fez com que toda a complexidade do WebSnap fosse ofuscada pela enorme facilidade de se trabalhar com forms web.

Bom meus caros leitores, vocês podem estar pensando, se estava funcionando tudo tão bem, porque a Borland lança uma nova versão do Delphi, totalmente diferente (Particularmente mais simples), ao invés de continuar o bom trabalho que havia feito nas edições anteriores?

A resposta para essa pergunta é: Evolução. O que a Borland fez com o Delphi, foi simplesmente acompanhar a plataforma do sistema operacional Windows. A plataforma imperante até a edição do Windows XP, era a Win32, plataforma de 32 bits, baseada em diversas API’s.

O.NET, nada mais é do que mais uma plataforma de desenvolvimento, e também uma plataforma de sistema operacional. Para se entender isso mais facilmente, pense no .NET como se fosse as 500 milhões de DLL’s e APIS do Windows antigo, só que agora num contexto mais claro, simples e eficaz.

Pensando sempre na facilidade do desenvolvedor, a Borland fez com que o Delphi não ficasse de fora nessa nova plataforma do Windows. Por isso mudar o Delphi, e não como muitos pensam, que foi meramente para dificultar a vida dos desenvolvedores.

Com o ASP.NET podemos fazer tudo que fazíamos com todas as tecnologias web anteriores do Delphi, só que sem se preocupar com a relação camada de negócio, e camada de apresentação, se preocupar apenas com a camada de negócio que é o que mais interessa. Uma das coisas mais fascinantes que vi no ASP.NET, além da grande facilidade do seu desenvolvimento, é como ele trabalha com validações a nível de cliente (Browser) e servidor (Web Server).

Ele possue componentes que simplificam 100% o desenvolvimento da camada de validação de dados, na camada cliente (JavaScript / VBScript), ou camada servidor (Delphi).

Web Controls

Outra grande novidade do ASP.NET for Delphi, é os WebControls. Eles são conjunto de componentes Web que simplificam o desenvolvimento de interfaces web, com um rico leque de componentes. Seu funcionamento é muito parecido como os famosos componentes Data-Aware do Delphi (DBEdit, DBGrid, DBNavigator). São componentes que se ligam com o componente DBWebDataSource, que é o componente responsável por acessar o famoso DataSet.

Isso significa que o desenvolvimento para web com Delphi, pra quem já está acostumado com desenvolvimento de aplicações simples no Delphi, é quase que instantâneo seu aprendizado.

Dentre outras coisas, algumas vantagens que posso citar de se usar os WebControls, é a facilidade de você desenvolver a aplicação em tempo de design, sem ter que executar a aplicação para ver o resultado da interface. O IDE do Delphi foi modificado para você trabalhar de forma simples e clara.

Ele também automaticamente posta as alterações feitas nos controles para o DataSet usado, sem a necessidade de se escrever código extra para isso. Igual como acontecia com componentes como o DBGrid.

As mudanças de estado do DataSet também são tratados automaticamente entre sessões. Isso significa que usuários de diversas estações poderão operar na aplicação sem interferir nas outra estações.

ADO.NET

ADO.NET é a mais nova versão do middleware da Microsoft para acesso a dados de SGBD’s e Arquivos XML, só que com acesso total para qualquer dos componentes do .NET, seja os WebForms, WinForms ou mesmo objetos WebServices.

O Delphi provê para o desenvolvedor alguns componentes que a Borland denomina de Borland Data Providers (BDP). Esses componentes fornecem uma abstração básica para os objetos do ADO.NET, o que facilita bastante a representação do mesmo, dentro do IDE do Delphi.

Se você estiver acostumando a trabalhar com desenvolvimento de aplicações RAD, programação orientada a objetos usando o conceito de propriedades, métodos e eventos, você vai achar o desenvolvimento com ADO.NET muito familiar.

Em artigos posteriores, irei tratar de forma mais aprofundada o ADO.NET, mas agora, vamos ver o como funciona o ASP.NET dentro do Delphi.

Primeiro exemplo de ASP.NET no Delphi 8

Neste primeiro exemplo, iremos conectar com um banco de dados Interbase, e mostar uma interface de acesso a dados, usando ASP.NET e os WebControls do Delphi 8.

Para implementar esse exemplo, você irá precisar ter instalado em seu computador o IIS, deverá ter o Framework do .NET, o SDK e o Runtime do .NET, bem como o Delphi 8. É de extrema importância que você instale o IIS antes de instalar o Delphi 8 e o framework em si, pois poderão ocorrer problemas na execução dos testes do exemplo.

Abra seu Delphi 8. Dentro dele, vá em File -> New -> ASP.NET Web Application. Isso irá abrir a caixa de diálogo de criação de aplicação web no Delphi.

Nesta caixa, você irá definir como será a configuração da sua aplicação web, qual servidor web será usado, bem como o nome da aplicação em si. Na caixa ‘name’, digite: ‘ExemploAspDotNet’. Na caixa ‘Location’, pode deixar como padrão que deve ser algo do tipo: <Drive>:\InetPub\wwwroot\ExemploAspDotNet.

Essa é a configuração default onde todas as aplicações em ASP.NET devem ser hospedadas. O servidor usado no exemplo será o IIS.

Clique em OK. Será criada uma página em branco dentro do IDE do Delphi. Nessa página, você poderá montar toda a sua interface web, que o Delphi irá automaticamente fazer a conversão para HTML, e ASP.NET.

Observe que no painel inferior do IDE central do Delphi, existem 3 guias. A primeira informando o nome do arquivo .aspx, que é realmente nossa página ASP.NET, a segunda é a unit em si que define nosso WebForm e a ultima guia mostra o Designer, ou seja, a parte do IDE do Delphi em que podemos criar visualmente a aplicação.

Configurando a conexão com o Banco de Dados

Antes de começar a montar nossa interface web, iremos montar a conexão com o banco de dados, usando os Borland Data Providers (BDP). Para fazer isso, acesse o Project Manager, que fica no painel superior direito do IDE do Delphi. Clique em Data Explorer.

Aqui se encontram alguns providers já pré-configurados para se trabalhar no Delphi. Aqui podemos criar novas conexões, ou as existentes. Vamos então configurar uma conexão com o banco de dados Interbase ‘Employee.GDB’. Expanda o item Interbase, irá aparecer a conexão chamada ‘IBConn1’. Clique com o botão direito em cima dele, e selecione ‘Modify Connection’ para alterar as configurações na conexão. Se você quisesse criar uma nova conexão, basta clicar com o botão direito do mouse em cima do Item ‘Interbase’, e selecionar a opção ‘Add New Connection’.

Na caixa de diálogo Connection Editor, você deverá configurar a conexão com o Interbase, para ele acessar o banco de dados de exemplo. Vamos usar o banco de dados Employee que vem junto com o Delphi. Portanto, na guia ‘Database’, configure para ele apontar para: <Drive>:\Arquivos de Programas\Arquivos Comuns\Borland Shared\Data\EMPLOYEE.GDB.

Isso depende muito de onde você instalou o Delphi. Se você na hora da instalação escolheu outro lugar para instalar os arquivos comuns do Delphi, você deve alterar o caminho acima para o local correto.

Depois de configurar o caminho, configure username e password para o seu usuário correto no Interbase, comumente, SYSDBA e masterkey. Para testar a conexão, clique no botão ‘Test’ para ver se tudo está funcionando corretamente.

Se aparecer uma mensagem informando que a conexão foi executada com sucesso, podemos continuar nosso exemplo. Se algum erro ocorrer, cheque se o endereço está correto, se o Interbase Server está sendo executado, ou mesmo se o Interbase está instalado.

Para se criar uma conexão com o banco de dados, usando BDP, é muito simples. Basta que você arraste a conexão de dentro do Data Explorer para alguma área da sua página ASP.NET. Então arraste a conexão ‘IBConn1’ para dentro da sua página. Vai ser criada uma área na parte inferior do IDE, onde será posto um componente TBDPConnection, que é o componente que substitue o TDatabase, TIBDatabase, TADOConnection, ou TSQLConnection.

Através desse componentes podemos se comunicar com o banco de dados. Selecione-o, e configure sua propriedade name para ‘BdpConn’.

Com a conexão criada e configurada, basta agora criarmos um DataSet, que irá representar nossa tabela para o nosso sistema web. Para se criar um DataSet no BDP, basta que você use um componente TBdpDataAdapter. Através dele, podemos criar um DataSet personalizado. Para se criar um TBdpDataAdapter já configurado com a tabela, basta que você expanda na conexão para acessar a lista de tabelas, e dentro da lista de tabelas, arrastar uma delas para dentro do IDE do Delphi, ou seja, o mesmo processo que usamos para se criar a conexão.

Escolha a tabela ‘Employee’. Arraste-a até o Container onde se encontra o componente de conexão (BdpConn). Será criado um componente TBdpDataAdapter com o nome ‘BdpDataAdapter1’. Mude seu nome para ‘BdpDtAdaptEmployee’.

Para se configurar a conexão com a tabela, clique com o botão direito em cima do componente BdpDataAdapter, e escolha ‘Configure Data Adapter’, como mostra a fugura abaixo:

Fazendo isso, você vai abrir a caixa de diálogo para configurar a conexão com a tabela de banco de dados, e opcionalmente, criar um DataSet. Na janela que se abre, clique na guia ‘Command’. Nessa guia, você configura o SQL que será usado para representar e manipular a tabela. Na lista de tabelas (Tables), escolha a tabela ‘Employee’. Isso irá gerar automaticamente a instrução SQL SELECT, dentro da caixa de SQL. Repare que você pode gerar todas as intruções SQL requeridas para se trabalhar com a tabela. Vemos então que a necessidade de se usar um componente TUpdateSQL, não existe mais.

Agora clique na guia ‘DataSet’, e dentro dela você vai encontrar as opções para se popular o dataset. Escolha a primeira segunda opção, que é a de se criar um novo DataSet. Através deste DataSet, iremos trabalhar com a tabela Employee dentro da nossa aplicação. Chame este DataSet de ‘DsEmployee’, e clique em OK. Isso irá criar dentro do nosso modelo de dados, um novo componente, que será exatamente nosso componente DataSet. Através dele, iremos representar a tabela Employee na aplicação. Agora repare a relação entre o componente DataSet e o DataAdapter. Quem realmente manipula as instruções SQL para a tabela é o DataAdapter, quem representa os dados da tabela para a aplicação, é o DataSet.

Configure a propriedade ‘Live Data -> Active’, para true, para ativar nossa tabela dentro da aplicação.

Salve o projeto. Até este ponto, temos nossa aplicação praticamente toda configurada, faltando somente a apresentação dos dados, ou seja, nossa interface.

Se fossemos criar a parte da interface no Delphi 7 ou edições anteriores, teríamos que colocar no form ou DataModule um DataSource, e plugar os componentes visuais nesse datasource né?

No ASP.NET do Delphi 8 é a mesma coisa. Para que possamos criar nossa interface, basta que configuremos um datasource dentro do projeto, para representar o nosso componente DataSet, e plugar os componentes. Vamos configurar passo a passo essa etapa do projeto.

Na paleta de componentes, clique no botão ‘Categories’, e escolha a opção ‘DB Web’. Dentro dessa paleta, temos todos os componentes que precisamos para se trabalhar com desenvolvimento web visual da forma RAD no Delphi.

Escolha o componente ‘DBWebDataSource’, e arraste-o até o container dos componentes visuais, onde se encontram os componentes de banco de dados.

Configure seu nome para ‘DBWebDsEmployee’. Através dele, iremos acessar nosso DataSet, basta que apontemos ele para nosso DataSet. Para se fazer isso, clique na propriedade ‘DataSource’ do componente DBWebDataSource, e selecione o DataSet ‘DsEmployee’, como mostra a figura acima.

Pronto. Nosso componente DataSource já está ligado com o DataSet e, portanto, já está apto a propagar os dados para os componentes visuais do Delphi. Vamos montar finalmente nossa interface de entrada de dados. Vá até a paleta de componentes, escolha a paleta ‘DB Web’, pegue o componente ‘DBWebGrid’, e arraste até o Form Designer. Será criada uma table do HTML, mas esse cara é o noss Grid de dados, basta apenas que ele aponte para algum DBWebDataSource válido do projeto, para ele ser usado da forma correta.

Para isso, vá até as propriedades desse componente Grid, e acesse a propriedade ‘DBDataSource’, aponte essa propriedade para o componente ‘DBWebDsEmployee’, que colocamos no projeto.

Após isso, configure na propriedade ‘TableName’, a tabela que será representada no DBGrid. Fazendo isso, você já poderá ver os dados da tabela dentro do designer web do Delphi 8.

Uma outra forma mais simples de fazer a mesma configuração do Grid, era selecionar o link ‘Property Builder’, da janela de propriedades, que fica embaixo do Object Inspector. Isso ativa o editor visual da configuração do DBWebGrid.

Para melhorar a aparência de nosso WebGrid, podemos escolher alguns dos temas pré-configurados do Delphi 8. Para isso, basta que você clique na opção ‘Auto Format’, da janela de dicas do Object Inspector. Selecione-a, e na janela que aparece, escolha a opção ‘Professional1’.

Repare que após fazer isso, seu grid irá mudar de aparência. Você pode quaiquer formatos que o Delphi oferecer, ou você pode criar seus próprios padrões, bastando você configurar corretamente nas propriedades (BackColor, BorderColor, BorderWidth, GridLines, HeaderStyle, e FooterSyle) do WebGrid.

 

Para testar nosso, exemplo, simplesmente vá até o menu Run, e escolha ‘Run without Debugging’. Você pode clicar apenas em ‘Run’, mas fazendo isso, o Delphi irá carregar junto com o processo da sua aplicação, o Debugger integrado, onde você pode depurar de forma simples sua aplicação, mas conseqüentemente o mesmo irá ficar mais lento. Sua aplicação será aberta dentro de seu browser padrão.

Para finalizar nosso exemplo, vamos melhorar a estética de nossa aplicação, configurando as colunas de nosso WebGrid, e adicionando ao projeto, um componente WebNavigator, para ajudar na navegação dos registros.

Volte para o Delphi, selecione o WebGrid, clique na propriedade ‘Columns’, e selecione o botão de pontilhado, para editar as colunas do WebGrid.

Na janela que se aparece, clique na guia ‘General’, e na caixa ‘DataSource’, escolha o nosso DBWebDsEmployee, se ele ainda não estiver selecionado. Agora volte para a guia ‘Columns’, para configurar os campos do Grid. Desmarque o checkbox ‘Create Columns automatically at Run Time’, para que as colunas não sejam recriadas automaticamente em tempo de execução. Adicione somente as colunas (EMP_NO, FIRST_NAME, LAST_NAME, SALARY), na lista de colunas selecionadas.

Configure o HeaderText de cada coluna como especificado na figura abaixo, quando você terminar, clique em OK.

Agora que temos nosso grid configurando de forma mais apropriada, podemos colocar um Navigator dentro do projeto, para ajudar na navegação dos dados. Para isso, vá até a paleta de componentes, e na paleta ‘DB Web’, pegue o componente ‘DBWebNavigator', e coloque dentro do designer, embaixo do nosso WebGrid. A configuração do Navigator é a mesma do WebGrid, a saber, as propriedades (DBDataSource e TableName), configure-as apropriadamente.

Execute a aplicação, você poderá agora navegar dentro os registros, bem como usar o mecanismo de paginação, criado automaticamente pelo ASP.NET.

Conclusão

Vimos neste artigo alguns conceitos de o que é ASP.NET, como ele é estruturado, e como montar aplicações de forma simples, usando o Delphi 8.

Vimos também como usar de forma correta, o novo engine de acesso a dados do Delphi.NET, os Borland Data Providers, e como configurá-los. Em próximos artigos iremos discutir como fazer validações a nível de servidor e cliente, no ASP.NET, Como implementar de forma eficiente, o design pattern MVC (Model View Controller) dentro do ASP.NET, bem como mostrar exemplos mais avançados, como pesquisas dinâmicas, gerenciamento de sessões e criação de templates em ASP.NET. Até a próxima!

Ricardo Ferreira é Instrutor Certificado Borland, trabalha na Argos Tecnologia como instrutor dos cursos oficiais Borland, e é consultor de projetos corporativos usando tecnologias como J2EE, RAD, nas áreas de objetos distribuídos, web, e integração de aplicações com WebSservices e XML.

 

  Últimos Artigos
Tratando eventos do mouse
Acessando um servidor POP3 em C#
Você realmente precisa de um banco de dados? Conheça o XPrevail
.NET é lento ?
Criação de WebControls em C#
Fabio Camara e autoridades mundiais de C# e .NET
Carregando Combo/Listbox com dados de um arquivo XM