29

Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

  • Upload
    vungoc

  • View
    239

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar
Page 2: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

Revista The Club Megazine - 07/2002A utilização, reprodução, apropriação, armazenamento em banco de dados,sob qualquer forma ou meio, de textos, fotos e outras criações intelectuaisem cada publicação da revista “The Club” são terminantemente proibidos

sem autorização escrita dos titulares dos direitos autorais.

Copyright© The Club® 2002

Page 3: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 3

EDITORIAL

Editorial

Celso Jefferson PaganelliPresidente - The Club

Editorial ...................................................................................... 03News ......................................................................................... 04PerguntaS & Respostas ............................................................. 05A Compilação de Programas .NET........................................... 08Conectando Oracle através do RAS emServidores Windows 2000 Server ............................................ 09DataSnap - Parte II - Os Protocolos e padrões ..................... 16Interbase? Sim! Porque não?.................................................... 23Debugando Aplicações dbExpress .......................................... 25Portas Abertas: Seja Bem-Vindo.............................................. 27

THE CLUBRua Acre, 950 - Avaré - SP - CEP 18.700-260

Informações: (0xx14) 3732-3689Suporte: (0xx14) 3733-1588

Fax: (0xx14) 3732-0987

Internethttp://www.theclub.com.br

Cadastro: [email protected]: [email protected]ções: [email protected]

DúvidasCorrespondência ou fax com dúvidas devem serenviados ao - THE CLUB, indicando "Suporte".

OpiniãoSe você quer dar a sua opinião sobre o clube em

geral, mande a sua correspondência para a seção"Tire sua dúvida".

ReproduçãoA utilização, reprodução, apropriação,

armazenamento em banco de dados, sob qualquerforma ou meio, de textos, fotos e outras criações

intelectuais em cada publicação da Revista“The Club” são terminantemente proibidos sem

autorização escrita dos titulares dos direitosautorais.

Copyright© The Club® 2002

Impressão e acabamento:Impressos Gril - Gril Gráfica e Repr. Ind. Ltda.

Tel.: (0xx14) 3762.1345 - Fax: (0xx14) 3762.1259Rua São Paulo, 447 - Cep 18.740-000

Taquarituba - SPTiragem: 5.000 exemplares

Diretor - Presidente

Celso Jefferson M. Paganelli

Diretor Técnico

Mauro Sant’AnnaColaboradores

Claudenir C. Andrade - Mário Camilo Bohm

Emerson Facunte

Anderson H. Rodrigues

Delphi é marca registrada da BorlandInternational, as demais marcas citadas são

registradas pelos seus respectivos proprietários.

Olá amigos,

Como todos sabem, nós sempre estamos procurando por novidades, e écom muita alegria que informamos a vocês que a partir deste mês nóstemos mais um colaborador em nossa revista. A partir deste mês o Sr.Emerson Facunte começa a escrever mensalmente uma coluna paranossa revista. Neste mês ele fala sobre como scannear as portas de umservidor. Nós também atualizamos a nossa home page, foram incluídosquase 2.000 (dois mil) arquivos. Acesse e confira.

No próximo mês tem mais.

Até lá....

Page 4: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE4

NEWS

A Extended Systems Inc., uma das principais patrocinadorasda BorCon nos Estados Unidos, e a ReNet Tecnologia Ltda., suarepresentante no Brasil, apresentarão em seu estande avançadassoluções de computação móvel e banco de dados.

A família de produtos XTNDConnect da Extended Systems,proporciona soluções de gerenciamento da computação móvel quepermitem uma ampla variedade de equipamentos móveis acessardados corporativos em tempo real ou através de sincronização.

O ADS (Advantage Database Server) é gerenciador de bancode dados cliente/servidor (RDBMS) escalonável de altodesempenho, para redes, mono-usuário (standalone), Internet eaplicações móveis. ADS suporta sistemas operacionais de redeWindows NT/2000/XP, Windows 95/98/ME, Novell NetWare eLinux. Aplicações 32-bit com Advantage Database Engines paraambientes mono-usuário ou multi-usuários podem serdistribuídas sem custos (royalty free). Sem alterações no código, aaplicação pode automaticamente detectar e usar o servidor ADS,

Extended Systems e ReNet Tecnologia Ltda. presentes na 1ª BorCon Brasilque propicia desempenho, integridade e confiabilidade inerentesao modelo cliente/servidor.

Visite nosso estande e conheça os softwares AdvantageDatabase Server (ADS), XTNDConnect Server GroupwareEdition (GE), XTNDConnect Server Database Edition (DE) eXTNDConnect Mobile Objects (XCMO), apresentados pela ReNete pela Extended Systems, desenvolvedora destas soluções.

A 1ª BorCon Brasil será realizada de 20 a 23 de agosto de2002, das 13 às 21 horas, no Pavilhão de Exposições do Anhembi,São Paulo/SP, em conjunto com o COMDEX Sucesu-SP 2002 eNetworld+Interop.

ReNet Tecnologia [email protected].: 11 3872-0423Fax: 11 3872-4418

Page 5: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 5

Pergunta: Tem como checar se um valor do tipo integer está emum Array?Resposta: Será necessário criar uma função específica para apesquisa de um valor dentro de um Array. Veja abaixo umexemplo que utiliza código em Assembler na implementação:

function LongIntFound(aLongint: LongInt; InArray:Pointer; ArrayLen: LongInt): Boolean; assembler;asm push edi jecxz @@false mov edi,edx repnz scasd jnz @@false { aLongint não existe. } mov eax,1 jmp @@end@@false: sub eax,eax@@end: pop ediend;

procedure TForm1.Button1Click(Sender: TObject);var A: Array[0..9] of Integer; i: integer;begin // preenche o Array. for i := Low(A) to High(A) do A[i] := i;

// Verifica se existe if LongIntFound(9, @A, Length(A)) then ShowMessage(‘Existe!’) else ShowMessage(‘Não existe!’);end;

Outra forma, seria fazer um “FOR” percorrendo e comparando ositems do Array item a item.Dúvida enviada por Total Informática Ltda., Feira de Santana/BA.

Pergunta: Gostaria de saber como copiar uma pasta para outravia Delphi.Resposta: Existem APIs do Windows encapsuladas na unitShellAPI que possibilitam esta tarefa. Veja abaixo um simplesexemplo:

implementationuses ShellAPI;{$R *.DFM}

procedure CopiaPasta(Origem, Destino: String);var FOS :TSHFileOpStruct;begin with FOS do begin Wnd := Form1.Handle; wFunc := FO_COPY; pFrom := PChar(Origem); pTo := PChar(Destino); fFlags := FOF_NoConfirmMkDir; end; SHFileOperation(FOS);end;

procedure TForm1.Button1Click(Sender: TObject);begin CopiaPasta(‘d:\Revista’, ‘d:\Rev2’);end;

Dúvida enviada por Elson Carlos Almeida, Irecê/BA.

Perguntas & Respostas

Page 6: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE6

.NET

A Compilaçãode programas .NET

Por Mauro Sant’Anna ([email protected]). Mauro é um “MSDN Regional Director”,consultor e instrutor da MAS Informática (www.mas.com.br), tendo ministrado

