Passo a Passo: RemObjects SDK e DataSnap

Para ajudar quem deseja utilizar o RemObjects SDK como camada de comunicação de um aplicativo DataSnap, substituindo o BSS, aqui vai um passo a passo usando Delphi 2006 e RemObjects SDK 5 para criação de um servidor Combo (que pode funcionar como serviço ou como aplicativo standalone):

File, New, Other. Em Delphi Projects, procure por RemObjects SDK e selecione Combo Service/Standalone.

ro1.JPG

O wizard do RO aparece. Escolha uma pasta para o projeto, as outras configurações não precisam ser alteradas. Clique OK.

ro2.JPG

Nesse momento você já tem um servidor e um cliente prontos, organizados em um grupo de projetos na IDE.

ro3.JPG

Vamos criar um novo serviço no servidor que exponha nossos DataSetProviders do DataSnap. Dê um clique duplo no NewProject.exe para selecionar o servido de aplicação e no menu RemObjects da IDE selecione “Edit Service Library” ou Ctrl+Alt+U. Isso vai abrir o Service Builder já mostrando que seu servidor tem um serviço denominado “NewService”.

ro4.JPG

Para criar um serviço DataSnap, precisamos incluir um RODL que já acompanha o RO e que possui todas as definições da interface padrão de servidores DataSnap. Para isso, estando no Service Builder, selecione o menu Edit, Use Existing RODL e depois selecione DataSnap. Agora o nome “uRODataSnap” já deve aparecer na treeview ao lado esquerdo.

ro5.JPG

Agora crie o novo serviço clicando no botão Service e dê o nome de “DataSnapService”. Na combo Ancestor selecione AppServer. Isso diz para o RO que esse serviço é descendente de AppServer, que é a interface de servidores DataSnap.

ro6.JPG

Feche o Service Builder, e tente compilar o servidor (Ctrl+F9). Neste momento uma nova tela do RO aparece perguntando como você deseja implementar o novo DataSnapService. Utilize a opção recomendada, “RemObjects SDK Remote Datamodule”.

ro7.JPG

Agora você já tem um DataModule onde pode colocar seus componentes de dados e o DataSetProvider.

ro12.JPG

Coloque alguns, compile o servidor e execute usando a opção Launch Server Executable do menu RemObjects SDK na IDE ou usando o atalho Ctrl+Alt+F9. Seu servidor já está rodando.

ro9.JPG

Dê um duplo clique no NewProjectClient.exe para selecionar o cliente. Abra o form do cliente, apague o componente RORemoteService, que não utlizaremos e coloque um componente TRODataSnapConnection. Selecione o componente e ligue com o ROChannel e a ROMessage que já estão no form. Na propriedade ServerName, coloque o nome do serviço DataSnap que criamos no servidor, ou seja, “DataSnapService”.

ro10.JPG

Coloque um ClientDataSet no form, ligue ele ao RODataSnapConnection usando a propriedade RemoteServer e selecione o provider na propriedade ProviderName.

ro11.JPG

Pronto! Você já tem um aplicativo em 3 camadas DataSnap usando RO como camada de comunicação. Se desejar rodar o servidor como serviço do Windows, basta registrar o serviço usando “NewProject.exe /install” na linha de comando.