treinamentos na arquitetura .NET desde outubro de 2000.

Neste artigo examinarei um assunto sobre o qual existemmuitas dúvidas: como os programas .NET são compilados e sepodemos controlar melhor o processo.

A CompilaçãoTodo programa .NET é compilado sempre duas vezes: a

primeira pelo compilador da linguagem e a segunda pelocompilador “JIT – Jist In Time”. Por exemplo, você pode editar oprograma VB.NET a seguir em um editor de textos como oNotepad:Module Module1 Sub Main()

System.Console.WriteLine(“Alo,Mundo”) End SubEnd Module

Salve o programa acima como “Alo.vb” e compile com ocomando “VBC Alo.cs”. Isto irá gerar um executável chamadoAlo.exe:

Pode ser necessário ajustar o caminho para o compilador(VBC.EXE), normalmente instalado no diretório “C:\ProgramFiles\Microsoft.NET\FrameworkSDK\Bin”.

O SDK inclui um programa que ajusta diversas variáveis deambiente necessárias para compilar programas .NET em“C:\ProgramFiles\Microsoft.NET\FrameworkSDK\Bin\corvars.bat”.Recomendo rodar este arquivo antes de compilar o programa.

Em tempo de execução (ou instalação, em alguns casos), ocódigo do assembly é finalmente compilado, método a método,para o ambiente final com um “JIT- Just In Time Compiler”. Istotraz as seguintes vantagens:

· Independência de CPUs e sistema operacional: bastaque exista um runtime do “.NET” para o programa rodar.

· O sistema de runtime pode fazer verificações desegurança impossíveis caso o código fosse realmente executável.

Os programas podem rodar em umaespécie de “caixa de areia” e não danificaro sistema hospedeiro.

O código executável é chamado de“managed code”.

· A compilação final trazperformance melhor que a obtida emambientes interpretados.

Pré-CompilaçãoÉ possível - embora não

recomendável - compilar previamenteum arquivo executável para códigonativo com o comando NGEN:

Page 7: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 7

.NET

O executável será colocado em um local chamado “Global Assembly Cache”:

Ao chamarmos o programa DO DIRETÓRIO ORIGINAL, aversão do GAC será usada.

Observe alguns pontos importantes:· A compilação somente poderá ser feita no computador

no qual o programa será executado. Não existe a possibilidade deexecutar esta compilação no computador do desenvolvedor edepois “instalar a imagem executável” no computador do cliente;

· O executável continua exigindo o .NET Frameworkpresente no cliente;

· Nem tudo pode ser compilado; alguns trechos podemser deixados em IL para serem compilados em tempo deexecução;

· A imagem nativa nunca é gerenciadaautomaticamente; este é sempre um processo manual feito como utilitário NGEN.EXE (veja as opções /delete e /show);

· Normalmente só podemos colocar programas com“strong names” no GAC, mas o runtime cria um nome “mais oumenos forte” baseado em um checksum e data para colocá-lo noGAC. Quando um assembly é compilado com o NGEN.EXE,diversas informações são registradas:

· Tipo da CPU;

· Versão do sistema operacional;· Identificação do assembly, uma espécia de “checksum +

data e hora”. Uma recompilação muda esta identidade;· Exata identificação de todos os assemblies

referenciados;· Fatores de segurança.Se qualquer uma destas informações mudarem, a imagem

nativa deixará de ser usada e o programa será compilado com“JIT”. A imagem nativa nunca é atualizada automaticamente.

Vantagens e desvantagens A única vantagem de compilarpreviamente um executável é que sua carga e execução serão umpouco mais rápidas. Por outro lado, a chance da imagem nativaser ignorada é relativamente grande, especialmente pormudanças no ambiente de segurança e privilégios dos usuários.É interessante observar que a instalação do .NET Frameworkpré-compila alguns, mas não todos assemblies, como pode serobservado em “C:\WINDOWS\assembly”:

A minha recomendação é que você NÃO deve se preocuparem pré-compilar os executáveis, a princípio. Nos casos que aexecução mostrar-se lenta, você pode experimentar a pré-compilação.

Page 8: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 9

CONECTANDO ORACLE ATRAVÉSDO RAS EM SERVIDORESWINDOWS 2000 SERVER...

Configuração do RAS no Windows 2000 Server.Acessar as propriedades de Meus Locais de Rede

Duplo clique em Fazer nova conexão

<Avançar>

Os passos adiante irão mostrar, de forma detalhada, como criar uma conexão RAS (acesso discado) para acesso direto ao servidorOracle, em plataformas Windows 2000 Server, tanto do lado do servidor quanto do lado do “client”.

ORACLE

Page 9: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE10

Clicar em aceitar conexão de entrada.

Selecionar o modem que já deve estar instalado no servidorpreferencialmente um modem externo 3Com ou Dlink

<Avançar>

Clicar em Não permitir conexões virtuais privadas

<Avançar>

Esta tela deve ser dado o direto de conexão de entrada a umusuário do sistema, pode ser usado o Administrador ou um novousuário que deve ser criado e a ele dado o direito de conexão,basta clicar no Check Box a frente do usuário.

<Avançar>

Nesta tela deve ser definido qual o tipo de protocolo decomunicação a ser utilizado para a conexão. O mais indicado é oTCP/IP.

Selecione as propriedades dos componentes de redeTCP/IP.

ORACLE

Aqui, devem ser definidos os parâmetros para a conexão dousuário que será utilizado.

Caso a opção Atribuir endereços TCP/IPautomaticamente o servidor de DHCP deve estar ativo para queum IP seja fornecido a estação de conexão.

Page 10: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 11

<Concluir>

Após o término da configuração a tela abaixo irá demonstrar aConexão de Entrada.

Acessar o menu de propriedades da conexão de entrada.

Clicar no Check Box Mostrar ícone na barra de tarefas quandoconectado. Quando ocorrer uma conexão remota como o servidor,um ícone será demonstrado no servidor, indicando a conexão.

ORACLE

Pode-se também atribuir um IP a estação que estaconectando-se ao servidor, definindo na opção Especificarendereço TCP/IP.

Definindo uma faixa de IP a ser utilizada.

A terceira opção é permitir que o computador que estáse conectando atribua seu próprio IP

Page 11: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE12

Criação da conexão Dial-UP no “client”para discagem ao servidor Oracle...

Criar uma conexão Dial-UP,

<Avençar>

Discar para rede privada. <Avançar>

Digitar o número da linha telefônica que esta conectada aomodem do servidor oracle <Avançar>

<Avançar> <Concluir>

ORACLE

Page 12: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 13

Informar o usuário que foi dado o direito de conexão no servidororacle e a senha do usuário.

Acessar o menu propriedades.

Acessar o menu rede.

Clicar em protocolo TCP/IP e acessar o menu propriedades.

Caso a primeira opção seja selecionada o servidor oracle deveráfornecer um endereço IP a máquina. Se for selecionada asegunda opção você deverá especificar um IP para executar aconexão

Basta agora clicar em Discar para efetuar a conexçao.

ORACLE

Page 13: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE14

Configuração do “Client” Oracle.Acessando o assistente para configuração do Oracle,

um novo serviço deve ser criado, clicando no botão “ + “ comodemonstrado na tela abaixo.

Nesta tela deve ser informado o nome do serviço de rede a serutilizado para acesso ao oracle. Exemplo: Teste <Próximo>

O protocolo de comunicação utilizado deve ser TCP/IP (Protocolode Internet) <Próximo>

Nome do Host: deve ser informado o nº do IP do servidor oracle.Número da Porta: default 1521. <Próximo>

Nome do Serviço: Informar o nome de instância na criação doBanco de dados no servidor. Normalmente é utilizado conforme oexemplo: ORCL.Tipo de Conexão Oracle8i: Utilizar como default Banco de DadosDefault. <Próximo>

O teste da configuração do serviço de rede pode ser testado antesde ser concluído acionando o botão Testar....

O teste inicial normalmente não será bem sucedido, poiso usuário e senha padrão, não são os mesmos configurados, naconfiguração do banco de dados.

Neste caso basta clicar em Alterar Login.... paradigitação do usuário e senha corretos.

Após a troca de usuário, testar novamente a conexão

ORACLE

Page 14: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 15

Após o teste bem sucedido, fechar a tela e concluir a instalação.

<Finalizar>Após o término das configurações acima, efetue a conexão Dial-UP com o servidor oracle e acesse o SQLPLUS.

Será solicitado o nome do usuário do banco de dados e a senha dousuário, no campo String do Host, deve ser informado o nome doserviço de rede configurado no client do oracle.

ORACLE

Matéria fornecida por:Mario Bohm

[email protected]

O The Club, tem disponivel alguns exemplares da Revista Megazine dos anos 2000, 2001 e2002 os interessados podem adquiri-las pelo valor de R$ 3,00 cada referente a despesas de

postagem, contato pelo fone (0XX) 14 3732-3689

Page 15: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE16

Por Anderson Haertel Rodrigues

DataSnap – Parte IIOs protocolos e padrões

IntroduçãoNo artigo anterior foi demonstrado o conceito de

MultiCamadas (3 Camadas), as diferenças entre Cliente/Servidor e MultiCamadas e o porque e quando usarmosMultiCamadas para o desenvolvimento de nossos sistemas.

No artigo desse mês eu explicarei o que é COM, OLE, DCOM,MTS, COM+, CORBA, Socket, HTTP e SOAP. Mostrarei osconceitos de cada padrão e protocolo e nos próximos artigosmostrarei como usar o: COM+ com o Delphi/DataSnap.

COMComponente Object Model - Um pouco de História. Anterior

ao COM é a DDE. A DDE (Dynamic Data Exchange) é ummétodo da API do Win32 para transferência de dados entre asaplicações. O DDE foi o primeiro passo no desenvolvimento dediversas tecnologias de integração e comunicação, ele surgiu pelaprimeira vez no Windows 3.0.

COM foi desenvolvido em 1993 e a sua função e utilização édar suporte a diferentes módulos/partes de softwares quenecessitem se comunicar. COM é uma especificação de interfacesbinárias para comunicação e, pode ser desenvolvido em

linguagens distintas - Delphi, C++, Visual Basic, JAVA, etc.

Na verdade, COM não toma conhecimento em que linguagemfoi desenvolvido o objeto, o que importa nesse caso é o acesso aoObjeto através de Interfaces. É a interface que dá suporte a chamadado objeto escrito em qualquer linguagem. Quando se constrói umobjeto COM, é necessário entender como as interfaces trabalham.Já o usuário da interface, não precisa conhecer os detalhes deimplementação.

Este isolamento de interface e implementação é crucial paraobjetos COM. Isolando a interface de sua implementação, pode-seconstruir componentes que podem ser substituídos e reutilizados.Isto simplifica e multiplica a utilidade do objeto.

COM pode ser escrito em forma de DLL e ou EXE, sendo que,se for uma DLL o mesmo é chamado de “In-Process” e se for umEXE é chamado de “Out-of-Process”.

In-Process - Possui todas as características de uma DLL,então, o mesmo é executado na mesma área de memória doprocesso chamador, isto é, o seu EXE (Aplicação) e ou até mesmouma outra DLL.

DELPHI

Page 16: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 17

Out-of-Process - É um EXE, do qual, não faz parte da mesmaárea de memória do processo chamador.

In-Process x Out-of-ProcessA implementação de Objetos em DLL´s é mais simples e

também apresenta uma melhor performance, mesmo que essaperformance possa parecer imperceptível. Quando você cria doisobjetos em EXE´s separados para comunicação, COM tem umtrabalho maior para fazer esses dois objetos se comunicarem.Esse processo se chama: Marshaling, onde, Marshaling é omecanismo que permite a comunicação entre dois processosrodando em espaços de memória diferentes e ou em diferentesmáquinas. Já o mesmo não ocorre pelo fato da DLL residir nomesmo espaço de endereço do EXE, como já explicado maisacima.

Em máquinas diferentes o processo é mais complicado, porque, envolve tráfico de DLL pela rede e ou Interfaces navegandopela rede, onde, nesse cenário vemos duas palavrinhas novas:Proxy/Stub. Já a ativação de DLL´s em máquinas remotas échamado de: Surrogate.

Mas, isso é assunto para um outro dia!Objetos COM são implementados através de chamadas para o

COM API, que provê funções que criam e destroem objetos COM.

COM foi introduzido no Delphi na versão 3. Objetos COM sãodefinidos usando a palavra chave Interface. Cada objeto COM éidentificado por uma GUID (Globally Unique Identifier).

Esse identificador fica armazenado no registro do Windows,de modo que, em nossa linguagem só poderemos acessar objetosdevidamente registrados.Exemplo de uma GUID :[‘{D6E9BC01-6D34-12H3-8A25-0046C76D69DB}’].

GUIDÉ um identificador único, é um número de 16 Bytes, ou de

128 Bits, ou seja: 38 Dígitos significativos. GUID promete nãodeixar a duplicação de identificadores. Para gerar um GUIDdentro do Delphi, você necessita apenas pressionar:CTRL+SHIFT+G em qualquer lugar do código que aparecerá umnovo GUID para você.

Outra solução seria a chamada de funções da API do Win32,funções como: CoCreateGUID().

Uma explicação mais detalhada de COM, necessitaria de umlivro a parte (quem sabe né?!), explicando apenas o que é COM.O Shell do Windows foi todo construído utilizando OLE eInterfaces, daí podemos presumir a importância do mesmo.

OLE

Object Linking and Embedding –É a incorporação de objetos e aplicativos servidores (como o

Word) que aceitam ser manipulados por um controlador (OLEAutomation).

O COM para o OLE apenas define como esses servidores secomunicam. Na verdade, OLE e COM se confundem na mesmatecnologia, mas, a diferença na verdade é:

COM é a especificação e padrão e OLE é a ligação entreObjetos, a tecnologia, a Implementação.

DCOMDistributed Component Object Model - É a versão distribuída

no modelo COM da Microsoft, onde, as suas raízes são baseadasno COM, OLE e ActiveX.

Devemos considerar COM e DCOM como sendo uma únicatecnologia. Se o objeto necessitar usar somente COM, o mesmoserá usado, mas, se o objeto estiver em uma máquina distinta,será requisitado o DCOM. Esse processo só é conhecido em tempode runtime.