25 Comments

  • Fausto
    3/8/2007 - 07:38 | Permalink

    Muito bom Erick, acho que com este artigo pelo menos quem esta iniciando já pode dar o pontapé inicial, pois dai em frente é só complementar com o help e os artigos do site do RO..
    Me inscrevi no news do RO e fiquei contente de ver sua participação no news.
    Abraço
    Fausto

  • Francisco
    3/8/2007 - 08:44 | Permalink

    Parabens pelo artigo. atualmente uso bss, existe vantagens no remobsject que valeria a pena uma troca? abraços…

  • 3/8/2007 - 08:57 | Permalink

    Francisco, essa é uma pergunta difícil para eu responder pois nunca trabalhei com BSS, mas já conversei com muita gente que migrou do BSS para o RemObjects e só falam maravilhas.

  • Guilherme
    3/8/2007 - 10:06 | Permalink

    Erick, conta pra nós algumas dessas maravilhas !
    Eu não trabalho a muito tempo com desenvolvimento, mas tenho usado o BSS e não tem ma apresentado problemas. Indepentente disso gostaria de conhecer melhor o Rem.
    Pelo menos dá uma luz melhor a respeito das vantagens.Vlw.

  • 3/8/2007 - 10:13 | Permalink

    Guilherme, vou pedir para algumas pessoas me ajudarem nisso, pois como eu te disse nunca usei BSS e não posso sair falando algo sem ter certeza.

  • Reuber
    3/8/2007 - 10:33 | Permalink

    Erick, nós da comunidade Delphi só temos a agradecer por esta iniciativa. Há muito tempo ouço falar do RemObjects e não tive sucesso ao tentar aprender a usá-lo sozinho, mas com esse passo-a-passo, foi de primeira. Estou fazendo testes com a versão 4 e caso forem satisfatórios, prentendo adquirir a versão 5. O que há de melhoria e vantagens da versão 5 em relação à versão 4.

  • 3/8/2007 - 11:01 | Permalink

    As novidades da versão 5 estão aqui: http://www.remobjects.com/product/page.asp?id={330FB1E9-D47C-47EE-B682-9CCBE9677C4D}

  • Guilherme
    3/8/2007 - 15:56 | Permalink

    Blz Erick, aproveitando vou dar uma pesquisada tb. Mas qualquer coisa que venha para ajudar será bem vindo. Se puder, expõe apenas alguns pontos que você acha legal no Rem e assim já vai ajudar a despertar mais o interesse dos colegas no assunto, não a caso de comparação com o BSS, apenas para conhecer melhor a suite.

  • 4/8/2007 - 12:22 | Permalink

    Farei mais posts em breve mostrando outros recursos interessantes.

  • Luciano França
    4/8/2007 - 21:39 | Permalink

    Erick gostaria de saber como eu poderia fazer para criar um servidor generico com o RO, onde eu iria usar o Banco Firebird 2.0.
    Os componentes Asta tem um servidor generico.
    como existe algum já pronto no RO, nos exemplos dele eu não achei nada a respeito.

    Grato.
    Luciano França.

  • Guilherme
    6/8/2007 - 07:50 | Permalink

    Blz Erick, estamos aguandando.

  • Robert
    6/8/2007 - 22:24 | Permalink

    “Feche o Service Builder, e tente compilar o servidor (Ctrl+F9). Neste momento uma nova tela do RO aparece perguntando como você deseja implementar o novo DataSnapService. Utilize a opção recomendada, “RemObjects SDK Remote Datamodule”. ”

    Nesta etapa, não foi pedido para implementar o datasnapservice. Estou usando o Delphi 2007 com a versao 5.0.21.601

    Está faltando alguma coisa ?

    Robert.

  • Tiago
    16/8/2007 - 18:51 | Permalink

    Olá Erick!
    A algum tempo tenho lido a respeito da RO e seus produtos, e tenho tentado entender como eles funcionam e tudo mais.
    Gostaria de saber se vc sabe se alguém já conseguiu implementar/desenvolver uma solução baseada em Firebird+IBO com o DataAbstract. Pelo o que eu li existe um driver que pode ser utilizado juntamente com o IBObjects.
    Atualmente trabalho com um sistema clássico 2 camadas, Delphi+Firebird+IBO. Funciona que uma blz, é estável como uma rocha, de tamanho considerável (450.000 linhas), mas já estamos pensando em como portá-lo (ou desenvolver um novo) para 3 camadas.
    Então se você souber de algo, eu fico muito agradecido.

    Tiago.

  • 18/8/2007 - 12:56 | Permalink

    Robert, tente forçar a recriação das units usando a opção “recreate units from RODL” no menu RemObjects da IDE. Veja se iso ajuda.

  • Paulo Portella
    10/9/2007 - 17:52 | Permalink

    Erick/Robert,
    Tambem tive o mesmo problema, mas estou usando a versao 4.0.11.509, e nao consegui fazer a tela pra eu escolher RemObjects SDK Remote Datamodule.
    Porem, o exemplo funcionou mesmo assim…
    Agora vejo que tem muito, MAS MUITA COISA, pra ser descoberta.
    Entao vai a dica Erick.-> Tah em suas maos (dedos) distrinchar essa bagaça e ajudar a galera que tah precisando adentrar nesse mundo fascinante.
    Estou adorando cada vez mais.
    Poste mais exemplos principalmente sobre DA, pois lembrei-me que no exemplo DA02 nao estou conseguindo faze-lo funcionar….

  • Marcello Dias
    16/9/2007 - 19:59 | Permalink

    Tenho orgulho de ter sido um dos primeiros a vislumbrar o poder do rem objects.
    Em 2002 escrevi um artigo no site Delphi 3000.
    Lembro de ter colocado um wish list no site da borland pedindo que este produto viesse junto com o Delphi 8.
    Se eles tivessem me ouvido…

    Agora faço as mesmas críticas que fazia na época,o software é muito mal documentado,sem exemplos mais complexos.

    Por exemplo gostária de ume xemplo que tivesse um datamodule e como invocar um método deste datamoude a paritr do cliente.
    Nos exemplos eles ensinam a chamar os métodos que são criados automáticamente,mas gostária de criar meu próprios métodos.

  • 16/9/2007 - 22:39 | Permalink

    Marcello, chamar seus próprios métodos é uma tarefa muito simples. Você realmente tem dúvidas nisso?

  • Marcello Dias
    17/9/2007 - 13:21 | Permalink

    Eu quero definir um metódo dentro de um datamodule.
    E chamar a partir do cliente.
    No Dcom vocÊ tem que acessar a TLB,criar o método na unha,desristrar o servidor e depos registra o Servidor de novo.
    Eu não vi nenhum sample,falando passo a passo como declarar um novo método dentro de um datamodule.
    Sei que se peder algum tempo consigo,mas acho que é para isto que os Samples existem.

  • Corlos Gonzaga
    17/10/2007 - 14:47 | Permalink

    Erick, vc poderia falar um pouco em relaçao a segurança deste…?

  • Elieser
    21/12/2007 - 10:05 | Permalink

    Olá Eric! Se eu tiver vários clientes acessando bases diferentes no mesmo servidor, a melhor alternativa é fazer um serviço (executável) para cada cliente?

  • 25/12/2007 - 20:33 | Permalink

    Elieser, acho que a melhor alternativa seria guardar uma referencia para o banco de dados que o cliente está usando na sessão do usuário.

  • 16/1/2008 - 16:58 | Permalink

    Olá Erick,

    Parabéns pelo artigo!
    Este foi meu primeiro contato com o SDK e não tive problemas para implementar o exemplo.

    Abraços,

    Ulisses
    http://www.cyberconn.com

  • Cristiano Costa
    27/8/2008 - 15:36 | Permalink

    Erick, eu tenho um procedimento me retornando um array, e dentro desse array tenho uma lista. Se eu faço um laço para ler esse array ele ta me retornando somente 1 valor desse array. O que pode ser? Aguardo…

  • Mauricio
    23/11/2008 - 13:00 | Permalink

    Erro ao compilar NewLibrary_Intf.dcu não achei em parte algum .
    Obrigado.

  • Dércio
    23/3/2009 - 16:49 | Permalink

    Erick..
    Estou com a versão trial do componente.
    Tentei fazer o passo a passo com Delphi 7, porém na segunda tela, quando clico no Ok, não acontece nada, ou seja, não abre a terceira tela que tem no passo a passo. Qual será o problema ?

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>