Mas, como funciona a ligação? É feita assim do nada?R: Não!

Protocolos de comunicação:

DCE - Distributed Computing Enviroment;

RPC/RFC - Remote Procedure Call/Remote Function Call;

DCE RPC - É o protocolo responsável pela comunicação dosobjetos;

LPC- É o protocolo que concretiza a comunicação DCE RPC;

STACK- Auxilia a comunicação remota entre o DCE RPC/Estação Cliente e o Servidor;

Acontece o seguinte:

Quando houver a requisição e a mesma perceber que oservidor está em outra maquina, entra em cena o STACK(protocolo) que auxilia na comunicação Client com a Servidora,mas, se a requisição perceber que isso não é necessário, entra emcena apenas o DCE-RPC/RFC.

Onde fica guardado o registro? Isto é, onde fica o registroindicando que minha máquina servidora é máquina “X”?

R: Fica no registro do Windows, conforme a figura 1:

á

DELPHI

Page 17: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE18

A figura 1 mostra o registro de uma aplicação COM+(também poderia ser DCOM) em uma máquina Client indicandoquem é o seu Servidor de Aplicação, que neste caso, é umamaquina chamada: Sistemas4.

DCOM foi lançado em 1995 e ao contrário do que muita gentepensa, DCOM não é exclusivo de ambientes Microsoft, o mesmopode rodar em Unix, Macintosh, etc.

MTSMicrosft Transaction Server – É o servidor de transações da

Microsoft. Objetos MTS na realidade são objetos COM, comsuporte a transações para Banco de Dados. O MTS é parteintegrante do Windows 98 (com PWS instalado), Windows NT eWindows 2000. Na verdade, MTS é uma extensão do COM. Ele énecessário para a criação de sistemas MultiCamadas com acesso

a dados. O MTS se encontra no IIS do Windows NT.

COM+Aos que perceberam a rápida explicação do DCOM e do MTS,

eu explico o por que no próximo parágrafo.

MTS é a evolução do DCOM, COM+ é a evolução do MTS,então, posso dizer que COM+ é o protocolo que contém todas ascaracterísticas do DCOM e do MTS juntos, mas, ainda nos dáoutros recursos bem interessantes que veremos no decorrer daexplicação desse protocolo.

DCOM x MTS x COM+Como já citado, o DCOM é o protocolo responsável por tornar

o COM distribuído, possibilitando a escrita das regras naCamada Servidora de Aplicação. O problema que envolve o

Figura 1: O registro do servidor na sua máquina cliente.

DELPHI

Page 18: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 19

Figura 2: O Utilitário DCOMCNFG.EXE

DCOM é a escabilidade. Quando houver um aumentosignificativo no número de conexões, ele tende a perderperformance. Outro problema do DCOM é fato do mesmo ser:Statefull – isto é: Mantém informações persistentes sobre cadaCliente que instância o objeto. Outro problema do DCOM é aconfiguração do mesmo, que só podia acontecer através doutilitário DCOMCNFG.EXE, que por sua vez era muito limitado.Aliás, o mesmo foi incorporado ao Component Services do COM+na versão do Windows XP. Outro problema do DCOM “puxa” é ofato do mesmo não funcionar a contento com uso de firewall. Afrase “DCOM não funciona a contento com firewall”, pode parecerque estou querendo dizer que DCOM não funciona comfirewall....Ele Funciona!, mas, você com certeza terá dores decabeça, por causa do processo de segurança que o mesmo impõepara a porta que o DCOM usa para comunicação.

Já o MTS, incorpora vários recursos ao DCOM e ainda trásum gerenciador baseado no MMC (Microsoft ManagementConsole).

Os novos recursos do COM+** Pooling – É a capacidade de um mesmo objeto manter

algumas instâncias atendendo a dezenas e ou até milhares declientes. É desta forma que o COM+ é considerado escalonável. Oprocesso de escalabilidade do COM+ se dá pelo fato do mesmofuncionar sobre o mecanismo de Stateless e do Pooling de objetos.Com o mecanismo de Stateless, objetos não se lembram do seuestado, isto é, eles não se lembram das últimas operaçõesrealizadas pelo Cliente. É o COM+ que gerencia como a instânciausará a memória e o responsável pela liberação do Objeto. Ele

libera a partir do último cliente que esteja fazendo referência aomesmo. Quando o cliente fizer uma requisição de um método, oCOM+ procura por um objeto no Pool e ou se for o caso,instancia-o novamente.

** Escalabilidade – Pode-se aumentar drasticamente onúmero de conexões concorrentes ao Objeto, que o COM+ tende anão perder a sua performance. A mágica é conseguida com oPooling explicado acima.

** Gerenciamento – Component Services* é o console degerenciamento de objetos do COM+. Nele você instala, exporta eadministra objetos COM+. A Figura (3) apresenta para você oComponent Services do Windows XP. O mesmo também pode serencontrado no Windows 2000. Component Services é o quepodemos chamar de: A casa do COM+. Ah, já que estamosfalando de versões do Windows, o servidor COM+ só pode serinstalado no Windows 2000 e ou Windows XP. Já os clientesCOM+, podem ser instalado em qualquer versão do Windows,necessitando é claro de algumas adaptações para o Windows 95 etalvez no Windows 98, mas, isso eu explicarei no momento dacriação e distribuição da aplicação Client COM+.

Nota: No Delphi 6 existe um componente novo chamado:COMAdminCatalog na Guia COM+, onde, a Microsoft®disponibilizou as interfaces e a Borland as implementou criandoeste novo componente. Com este componente você pode criar,gerenciar e instalar automaticamente seus Objetos.

** Transações – O mecanismo responsável pelas transaçõesno COM+ é o MSDTC, que também se encontra no ComponentServices. Com o COM+ você pode realizar transações em objetos etransações a Banco de Dados. As transações de Objetos permitemque vários objetos diferentes sejam colocados no contexto de umaúnica transação, mesmo que esse objeto não faça acesso a Bancode Dados. Falando em transações, para ficar claro, a mesma écriada na instância do Objeto e é encerrada “internamente” e ou“por intervenção do usuário” através dos métodos:

SetComplete - Que é igual ao Commit;SetAbort - Que é igual ao RollBack;

** Eventos – Um Evento do COM+, é igual aos eventos doDelphi, é claro, guardado suas diferenças. Cito como sendo umevento igual ao “OnExit()” de um Edit do Delphi para um melhorentendimento. Mas, na realidade, eventos no COM+ estãorelacionados a Interfaces publicadas por um objeto, onde, estemesmo evento pode atender a mais de 10, 15, 100 requisições declientes e distribuir este evento a todas as requisiçõeschamadoras de uma só vez. Um recurso muito interessante em

DELPHI

Page 19: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE20

eventos do COM+, é apossibilidade do mesmoexecutar um “refresh” nosclientes que suportam suasinterfaces.

Figura 3: ComponentServices – Que se encontranas FerramentasAdministrativas do Windows2000 e ou Windows XP.

Nota: Podemosimplementar Eventos COM+ noDelphi 6 acessando:File|New|Other|ActiveX|COM+Event Object.

Outras tecnologiasrelacionadas ao COM+:

** MSMQ – MicrosoftMessage Queue Server –Permite a garantia de entregade pacotes entre objetos. Se por ventura um servidor “X” cair, omesmo será recuperado logo após a re-inicialização desseservidor.

Isto é, as solicitações serão registradas, enfileiradas ereproduzidas automaticamente mais tarde quando o componenteficar disponível.

** Wolf Pack – Permite escalabilidade entre maquinasservidoras. É a união de várias maquinas servidoras parasuportar uma capacidade de processamento robusta e é claro,com escalabilidade.

Entre outras.

Segurança usando DCOM/COM+Uma pequena introdução sobre segurança nos protocolos

apresentados. Podemos dizer que a mesma é de fundamentalimportância nos padrões e protocolos da Microsoft® apresentadosaté agora:

-- Segurança na Chamada/Login do Objeto;-- Segurança na Criação de um objeto novo;-- Segurança na troca de mensagens;Os parâmetros de segurança apresentados acima estão

relacionados aos seus usuários e ou grupos, isto é, os usuáriosque acessarão ou não o Objeto. Nessa etapa ainda acho que valepena citar a ferramenta MS Crypto API, onde a mesma realiza oserviço de criptografia de dados.

Load Balance in COM+:Load Balance é a capacidade de se balancear a carga entre os

objetos. O Load Balance nos componentes COM+ é conseguidoatravés de serviços que dividem a carga do processamento entrevários componentes instanciados.

Na verdade ele sabe que um componente está sobrecarregadousando um algoritmo no qual ele verifica o tempo de resposta decada servidor. O Componente CLB (Component Load Balancing)encontra-se no Windows Application Center.

COM+ é que fornece a tecnologia de componentes para aarquitetura Microsoft Windows Distributed (Windows DNA, hoje.NET), que, permite unificar aplicações WEB e Cliente/Servidor.

É uma excelente opção de desenvolvimento DataSnap!

CORBACommon Object Request Broker Architecture - É o padrão

desenvolvido e proposto pela OMG (Object Management Group),órgão composto por diversas empresas de informática – IBM,

DELPHI

Page 20: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 21

Cannon, Sun entre outras.

O CORBA propõe a total independência de plataforma, totalindependência de Hardware e é claro linguagens deprogramação. Também especifica a criação e a elaboração demodelos Orientado a Objetos para desenvolvimento de formadistribuída.

É um padrão!

Digamos que é o concorrente direto do COM/COM+, comtodos os recursos apresentados do COM+ , mas, como citado maisacima é independente de plataforma e tem diferenças estruturaisnos seus recursos e, inclusive na forma como são tratados osobjetos. Na verdade não posso dizer que o CORBA é concorrentedo COM+, e sim, do MDCA (Microsoft Distributed ComponentArchitecture). Uma comparação entre CORBA x MDCA não é oobjetivo desse artigo, mas, posso adiantar que só esse assunto jádaria um bom livro.

Com o CORBA novas siglas surgem:

** ORB - Object Request Broker - É o responsável pelalocalização do objeto ao qual se destina a requisição, e também oenvio de parâmetros reconhecido por este objeto.

O papel do ORB é o mesmo do DCE-RPC/RFC-Stackexplicados no DCOM.

Falando em parâmetros, um dos principais objetivos do ORBé converter os tais parâmetros num formato independente deplataforma, isto é, posso ter um cliente usando o Macintosh parainvocar os métodos e, o mesmo ser reconhecido no UNIX e vice-versa.

O envio e o recebimento de parâmetros se chama: Marshall eUnMarshall. O VisiBroker que acompanha o Delphi Enterprise, éo ORB da Borland.

** IIOP - Protocol Inter ORB Internet - Protocolo decomunicação baseado no TCP/IP.

O protocolo padrão do CORBA é o IIOP, que descarta o uso doHTTP.

** BOA - Basic Object Adapter - É o adaptador de interfacespara acesso ao ORB.

Ele está acima do ORB e esconde a diferença entre os serviçosdo ORB e o núcleo do CORBA.

** IDL - Linguagem de definição de Interfaces.

CORBA mereceria um livro inteiro explicando apenas os seusconceitos e seus recursos com mais detalhes.

aplicações usando os protocolos TCP e ou UDP. Seu uso deixaa aplicação “client” mais leve. Como TCP/IP está presente namaioria dos S.O.s do mercado, seu uso é bastante interessante.Um problema envolvendo o Sockets é que o mesmo não sabequando um “client” caiu, desta forma, ainda fica a referência noservidor, sendo assim, os seus recursos não são liberados. ODCOM/COM+ envia uma mensagem de tempos em tempos paraa estação para saber se a mesma se encontra no ar, caso não, omesmo libera os seus recursos e decrementa a contagem dereferência desse cliente, coisa que, como já citado, não acontececom o Socket.

HTTPHyper Text Transfer Protocol - Funciona sobre TCP/IP e

suas chamadas aos métodos são iguais ao RPC. Com uso doHTTP podemos comunicar nossas aplicações sem complicaçõescom o Firewall e autenticação de usuários na WEB. O mesmotambém não mantém informações sobre os seus Clientes etambém não tem o controle de qual cliente se encontra ativo. Omesmo deve ser executado pelo IIS 4 e ou superior e aindadistribuir a DLL: Wininet.dll e instalar no Servidor WEB a DLLHTTPsrvr.dll.

SOAPSimple Object Access Protocol - É a última moda dos

protocolos de comunicação.

SOAP é um modo de usar a infraestrutura da Internetexistente para permitir que as aplicações comuniquemdiretamente entre si sem serem bloqueadas por Firewalls.

SOAP foi definido em XML. Quando chamamos os métodosatravés de RPC os mesmos também são codificados em XML. Otransporte das mensagens é feito através de HTTP que otransforma em protocolo leve e ainda elimina problemas com ouso do firewall no servidor. SOAP promete tornar as coisas maisfáceis para o desenvolvimento de sistemas e a conversação entresistemas distribuídos, já que o mesmo é feito em XML e ainda,acaba com a necessidade de atualizarmos o Windows 95.

É uma excelente opção de desenvolvimento DataSnap!

Um pouco de Delphi.Citei todos os protocolos suportados pelo Delphi para

desenvolvimento DataSnap, mas, ainda não citei os componentesque são usados para a comunicação com esses protocolos.

É uma excelente opção de desenvolvimento DataSnap!

SocketsPermite que sua aplicação se comunique com outras

DELPHI

Page 21: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE22

** TDCOMConnection - Acesso a DCOM, COM+;** TSocketConnection - Acesso a Sockets;** TWebConnection - Acesso a HTTP;** TCORBAConnection - Acesso a CORBA;** TSOAPConnection - Acesso a SOAP;

Quis falar um pouco de Delphi para sairmos um pouco deconceitos, mas, sem perder o nosso objetivo.

ConclusãoMostrei nesse artigo o conceito e para que serve cada padrão/

tecnologia que ouvimos falar no dia-a-dia.A escolha do protocolo/padrão correta para a nossa

necessidade é a chave do sucesso para os nossos sistemasdistribuídos.

Sucesso e Saúde a todos!Um Abraço.

Anderson Haertel Rodrigues

Consultor em desenvolvimento de Sistemas Client/Server-MultiCamadas/DataSnap.

Oferece treinamentos para empresas em: InterBase, SQL-Server, Delphi e COM+.

[email protected] - [email protected]ópolis - Santa Catarina - Brasil.

Quase todos os componentes citados se encontram no GuiaDataSnap do Delphi 6, menos o SOAPConnection que seencontra no Guia WebServices.

Dentre os protocolos apresentados, os únicos que nãorecomendo mais são os: DCOM e MTS, porque, os mesmos fazemparte do COM+ e este ainda implementou mais recursos.

No próximo artigo partiremos realmente para o Delphi.Mostro no próximo artigo as Interfaces.

A versão do Delphi usada para nossos exemplos será a 6.0Update Pack 2.

DELPHI

Page 22: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 23

INTERBASE

No mundo do marketing de massa, somente as marcasdivulgadas insistentemente ou através de eventos milionários sãolembradas pelos profissionais da informática. Portanto, seperguntarem a você sobre um Banco de Dados Relacional, suamente se volta automaticamente para Oracle ou SQL Server. Nãoqueremos dizer com isso que os dois maiores pesos pesados domercado tenham qualquer coisa que os desabone tecnicamentefalando. Mas quando o assunto é investir neles, seus problemasentão começam. E começam por onde mais nos preocupamos hojeem dia, no custo.

Quanto custa hoje adquirir, treinar e manter bases de dadoscom os ricos e famosos? Muito dinheiro, a começar pela aquisiçãodo software.

O fabricante terá sempre um argumento para convencê-loque ter uma “Ferrari” custa caro e é para poucos.

E que toda empresa que quiser produzir com qualidadeprodutos e serviços deverá ter sua cota de investimento.

Verdade? Infelizmente sim, principalmente em se tratandodas grandes Software Houses.

Você até concorda, afinal você é uma grande SoftawareHouse, apenas não chega a ser uma “Software House Grande”,com um andar todo num elegante edifício do centro da cidade enem com centenas de funcionários.

Sua realidade é um bom escritório, duas salas, digamos, outalvez uma pequena casa, alguns colaboradores, às vezes atéuma ou duas dezenas deles. Mas seus clientes estão satisfeitos

Interbase? Sim!Porque não?

com seus produtos e apenas gostariam talvez de algumasfacilidades adicionais como, por exemplo um Banco de Dados quefosse à prova de perda de índices, recuperasse as informaçõesmais rapidamente ou tivesse mais segurança sem aumentarmuito o custo.

E você é o único com essas características nesse imenso país?Não. Acredite, você é a imensa maioria do mercado, que empregae gera benefícios sociais que nem de longe a grandes podem fazero que você faz, levando a informática a todas as empresasgrandes ou pequenas, por um custo que quebraria qualquer umaque se intitulasse “grande”.

Já pensou que este apelo ao seu produto está mais próximo doque você pensa? Pois é, ele é o Interbase e está contido no seuDelphi 6, com cinco estações disponíveis para o seu uso naplataforma Windows.

Quer mais uma dica? Pois ele está também a sua disposiçãona plataforma Linux, fazendo parte dos produtos denominados“Open Source” cujo assunto falaremos numa outra oportunidade.

Visite o endereço: http://info.borland.com/devsupport/interbase/opensource/

Mas não esqueça de ler o contrato de licença, afinal emboraquase gratuito, algumas regras precisam ser observadas eseguidas. Mas acredite: é hoje o melhor e mais poderoso produtoquando se fala em Custo X Benefício.

O mais interessante é que o site disponibiliza o Interbase paraa plataforma Solaris, bem como documentação completa

Page 23: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE24

(infelizmente apenas em inglês, mas aí também é quererdemais!) e alguns aplicativos para uso e administração. Vale apena conferir.

Muito bem, agora vamos falar um pouco mais tecnicamente eapresentar uma lista com alguns dos aspectos mais importanteincluídos nesse poderoso produto da Borland:

· Suporte a protocolo de rede – Todas as plataformas doInterbase suportam TCP/IP, NetBEUI/Named pipes paraWindows/Windows NT/2000, além de IPX/SPX em plataformaNetware.

· Padrão ANSI-92 - Conformidade com o padrão ANSI-92 paraSQL.

· Acesso simultâneo a bases de dados – Uma aplicação podefazer acesso ao mesmo tempo em várias bases de dados.

· Otimização de queries – O Servidor pode otimizarautomaticamente as queries e você pode criar manualmente umplano de execução.

· Tipos de dados e filtros blob – Suporte automático a dadossem formato ou no formato gráfico.

· Intergridade referencial – Suporte total a integridadereferencial declarativa (relacionamentos entre chaves primáriase estrangeiras).

· Stored Procedure – Suporte a programação procedural paraações de queries complexas.

· Trigger – Suporte a programação modular deprocedimentos embutidos em tabelas sensíveis a eventos.

· Alerta de eventos – Mensagens passadas pelo Banco deDados à aplicação.

· Views atualizáveis – Tabelas virtuais atualizadas on-linecontendo a situação mais atual.

· User Defined Funtions – Funções criadas pelo própriousuário.

Creio que essas habilidades são suficientes para convencê-lo efazê-lo criar coragem para usar um banco de dados relacionalcom um custo bem baixo.

Nos próximos artigos falaremos mais do Interbase. Até apróxima!

Por: Oswaldo Salzano Filho – [email protected]

Oswaldo Salzano Filho é diretor da Automatech, onde éresponsável pelos cursos profissionais. É DBA há oito anosutilizando Oracle, SQL Server e Interbase. Profissionalexperiente com passagens em empresas como Citibank N.A.,Rede Record e Indústrias Villares. É também um dosresponsáveis pelo site www.devclub.com.br, voltado acomunidade de alta tecnologia.

INTERBASE

Page 24: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 25

Durante o desenvolvimento de uma aplicação, infelizmentenão estamos livres de erros e nossa tarefa é eliminar estes errosque por ventura venham a surgir. Uma ferramenta muitoimportante que nos auxilia nesta tarefa é o depurador de errosou “Debug”, o qual nos permite executar linha a linha nossaaplicação e ver o rumo que nossa aplicação está tomandodurante o fluxo de execução, isso é sem dúvidas formidável!Porém, quando desenvolvemos aplicações com Bancos de Dados,temos mais uma camada à nos preocupar, pois nossa aplicaçãoirá conversar com este banco de dados através de instruções SQLe vice-versa e o “Debug” limita-se a depurar o código fonte geradopelo Delphi, mas não a troca de mensagens entre nosso aplicativoe o Banco de Dados.

Em conexões como por exemplo o BDE, existe umaferramenta chamada “SQL Monitor” que permite aoprogramador visualizar a troca de mensagens entre o aplicativoe o Banco de Dados. O dbExpress, sendo uma camada de acessototalmente voltada para Servidores SQL não poderia ficar de forae traz um excelente componente que nos permite monitorartodas as ocorrências geradas por nós e automaticamente pelaaplicação como por exemplo quando executamos o métodoApplyUpdates em um TClientDataSet. Este componente é o“TSQLMonitor”.

Usando o TSQLMonitorO TSQLMonitor trabalha associado a um componente

TSQLConnection que na realidade indica qual banco de dadosiremos monitorar. O TSQLMonitor intercepta as mensagens egera uma lista de “Strings” a qual poderá ser gravada em umarquivo texto. Para utilizá-lo, siga os passos abaixo:

1. Adicione um componente de TSQLMonitor aoformulário ou módulo de dados que conté m o componente deTSQLConnection cujos comandos SQL você quer monitorar.

2. Ligue a propriedade SQLConnection do TSQLMonitorao componente TSQLConnection à ser monitorado.

3. Altere a propriedade “Active” para True.Enquanto os comandos SQL são emitidos ao usuário, a

propriedade “TraceList” do TSQLMonitor está sendo atualizadaautomaticamente para listar todos os comandos SQL que são

interceptados. Você pode salvar a lista de Strings interceptadasespecificando um valor para a propriedade “FileName” e entãoajustando a propriedade “AutoSave” para “True”. “AutoSave”força o TSQLMonitor a salvar o conteúdo de “TraceList” toda vezque uma nova ocorrência é interceptada.

Porém, se você não quiser salvar linha a linha cada vez queuma mensagem é interceptada, poderá fazer um controle noevento onLogTrace do TSQLMonitor através de um contador porexemplo e descarregar a cada 10 linhas e zerando o “TraceList”após isso, como por exemplo:

procedure TForm1.SQLMonitor1LogTrace(Sender: TObject;CBInfo: Pointer);var LogFileName: string;begin with Sender as TSQLMonitor do begin if TraceCount = 10 then begin LogFileName := ‘c:\log’+ IntToStr(Tag)+ ‘.txt’; Tag := Tag + 1; {incrementa para gerar novoarquivo } SaveToFile(LogFileName); TraceList.Clear; { limpa TraceList } end; end;end;

Eventos do TSQLMonitorO componente TSQLMonitor possui dois eventos:

OnLogTrace => Este evento ocorre imediamente quandouma nova mensagem é adicionada ao “TraceList”, sendo queneste evento podemos ir adicionando as ocorrências linha a linhaao nosso LOG.

OnTrace => Ocorre quando uma mensagem fordetectada mas antes que esteja registrada ao “TraceList”, comisso é possível fazer um tratamento permitindo ou não que estanova mensagem seja enviada ao “TraceList”.

Debugando aplicações dbExpressPor Alessandro Ferreira – Equipe de Suporte The Club [email protected]

DELPHI

Page 25: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE26

Usando “Callbacks” para monitorar comandos SQLEm vez de usar o TSQLMonitor, você pode customizar a

maneira que sua aplicação envia comandos SQL usando ométodo “SetTraceCallbackEvent” do componente de conexão ouseja, o TSQLConnection. “SetTraceCallbackEvent” recebe doisparâmetros:

-CallBack, do tipo TSQLCallbackEvent-User-Defined, valor passado a função de CallBack.A função de CallBack recebe dois parâmetros: CallType e

CBInfo:-CallType é reservado para uso futuro;-CBInfo é um ponteiro a um registro que inclua a categoria

(a mesma que CallType), o texto do comando SQL, e o valor user-defined que é passado ao método de SetTraceCallbackEvent.

A função de CallBack devolve um parâmetro: CBRType,tipicamente cbrUSEDEF.

A função de CallBack é executada cada vez que o componentede conexão TSQLConnection envia ou recebe alguma instruçãoSQL.

Importante: Não utilize o “SetTraceCallbackEvent” se você jápossuir um componente TSQLMonitor ligado aoTSQLConnection, pois o TSQLMonitor utiliza o mecanismo de“CallBack” e o TSQLConnection suporta somente um chamadorde CallBack por vez.

Veja abaixo um simples exemplo da função de CallBack:

function SQLTraceCallBack(CallType: TRACECat; CBInfo:Pointer): CBRType; stdcall;

var CBI: pSQLTRACEDesc;begin Result := cbrUSEDEF; if CBInfo <> nil then Begin CBI := pSQLTraceDesc(CBInfo); Form1.ListTrace.Items.Add(CBI.pszTrace); // adiciona na lista. end;end;

Para ativar, conforme mencionamos acima utilizaremos ométodo SetTraceCallbackEvent:

SQLConnection.SetTraceCallbackEvent(SQLTraceCallBack,1);

* O projeto exemplificando o uso do CallBack e doSQLMonitor está disponível para download em nosso site noendereço www.theclub.com.br/revista/sqlmon.zip.

ConclusãoO componente TSQLMonitor e as chamadas a função de

“CallBack” são sem dúvidas nenhuma uma poderosa ferramentade depuração onde podemos ver e analisar a constante troca deinformações entre nosso aplicativo e o Banco de Dados,possibilitando assim descobrir erros, analisar performance emelhorar a qualidade de nosso software. Abraço e até a próxima.

DELPHI

Page 26: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 27

Antes de iniciar meu primeiro artigo para este excelenteclube de desenvolvedores, pioneiro no Brasil, desde os áureostempos do nosso amigo Clipper ou Clippão para os íntimos, queroparabenizar toda a equipe The Club pelos artigos publicados, eporque não dizer pela coragem de publicar alguns artigospolêmicos, levando até o leitor, informações verdadeiras e deextrema importância. Além disso, para quem não sabe, o TheClub também foi pioneiro na parceria de marketing com aBorland, investindo alto na ferramenta Delphi, quando muitosdiziam que a Borland iria afundar. Quem adquiriu os produtosda linha Delphi, recebereu um catálogo de produtos com o nossoThe Club entre os anunciantes. Parabéns amigos.

Ok. Ok (imitiando o “glorioso” Nelson Rubens), já faleidemais.

Meu primeiro artigo visa alertar aos leitores sobre um graveproblema: Portas Abertas .

Quantos de vocês trancam a porta de suas casas ao anoitecer,ou até mesmo à luz do dia? Acredito que a maioria. Com o forteavanço da Internet em todo o planeta, nos deparamos com omesmo problema em nossos computadores:Portas Abertas.

Neste artigo iremos desenvolver um aplicativo para scannear eapresentar as portas que estão abertas num determinadoservidor.

Para facilitar a compreensão de todos, estou apresentandoum exemplo muito simples, onde o usuário informa o Nome doServidor (ou endereço IP), e o intervalo de portas a serem scanneadas.

Os leitores com conhecimentos mais avançados ou know-how emThreads irão me crucificar por falta das benditas. Acontece que oprincipal objetivo deste exemplo é demonstrar o uso docomponente TCPClient, e não do uso de Threads. Isso iria complicarum pouco a compreensão dos nossos amigos leitores.

Portas Abertas:Seja Bem-Vindo

Por Emerson Facunte

Aos amigos que se encaixam neste perfil, minhas sincerasdesculpas.

Bem, continuando, agora vem a parte boa: mão-na-massa.Vamos iniciar um novo projeto no Delphi (grave a unit como

un_scan.pas e o projeto como pscan.drp) e inserir os objetos queseguem:

Consultor de Tecnologia com diversos livros publicados, especialista em desenvolvimento de aplicações e-Business utilizando aferramenta Delphi, baseado em WebSnap, DataSnap, BizSnap e ISAPI/Apache Modules.Além de oferecer treinamentos para iniciantes em Java, e aplicações distribuídas.

Com o foco no objeto pnTopo insira os seguintes objetos:

DELPHI

Page 27: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE28

Agora vamos inserir os objetos de controle e interatividadecom o usuário.

Mantenha o foco no objeto pnTopo e insira os seguintes objetos:

Neste ponto vamos inserir o botão para iniciar o processo descanner de portas.

Prosseguindo, vamos criar o módulo de saída dasinformações.

Agora com o foco no formulário e não mais no objeto pnTopo,insira um objeto do tipo Tpanel alterando as seguintespropriedades:

Vamos inserir os objetos deste painel, como segue:

Dentro deste mesmo painel pnDados, insira outro objeto do tipoTPanel alterando as propriedades que seguem:

Com isso concluímos a primeira etapa do projeto.

Com o foco no objeto pnProgresso insira os seguintes objetos:

DELPHI

Page 28: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE 29

Ufa !!! E para concluir a “enorme” lista de objetos, insira umdo tipo TTCPClient que se encontra na seção Internet.

Finalmente vamos codificar o nosso projeto.Crie uma variável global pertencente a nossa classe Form1.,

com o nome Parar, do tipo Integer; veja:var Form1: TForm1; parar:integer; // variavel auxiliarimplementation

A variável Parar será utilizada para finalizar o processo deScanner das Portas. Neste ponto é que poderíamos criar uma Thread,mas não vamos complicar.

Só para aliviar um pouco a forte tensão, vamos dar umaolhadinha na interface do nosso projeto:

Figura 1. Projeto Port Scanner

001 procedure TForm1.BtScanClick(Sender: TObject);

002 var i:integer;

003 begin

004 try

005 ListadePortas.Clear; // Limpa a Lista de Portas

006

007 parar:=0; // 0 = continua, 1 = conclui

008

009 // Definições da barra de progresso

010

011 ProgressBar1.Max:=Fim.Value;

012 ProgressBar1.Min:=Inicio.Value;

013

014 PainelProgresso.Visible:=True;

015 TcpClient1.RemoteHost := NomeServidor.Text;

016

017 for i := Inicio.Value to Fim.Value do

018 begin

019 if parar=1 then break; // finaliza o laço

020

021 ProgressBar1.Position:=i;

022 porta.Caption:=inttostr(i);

023

024 Application.ProcessMessages;

025 TcpClient1.RemotePort := inttostr(i);

026 TcpClient1.Active:=true;

027

028 if TcpClient1.Connect then

029 ListadePortas.Lines.Add('Porta ['+ inttostr(i) + ']aberta');

030 TcpClient1.Disconnect; // disconeta porta

031 end; //for loop

032 except

033 on E:Exception do begin

034 ListadePortas.Lines.Add('Erro: ' + E.Message);

035 end; // end on do begin

036 end; //try block

037

038 ListadePortas.Lines.Add('Scaneamento das portasfinalizado !');

039 PainelProgresso.Visible:=False;

040 end;

041

042

Vamos codificar o botão btScan, responsável pelo núcleo donosso projeto. No evento onClick do objeto btScan, insira o códigoque segue (para facilitar, numerei as linhas de programação, deforma que possamos analisar melhor o código).

Vamos ao detalhamento do código:

A linha 002 declara uma variável “ i “ que irá auxiliar nolaço de contagem das portas.var i:integer;

Na linha 004 iniciamos uma proteção de erros da aplicação.try

DELPHI

Page 29: Revista The Club Megazine - 07/2002 · treinamentos na arquitetura .NET desde outubro de 2000. ... comando “VBC Alo.cs”. ... Vantagens e desvantagens A única vantagem de compilar

MeGAZINE30

A linha 005 limpa o conteúdo do objeto ListaPortas.

ListadePortas.Clear

Na linha 007 inicializamos a variável parar com o valor 0, deforma que o sistema continue scanneando as portas até o limitesolicitado pelo usuário, ou através do pressionamento da teclaParar, fazendo com que a variável receba o valor 1

parar:=0;

As linhas 011 e 012 configuram o objeto ProgressBar1 demaneira que o mesmo fique compatível com as informaçõesporta inicial e final. Com isso temos um progresso adequado.

ProgressBar1.Max:=Fim.Value; ProgressBar1.Min:=Inicio.Value;

A linha 014 torna visível o objeto PainelProgresso.

PainelProgresso.Visible:=True;

A linha 015 configura o servidor remoto do objeto TcpClient1.

TcpClient1.RemoteHost := NomeServidor.Text;

A linha 017 inicia um loop baseado nas informações PortaInicial e Final.

for i := Inicio.Value to Fim.Value do

Já na linha 019 nossa aplicação verifica se existe a obrigaçãode paralisar o loop. Esta informação vem do botão btParar.

if parar=1 then break;

A linha 021 posiciona a barra de progresso em relação aoandamento do loop.

ProgressBar1.Position:=i;

Na linha 022 apenas mostramos ao usuário através do objetoPorta, qual porta está sendo scanneada no momento

porta.Caption:=inttostr(i);

A linha 024 solicita ao Windows que processe as informaçõesda aplicação, de maneira que a mesma não tenha o efeitocongelamento.Application.ProcessMessages;

As linhas 025 configura a porta que deve ser scanneada, a 026tenta ativar, e a 028 verifica se houve sucesso na ativação, e emcaso afirmativo, a linha 029 adiciona no objeto ListadePortas ainformação que a Porta está aberta.

TcpClient1.RemotePort := inttostr(i); TcpClient1.Active:=true; if TcpClient1.Connect then ListadePortas.Lines.Add(‘Porta [‘+ inttostr(i) +‘] aberta’);

A linha 031 disconecta a porta independente do seu estado(aberta ou fechada).

TcpClient1.Disconnect;

A linha 032 finaliza o loop. As linhas 033, 034 e 035 tratamqualquer exceção ocorrida no bloco protegido (try...except...end).

end; //for loop except on E:Exception do begin ListadePortas.Lines.Add(‘Erro: ‘ + E.Message); end; // end on do begin end; //try block

Concluindo esta rotina, a linha 039 apresenta umamensagem indicando o fim do scanneamento das portas, e a 041 tornao objeto PainelProgresso invisível.

ListadePortas.Lines.Add(‘Scaneamento das portasfinalizado !’); PainelProgresso.Visible:=False;

Para concluir o nosso projeto, devemos codificar o botãobtParar com o seguinte código (no evento OnClick):

Parar:=1;

Amigos, agora é só executar aplicativo, informar o nome doservidor (caso seu próprio equipamento, digite localhost, no campoNome do Servidor), e o intervalo de portas a serem scanneadas.

IMPORTANTEEmbora seja possível, não recomendo o uso deste aplicativo

para scanear portas de servidores não-autorizados.Normalmenteutilizamos este tipo de aplicativo para vigiar nosso “quintal” e nãoo do vizinho..

Download do projeto: www.theclub.com.br/revista/pscanner.zip

DELPHI