<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andreano Lanusse &#124; Tecnologia e Desenvolvimento de Software &#187; DataSnap</title>
	<atom:link href="http://www.andreanolanusse.com/pt/tag/datasnap/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreanolanusse.com/pt</link>
	<description>Andreano Lanusse blog - acesse artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software, técnicas de programação, banco de dados, jogos e mais.</description>
	<lastBuildDate>Thu, 17 May 2012 19:34:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Video: Aprenda como utilizar DataSnap Connectors na prática</title>
		<link>http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-aprenda-como-utilizar-datasnap-connectors-na-pratica</link>
		<comments>http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 05:24:55 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Embarcadero]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1541</guid>
		<description><![CDATA[<p>Neste vídeo explico como você pode utilizar DataSnap Connectors para conectar suas aplicações móveis, como exemplo mostro como conectar apps Windows Phone e Android, mas você pode conectar aplicações iOS e BlackBerry também. &#160; Posts relacionadosVídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Neste vídeo explico como você pode utilizar DataSnap Connectors para conectar suas aplicações móveis, como exemplo mostro como conectar apps Windows Phone e Android, mas você pode conectar aplicações iOS e BlackBerry também.</p>
<p>&nbsp;</p>
<p><iframe src="http://www.youtube.com/embed/PpzB7TW-xg4" frameborder="0" width="480" height="360"></iframe></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/" title="Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil">Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/" title="Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE">Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/como-implementar-failover-e-load-balance-no-datasnap-2010/" title="Como implementar Failover e Load Balance no DataSnap 2010">Como implementar Failover e Load Balance no DataSnap 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</title>
		<link>http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented</link>
		<comments>http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 23:57:19 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[dbExpress]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1409</guid>
		<description><![CDATA[<p>Se você já utilizou o método TDBXDataSetReader.CopyReaderToClientDataSet provavelmente já se deparou com a mensagem &#8220;Feature not implemented&#8221;, esta exception ocorre porque o método CopyReaderToClientDataSet não suporta a cópia de campos Blob de um DBXReader para um ClientDataSet. A partir do Delphi XE2 Update 2 isso não é mais problema, o suporte a blob no método CopyReaderToClientDataSet [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Se você já utilizou o método TDBXDataSetReader.CopyReaderToClientDataSet provavelmente já se deparou com a mensagem &#8220;Feature not implemented&#8221;, esta exception ocorre porque o método CopyReaderToClientDataSet não suporta a cópia de campos Blob de um DBXReader para um ClientDataSet.</p>
<p>A partir do <a title="Disponibilizado Update 2 para Delphi XE2, C++Builder XE2 e RadPHP XE2" href="http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/">Delphi XE2 Update 2</a> isso não é mais problema, o suporte a blob no método CopyReaderToClientDataSet foi implementando.</p>
<p>Para saber como utilizar o método CopyReaderToClientDataSet na prática leia o artigo &#8220;<a title="Copiando estrutura e dados de um DBXReader para ClientDataSet – DataSnap 2010" href="http://www.andreanolanusse.com/pt/copiando-estrutura-e-dados-de-um-dbxreader-para-clientdataset-datasnap-2010/">Copiando estrutura e dados de um DBXReader para ClientDataSet  - DataSnap</a>&#8220;</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/" title="Conectando ao PostgreSQL com dbExpress ODBC driver">Conectando ao PostgreSQL com dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/" title="Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?">Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/" title="Apresentações do Delphi Conference 2010 disponível para download">Apresentações do Delphi Conference 2010 disponível para download</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Publicando providers durante o registro dinâmico de DataSnap Server Class</title>
		<link>http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class</link>
		<comments>http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 23:37:14 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1384</guid>
		<description><![CDATA[<p>Já faz algum tempo que publiquei aqui no blog sobre registro de DataSnap Server Class em tempo de execução, neste mesmo post surgiu vários comentários relacionados a não publicação dos Provider parte do ServerModule, o código original ao registrar o DSServerClass publicava apenas métodos (Server methods), mas não os Providers. A solução para este problema [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Já faz algum tempo que publiquei aqui no blog sobre registro de <a href="http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/">DataSnap Server Class em tempo de execução</a>, neste mesmo post surgiu vários comentários relacionados a não publicação dos Provider parte do ServerModule, o código original ao registrar o DSServerClass publicava apenas métodos (Server methods), mas não os Providers.</p>
<p>A solução para este problema é bem simples, basta registrar a classe TDSProviderDataModuleAdapter, a qual é usada internamente para permitir que o Provider esteja visível para os clientes DataSnap. TDSProviderDataModuleAdapter atua como um proxy entre TProviderDataModule no lado servidor e o TDSProviderConnection no lado cliente.</p>
<p>Poderíamos apenas mudar a implementação do método GetDSClass conforme abaixo, isso funcionaria, mas não seria a melhor implementação visto que estariamos sempre publicando os métodos da interface IAppServer utilizados pelo Provider e ClientDataSet, não faz sentido publicar esta interface se não há provider no ServerModule.</p>
<p>Tornar a publicação parametrizável traz maior flexbilidade e controle para a aplicação e para o desenvoldedor, fica a seu critério quando publicar ou não os providers, assim sendo precisamos apenas de um novo parâmetro na classe TSimpleServerClass.</p>
<pre class="brush: delphi">function TSimpleServerClass.GetDSClass: TDSClass;
begin
  Result := TDSClass.Create(FPersistentClass, False);
  Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;</pre>
<p>Abaixo temos o código atualizado, a única alteração foi no constructor que recebeu o novo parâmetro ExposeProvider, desta forma você decide se quer ou não publicar os providers.</p>
<pre class="brush: delphi highlight: [18,19,20,21,31,41,42]">type

unit SimpleServerClass;

interface

uses DSServer, Classes, DSCommonServer, DSReflect;

type

  TSimpleServerClass = class(TDSServerClass)
  private
    FPersistentClass: TPersistentClass;
    FExposeProvider : Boolean;
  protected
    function GetDSClass: TDSClass; override;
  public
    constructor Create(AOwner: TComponent; AServer: TDSCustomServer;
      AClass: TPersistentClass; ExposeProvider: Boolean; ALifeCycle: String);
      reintroduce; overload;
  end;

implementation

constructor TSimpleServerClass.Create(AOwner: TComponent;
  AServer: TDSCustomServer; AClass: TPersistentClass; ExposeProvider: Boolean;
  ALifeCycle: String);
begin
  inherited Create(AOwner);
  FPersistentClass := AClass;
  FExposeProvider  := ExposeProvider;
  Self.Server := AServer;
  Self.LifeCycle := ALifeCycle;

end;

function TSimpleServerClass.GetDSClass: TDSClass;
var
  isAdapted : Boolean;
begin
  isAdapted := FPersistentClass.InheritsFrom(TProviderDataModule);
  Result := TDSClass.Create(FPersistentClass, isAdapted);
  if FExposeProvider and isAdapted then
     Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;

end.</pre>
<p>Abaixo um exemplo onde são registradas 3 classes e somente uma delas expõe os Providers:</p>
<pre class="brush: delphi">procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);
begin
  Assert(AServer.Started = false, 'Não é possível adicionar classes com o servidor ativo');

  TSimpleServerClass.Create(AOwner, AServer, TGlobal, False, TDSLifeCycle.Server);
  TSimpleServerClass.Create(AOwner, AServer, TCustomer, True, TDSLifeCycle.Session);
  TSimpleServerClass.Create(AOwner, AServer, TObjectPool, False, TDSLifeCycle.Invocation);
end;</pre>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Monitoramento e controle de conexões em DataSnap XE2</title>
		<link>http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=monitoramento-e-controle-de-conexoes-em-datasnap-xe2</link>
		<comments>http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 16:59:26 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1371</guid>
		<description><![CDATA[<p>Uma das grandes novidades relacionadas ao DataSnap no Delphi e C++Builder XE2 é o monitoramento e controle de conexões TCP/IP a partir do servidor DataSnap, uma das grandes solicitações dos usuários de DataSnap, até a versão XE o monitoramente e controlo era possível mas requeria muito código por parte do desenvolvedor. Atende a pedidos isso [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes novidades relacionadas ao DataSnap no Delphi e C++Builder XE2 é o monitoramento e controle de conexões TCP/IP a partir do servidor DataSnap, uma das grandes solicitações dos usuários de DataSnap, até a versão XE o monitoramente e controlo era possível mas requeria muito código por parte do desenvolvedor. Atende a pedidos isso já não é mais necessário, tudo isso é parte do framework e neste artigo vou explicar como funciona.</p>
<p>Aproveitando a oportunidade, dia 30 de Novembro acontece o Delphi Conference 2011, o maior evento de Delphi do Brasil, um dia inteiro para aprimorar seus conhecimento em Delphi e ir a fundo nas mais recentes novidades. Todas as informações no site do evento <a href="HTTP://www.delphiconference.com.br" target="_blank">HTTP://www.delphiconference.com.br</a></p>
<p>Pra começar, toda a implementação do monitoramento e controle foi implementada para protocolo TCP/IP o que permite monitorar e derrubar qualquer conexão, assim sendo o componente TDSTCPServerTransporter recebeu dois novos eventos OnConnect e OnDisconnect, estes eventos são muito importantes, pois através deles gerenciamos a lista de conexões no servidor podendo fazer o que quiser com as mesmas. Além disso toda conexão está associado a um Session ID que é único, o Session ID já está disponível desde as versões anteriores do DataSnap.</p>
<p>Para exemplificar o funcionamento e implementação do monitoramento definimos uma lista (collection) conforme abaixo para armazenar as instâncias de cada conexão (TIdTCPConnection) e protocolo (TDSTCPChannel)</p>
<pre class="brush: delphi">FConnections: TObjectDictionary&lt;TIdTCPConnection,TDSTCPChannel&gt;;</pre>
<p>&nbsp;</p>
<p>A partir dai implementamos os eventos OnConnect e OnDisconnect no TDSTCPServerTransporter. Implementar o evento OnConnect é bem simples, você tem apenas que armazenar as informações referente a conexão na sua lista e caso tenha alguma interface para atualizar com as informações referentes a esta conexão, assim faze-lo.</p>
<p>O código abaixo adiciona a nova conexão utilizando os métodos TMonitor.Enter e TMonitor.Exit para assegurar que nenhuma outra thread irá tentar atualizar esta lista.</p>
<p>Após adicionar a lista utilizamos o método EnableKeepAlive que irei explicar em seguida.</p>
<pre class="brush: delphi">procedure TCMServerForm.CMServerTransportConnectEvent(Event: TDSTCPConnectEventObject);
begin
  System.TMonitor.Enter(FConnections);
  try
    FConnections.Add(TIdTCPConnection(Event.Connection), Event.Channel);
  finally
    System.TMonitor.Exit(FConnections);
  end;

  //Enable Keep-alive for this new connection.
    Event.Channel.EnableKeepAlive(10000);
end;</pre>
<p>A implementação do método OnDisconnect terá que localizar a instância da conexão e remove-la da lista, OnDisconnect será executado quando a aplicação cliente desconectar do servidor, seja de forma natural, queda de rede, etc.</p>
<p>Por padrão, o evento OnDisconnect não será notificado se o cliente de forma abrupta perde sua conexão internet. Isso acontece porque a conexão Socket permanece aberta até que ocorra alguma chamada e esta falhe. Se o sistema operacional está configurado para usar pacotes keep-alive para todas as conexões TCP/IP e com base na sua configuração, você verá o evento OnDisconnect ser notificado. Se você desejar controlar este comportamento para cada conexão, então use os métodos EnableKeepAlive e DisableKeepAlive para cada instância do TDSTCPChannel.</p>
<p>No código acima foi definido para cada conexão o KeepAlive em 10 segundos, isso quer dizer que o server irá enviar um pacote (fazer um ping) no cliente quando o mesmo estiver inativo por mais de 10 segundos, se o cliente não responder o server irá tentar novamente, a quantidade de tentativas é baseada no sistema operacional, por exemplo Windows 7 tenta 10 vezes. Você ainda pode definir o intervalo entre os pings, basta configurar o KeepAliveInterval.</p>
<p>O código abaixo demonstra como remover a instância da conexão da lista e como atualizar a interface do usuário utilizando TThread.Synchronize.</p>
<pre class="brush: delphi">procedure TCMServerForm.CMServerTransportDisconnectEvent(Event: TDSTCPDisconnectEventObject);
var
  Index: Integer;
begin
  if (FConnections = nil) or (Event.Connection = nil) then
    Exit;

  //This is called when a TCP connection is closed, for whatever reason.
  System.TMonitor.Enter(FConnections);
  try
    FConnections.Remove(TIdTCPConnection(Event.Connection));

    TThread.Synchronize(nil, procedure
      begin
        //update the connection list box, removing the connection that was just closed
        Index := ConnectionsList.Items.IndexOfObject(Event.Connection);
        if Index &gt; -1 then
        begin
          ConnectionsList.Items.Delete(Index);

          if ConnectionsList.SelCount = 0 then
            SessionIdList.ClearSelection;
        end;
      end);
  finally
    System.TMonitor.Exit(FConnections);
  end;</pre>
<p>Até aqui sabemos quem está conectado ao servidor, a partir dai podemos derrubar qualquer conexão, visto que temos a instância de cada TDSTCPChannel e este contém o método close que encerra a conexão cliente, ao ser desconectado o lado cliente recebe uma exception quando tentar executar qualquer operação no servidor.<br />
No exemplo abaixo encerramos a conexão selecionada em um ListBox, o método GetSelectedChannel busca a instância do Channel baseado na conexão selecionada no ListBox.</p>
<p>Quando executamos o método Channel.Close o evento OnDisconnect será notificado.</p>
<pre class="brush: delphi">procedure TCMServerForm.ButtCloseSelectedClick(Sender: TObject);
var
  Channel: TDSTCPChannel;
begin
  //Find the selected connection's channel, and then close it.
  Channel := GetSelectedChannel;

  //after calling close, the CMServerTransportDisconnectEvent event will be notified.
  if Channel &lt;&gt; nil then
  begin
    Channel.Close;
  end;
end;
function TCMServerForm.GetSelectedChannel(Conn: TIdTCPConnection): TDSTCPChannel;
begin
  Result := nil;

  //Finds the selected connection
  if Conn = nil then
    Conn := GetSelectedConnection;

  //uses the selected connection to look up the associated channel.
  if Conn &lt;&gt; nil then
    FConnections.TryGetValue(Conn, Result)
end;</pre>
<p>O RAD Studio XE2 traz um exemplo completo sobre o assunto e se você já usa a versão XE2 pode encontrá-lo em C:\Users\Public\Documents\RAD Studio\9.0\Samples\Delphi\DataSnap\DataSnapMonitor ou fazer o download direto do repositório de demos do RAD Studio XE2 <a href="http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE2/Delphi/DataSnap/DataSnapMonitor/" target="_blank">aqui</a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/" title="Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?">Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Implementando cache de dados em servidores DataSnap</title>
		<link>http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=implementando-cache-de-dados-em-servidores-datasnap</link>
		<comments>http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 03:38:27 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1262</guid>
		<description><![CDATA[<p>O gerenciamento de memória do DataSnap é muito poderoso e uma característica chave para a implementação de cache. Imagine o cenário onde a aplicação cliente solicita os mesmos dados milhares de vezes durante o dia, certamente teremos que tocar o banco de dados a cada solicitação. Vamos supor que esses dados não mudam com muita freqüência, por exemplo: tabela de países, estados ou cidades. Quando [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>O gerenciamento de memória do DataSnap é muito poderoso e uma característica chave para a implementação de cache. Imagine o cenário onde a aplicação cliente solicita os mesmos dados milhares de vezes durante o dia, certamente teremos que tocar o banco de dados a cada solicitação. Vamos supor que esses dados não mudam com muita freqüência, por exemplo: tabela de países, estados ou cidades.</p>
<p>Quando implementamos cache para este cenário, a primeira solicitação obtém os dados a partir do banco de dados e os mantém em memôria, a partir da segunda solicitação o servidor de aplicação irá buscar estes dados em memória e retornar para a aplicação cliente, em outra palavras a aplicação tocou o banco de dados apenas uma única vez.</p>
<p>A combinação entre o gerenciamento de memória do DataSnap, DBXReader e ClientDataSet é o que você precisa para implementar uma solução de cache.</p>
<p>O gerenciamento de memória do DataSnap é definido através do componente DSServerClass e sua respectiva propriedade LifeCycle, que você pode ser definida como:</p>
<ul>
<li>Server → O servidor mantém uma única instância da classe no server, todos os clientes ao solicitar essa classe receberão sempre a mesma instância (Singleton)</li>
<li>Session → O servidor mantém uma instância da classe por sessão do DataSnap, cada cliente recebe uma instância diferente da classe (Statefull)</li>
<li>Invocation  → A cada execução de um server method uma instância da classe será criada e logo depois destruída (Stateless), você pode intervir no processo de criação e destruição desta classe a partir do servidor.</li>
</ul>
<p>Vamos ver como podemos implementar uma solução de cache usando o cenário onde terei que armazenar uma lista de estados, esta informação está na tabela de STATE.</p>
<p>A minha classe no servidor (ServerClass) foi criada a partir de um DSServerModule e se chama TDMDataSet5, contém dois métodos privados (private) e um público (public), que são:</p>
<pre class="brush: delphi">private
   function GetRecords(Fields, Table: String): TDBXReader;
   function GetData(Cds : TClientDataSet; Fields, Table: String) : TDBXReader;
public
   function GetState: TDBXReader;</pre>
<p>O método GetRecords irá consultar o banco de dados e retornar os registros como um DBXReader, este método não implementa nenhuma lógica para verificar se o cache já está preenchido.</p>
<pre class="brush: delphi">function TDMDataSet5.GetRecords(Fields, Table: String): TDBXReader;
var
    cmd: TDBXCommand;
begin

    cmd := DMServerContainer.GetConnection.DBXConnection.CreateCommand;
    try
      cmd.Text := 'Select ' + Fields + ' from ' + Table;
      Result := cmd.ExecuteQuery;
    except
      raise;
    end;
end;</pre>
<p>Como o DBXReader é unidirecional não podemos manter os dados em memória, a solução para isso é copiar os dados e mantê-los em um ClientDataSet.</p>
<p>GetData é um método interno responsável por criar, manter e retornar os dados como DBXReader.</p>
<p>Conforme a implementação abaixo o método irá obter os dados a partir do banco de dados (GetRecords) somente se o ClientDataSet não está ativo, em outras palavras nós nunca tivemos os dados em cache e somente iremos executar este código uma única vez. Após o bloco do IF a classe TDBXDataSetReader irá copiar os dados do ClientDataSet para um DBXReader e retorná-lo.</p>
<pre class="brush: delphi">function TDMDataSet5.GetData(Cds: TClientDataSet; Fields, Table: String): TDBXReader;
var
    Reader : TDBXReader;
begin
    if not Cds.Active then // Not active means, never move the data to ClientDataSet – no cache
      begin
      Reader := GetRecords(Fields, Table);
      TDBXDataSetReader.CopyReaderToClientDataSet( Reader, Cds );
      Reader.Free;
      Cds.Open;
    end;

    Result := TDBXDataSetReader.Create(Cds, False (* InstanceOwner *) );
end;</pre>
<p>Você pode estar se perguntando por que estou copiando os dados do ClientDataSet para DBXReader e não retornando diretamente o ClientDataSet, duas razões:</p>
<ul>
<li>Não é possível fazer o marshal/unmarshal de ClientDataSet para um objeto JSON</li>
<li>DataSnap converte DBXReader em JSON quando o server methods é chamado a partir de uma interface REST.</li>
</ul>
<p>Um ponto importante, o DSServerModule TDMDataSet5 irá gerenciar o cache, se o LifeCycle para esta classe for definido como server isso irá significar uma única instância do cache para todos os clientes, podemos chamar isso de &#8220;cache global&#8221;, caso defina como Session estaremos criando um cache para cada cliente conectado ao servidor.</p>
<p>Caso a sua aplicação cliente utilize o DBXClient irá receber um DBXReader a partir da execução do server method, a partir dai é sua responsabilidade decidir o que fazer com os dados, mas sendo necessário conectar estes dados a componentes data-aware será necessário copiar os dados do DBXReader para um ClientDataSet, o método TDBXDataSetReader.CopyReaderToClientDataSet é a solução pra isso.</p>
<pre class="brush: delphi">   TDBXDataSetReader.CopyReaderToClientDataSet(Reader, CDSCity);</pre>
<p>Se algum dados relacionado com a tabela State mudar será necessário implementar um server method para atualizar os dados. Além disso, ao definir o LifeCycle como Server o cache será destruído no momento que o servidor parar (Stop), mas se utilizamos o LifeCycle Session o cache será destruído no momento em que a aplicação cliente se desconecta do server.</p>
<p>Usando esta técnica você garante que o cache no servidor não depende da implementação do lado cliente, além disso quero lembrar que essa solução irá funcionar como DataSnap Servers, se você implementou o server usando DataSnap REST Interface você não terá cache, porque cada solicitação ao server funciona como o lifecycle invocation.</p>
<p>Este é um exemplo realista que explica como implementar cache em servidores DataSnap usando dados a partir de um banco de dados como exemplo, além disso, você aprendeu como mover dados de/para ClientDataSet de/para DBXReader.</p>
<p>O download do código fonte utilizado como exemplo <a href="http://cc.embarcadero.com/download.aspx?id=28243">está disponível aqui</a>, veja a unit DataSetDM5.pas (Servidor) e FormDataSet5 (Cliente).</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/" title="Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?">Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Exemplos e slides do Delphi Meeting 2011</title>
		<link>http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exemplos-e-slides-do-delphi-meeting-2011</link>
		<comments>http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 05:27:22 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Meeting 2011]]></category>
		<category><![CDATA[Delphi Prism (.NET)]]></category>
		<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Delphi Prism]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[RadPHP]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1225</guid>
		<description><![CDATA[<p>Primeiramente obrigado a todos que participaram do Delphi Meeting 2011, foi um grande sucesso nas 12 cidades percorridas onde 1500 desenvolvedores Delphi compareceram e aprenderam muito sobre desenvolvimento multi-camada com Delphi, C++Builder, RadPHP e Delphi Prism, além de desenvolvimento com Delphi Prism cpara iPhone e MonoTouch, .NET com Mono e Linux, enfim começos 2011 em [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Primeiramente obrigado a todos que participaram do Delphi Meeting 2011, foi um grande sucesso nas 12 cidades percorridas onde 1500 desenvolvedores Delphi compareceram e aprenderam muito sobre desenvolvimento multi-camada com Delphi, C++Builder, RadPHP e Delphi Prism, além de desenvolvimento com Delphi Prism cpara iPhone e MonoTouch, .NET com Mono e Linux, enfim começos 2011 em grande estilo.</p>
<p>Os inscritos no Delphi Meeting 2011 tem descontos especiais para atualizar sua licença de Delphi, C++Builder ou RAD Studio, basta entrar em contato com nosso distribuidor no Brasil (11) 2165-8000.</p>
<p>Na comunidade Delphi Brasil no <strong><a href="http://www.facebook.com/media/set/?set=o.129303560426255" target="_blank">Facebook</a></strong> foram publicadas várias fotos dos eventos pelo Brasil.</p>
<p><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/02/D2011.jpg"><img class="aligncenter" title="Delphi Meeting 2011 - Fotos" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/02/D2011-950x593.jpg" alt="" width="570" height="356" /></a></p>
<p>&nbsp;</p>
<p>Como prometido segue abaixo o link com os slides e exemplos utilizados durante o Delphi Meeting 2011.</p>
<ul>
<li>Slides do Delphi Meeting 2011 &#8211;  <a href="http://cc.embarcadero.com/Download.aspx?id=28244" target="_blank">download</a>
<ul>
<li>Embarcadero e Delphi Update</li>
<li>Introdução ao DataSnap XE</li>
<li>Migrando da arquitetura Cliente/Servidor para Multicamada</li>
<li>Desenvolvendo clientes DataSnap em Delphi XE, .NET, JavaScript e RadPHP</li>
<li>Criando aplicações para Linux e iPhone com Delphi Prism e Mono/MonoTouch</li>
</ul>
</li>
<li>Exemplos DataSnap &#8211; <a href="http://cc.embarcadero.com/Download.aspx?id=28243" target="_blank">download</a>, traz vários exemplos:
<ul>
<li>DataSnap clients em Delphi, C++Builder, ASP.NET, PHP</li>
<li>Como utilizar ClientDataSet em multi-tier</li>
<li>Múltiplas atualizações através de ClientDataSet &#8211; Master Detail e Nested DataSet</li>
<li>Utilizar lookups em ClientDataSet</li>
<li>Como implementar cache global e por sessão em servidores DataSnap</li>
<li>Server Methods</li>
<li>Transferir dados através do DBX Reader</li>
<li>Object Transfer JSON simple e collection</li>
<li>Callback &#8211; backup no servidor e transferência de arquivos</li>
</ul>
</li>
<li>Exemplos iPhone e Linux
<ul>
<li>Web browser para iPhone com Delphi Prism &#8211; <a href="http://cc.embarcadero.com/Download.aspx?id=28148" target="_blank">download</a></li>
</ul>
<ul>
<li>Usando o Google Maps em aplicações iPhone com Delphi Prism - <a href="http://cc.embarcadero.com/Download.aspx?id=28181" target="_blank">download</a></li>
</ul>
</li>
<li>Exemplos ASP.NET e Web Service para Linux - <a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/02/MonoSamples.zip">download</a>
<ul>
<li>Aplicação ASP.NET</li>
<li>Aplicação Web Service</li>
</ul>
</li>
<li><a href="http://www.andreanolanusse.com/pt/novo-papel-de-parede-do-delphi-xe/" target="_blank">Papel de parede</a> do Delphi XE</li>
</ul>
<p>&nbsp;</p>
<p>Mais uma vez obrigado a todos e agora é hora colocar em prática o que discutimos durante o evento, até o próximo.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-trial-datasheet-matriz-de-recursos-e-faq-para-as-versoes-xe2/" title="Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2">Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/delphi-conference-2011-chamada-para-submissao-de-palestras/" title="Delphi Conference 2011 &#8211; chamada para submissão de palestras">Delphi Conference 2011 &#8211; chamada para submissão de palestras</a></li><li><a href="http://www.andreanolanusse.com/pt/rad-studio-xe2-uma-nova-era-para-desenvolvedores-delphi-e-cbuilder/" title="RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder">RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizada-nova-versao-do-delphi-xe-cbuilder-xe-delphi-prism-xe-e-radphp-xe/" title="Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE">Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tratando o retorno de server methods em PHP a partir de DataSnap REST</title>
		<link>http://www.andreanolanusse.com/pt/tratando-o-retorno-de-server-methods-em-php-a-partir-de-datasnap-rest/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tratando-o-retorno-de-server-methods-em-php-a-partir-de-datasnap-rest</link>
		<comments>http://www.andreanolanusse.com/pt/tratando-o-retorno-de-server-methods-em-php-a-partir-de-datasnap-rest/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 22:51:22 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[RadPHP]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1199</guid>
		<description><![CDATA[<p>Criar aplicações PHP para conectar a servidores DataSnap REST é relativamente simples já que o RadPHP traz um assistente que gera as classes proxies em PHP, mas como PHP é uma linguagem dinâmica e não é fortemente tipada, isso abre margem para erros durante a chamadas dos server methods, além disso em chamadas REST o [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Criar aplicações PHP para conectar a servidores DataSnap <strong><a href="http://pt.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a></strong> é relativamente simples já que o RadPHP traz um assistente que gera as classes proxies em PHP, mas como PHP é uma linguagem dinâmica e não é fortemente tipada, isso abre margem para erros durante a chamadas dos server methods, além disso em chamadas REST o retorno é sempre um JSON object, mas tudo isso é relativamente fácil de resolver.</p>
<p>Considere o seguinte cenário onde você tem um método de autenticação que retorna TRUE ou FALSE, claro que você deve estar pensando que em caso de erro o método irá retornar sempre falso, isso não é necessariamente verdade e vou explicar em seguida.</p>
<p>No caso de aplicações PHP ao executar um server method você sempre receberá um objeto como retorno e a partir dele executará as operações que sua aplicação requer.</p>
<p>Assumindo que você já gerou a classe proxy em PHP no <strong><a href="http://www.embarcadero.com/products/radphp" target="_blank">RadPHP</a></strong>, temos o que precisamos para executar nossas regras de negócio no servidor DataSnap a partir da aplicação PHP.</p>
<p>Ao criar a classe proxy o assistente cria um datamodule que contem o componente DSRestConnection, este componente contém as informações necessárias para conectar ao servidor como Host, Port, UserName e Password.</p>
<p>O código abaixo executa o método TUser.isValidUser passando usuário e senha como parâmetro, se o retorno for uma instância de DSObject a propriedade result deste objeto terá o valor TRUE ou FALSE, caso ocorra uma EXCEPTION no servidor não será retornado o objeto DSObject e você terá a propriedade error a sua disposição contento a mensagem de erro.</p>
<pre class="brush: php">type
   global $ClientModuleDataModule1;
   $conninfo = $ClientModuleDataModule1-&gt;DSRestConnection1-&gt;ConnectionInfo;

   $user = new TUser($conninfo);

   $valid = $user-&gt;IsValidUser($this-&gt;edUserName-&gt;Text, $this-&gt;edPassword-&gt;Text);

   if($valid instanceof DSObject)
   {
      if($valid-&gt;result)
      {
         setcookie('loginid', $this-&gt;edUserName-&gt;Text);
         redirect("Main.php");
      }
      else
      {
         $this-&gt;Button1-&gt;Caption = "Username/Password invalid";
      }
   }
   else
   {
      $this-&gt;Button1-&gt;Caption = $valid-&gt;error;
   }</pre>
<p>Nos exemplos do RAD Studio XE no sourceforge estão disponíveis o código desta aplicação cliente em PHP e o servidor em Delphi XE, faça o <a href="https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE/DataSnapXE/" target="_blank">download aqui</a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-o-radphp-xe2/" title="Disponibilizado o Update 4 para o RadPHP XE2">Disponibilizado o Update 4 para o RadPHP XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/tratando-o-retorno-de-server-methods-em-php-a-partir-de-datasnap-rest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vídeo: Integração Delphi e Java com DataSnap, WebService e JSON &#8211; Delphi Conference 2010 Brasil</title>
		<link>http://www.andreanolanusse.com/pt/video-integracao-delphi-e-java-com-datasnap-webservice-e-json-delphi-conference-2010-brasil/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-integracao-delphi-e-java-com-datasnap-webservice-e-json-delphi-conference-2010-brasil</link>
		<comments>http://www.andreanolanusse.com/pt/video-integracao-delphi-e-java-com-datasnap-webservice-e-json-delphi-conference-2010-brasil/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 17:00:28 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Conference 2010]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1162</guid>
		<description><![CDATA[<p>Nesta apresentação Willian Zonta fala sobre a experiência recente do desenvolvimento WebServices fornecendo recursos para outros sistemas, os quais foram desenvolvidos em Delphi e Java, para a troca de informações utilizou-se JSON, durante a palestra Willian trouxe exemplos práticos. &#160; Posts relacionadosVideo: Aprenda como utilizar DataSnap Connectors na práticaVídeo: Threads e DataSnap – otimizando um [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Nesta apresentação Willian Zonta fala sobre a experiência recente do desenvolvimento WebServices fornecendo recursos para outros sistemas, os quais foram desenvolvidos em Delphi e Java, para a troca de informações utilizou-se JSON, durante a palestra Willian trouxe exemplos práticos.</p>
<p><object style="width: 600px; height: 365px;" width="600" height="365" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="flashvars" value="file=72-2VmWepE45JVIY675AOIYyF83jvgHL2zW-HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /><param name="src" value="http://channel-e.embarcadero.com/scripts/player.swf" /><embed style="width: 600px; height: 365px;" width="600" height="365" type="application/x-shockwave-flash" src="http://channel-e.embarcadero.com/scripts/player.swf" quality="high" wmode="transparent" flashvars="file=72-2VmWepE45JVIY675AOIYyF83jvgHL2zW-HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /></object></p>
<p>&nbsp;</p>
<p><a href="http://channel-e.embarcadero.com/downloadvideo.php?id=557" target="_blank"><img title="Download MP4" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/12/btn_download_MP4.gif" alt="" width="124" height="23" /></a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/" title="Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil">Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/" title="Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE">Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/como-implementar-failover-e-load-balance-no-datasnap-2010/" title="Como implementar Failover e Load Balance no DataSnap 2010">Como implementar Failover e Load Balance no DataSnap 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-integracao-delphi-e-java-com-datasnap-webservice-e-json-delphi-conference-2010-brasil/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</title>
		<link>http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil</link>
		<comments>http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 23:17:54 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Conference 2010]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1157</guid>
		<description><![CDATA[<p>Nesta apresentação Kelver Merlotti como o uso de Threads pode otimizar um servidor de aplicação DataSnap, que tem o objetivo de receber e persistir dados estatísticos coleta dos por uma aplicação cliente Win32, para que sejam posteriormente analisados em uma ferramenta de BI na matriz franqueadora onde está este servidor. Serão apresentados conceitos de segurança, [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Nesta apresentação Kelver Merlotti como o uso de Threads pode otimizar um servidor de aplicação DataSnap, que tem o objetivo de receber e persistir dados estatísticos coleta dos por uma aplicação cliente Win32, para que sejam posteriormente analisados em uma ferramenta de BI na matriz franqueadora onde está este servidor. Serão apresentados conceitos de segurança, através dos DataSnap Filters, e a importância das Threads que se não utilizadas, impactariam consideravelmente o projeto pois o registro dos dados seria lento, visto que envolve diversas triggers.</p>
<p><object style="width: 600px; height: 365px;" width="600" height="365" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="flashvars" value="file=72-Owj77J55622d6L1jw2yvITGglRPStvq5-HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /><param name="src" value="http://channel-e.embarcadero.com/scripts/player.swf" /><embed style="width: 600px; height: 365px;" width="600" height="365" type="application/x-shockwave-flash" src="http://channel-e.embarcadero.com/scripts/player.swf" quality="high" wmode="transparent" flashvars="file=72-Owj77J55622d6L1jw2yvITGglRPStvq5-HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /></object><br />
<a href="http://channel-e.embarcadero.com/downloadvideo.php?id=556" target="_blank"><img title="Download MP4" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/12/btn_download_MP4.gif" alt="" width="124" height="23" /></a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/" title="Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil">Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/" title="Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE">Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/como-implementar-failover-e-load-balance-no-datasnap-2010/" title="Como implementar Failover e Load Balance no DataSnap 2010">Como implementar Failover e Load Balance no DataSnap 2010</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacao-de-lancamento-do-delphi-2010/" title="Apresentação de lançamento do Delphi 2010">Apresentação de lançamento do Delphi 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil</title>
		<link>http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil</link>
		<comments>http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 19:18:31 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Conference 2010]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1148</guid>
		<description><![CDATA[<p>Este é segundo vídeo do Delphi Conference 2010 Brasil onde o italiano Daniele Teti apresenta na prática como integrar aplicações para Android com servidores DataSnap, reserve um tempinho e assista ou faço o download desta apresentação que foi um show a parte. &#160; Posts relacionadosVideo: Aprenda como utilizar DataSnap Connectors na práticaVídeo: Threads e DataSnap [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Este é segundo vídeo do Delphi Conference 2010 Brasil onde o italiano <a href="http://www.danieleteti.it/" target="_blank">Daniele Teti</a> apresenta na prática como integrar aplicações para Android com servidores DataSnap, reserve um tempinho e assista ou faço o download desta apresentação que foi um show a parte.</p>
<p><object style="width: 600px; height: 365px;" width="600" height="365" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="flashvars" value="file=72-WWjyK5vKjiV98IL16UrOYp96gFS18DR9-HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /><param name="src" value="http://channel-e.embarcadero.com/scripts/player.swf" /><embed style="width: 600px; height: 365px;" width="600" height="365" type="application/x-shockwave-flash" src="http://channel-e.embarcadero.com/scripts/player.swf" quality="high" wmode="transparent" flashvars="file=72-WWjyK5vKjiV98IL16UrOYp96gFS18DR9-HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /></object></p>
<p>&nbsp;</p>
<p><a href="http://channel-e.embarcadero.com/downloadvideo.php?id=554" target="_blank"><img title="Download MP4" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/12/btn_download_MP4.gif" alt="" width="124" height="23" /></a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/" title="Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE">Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/como-implementar-failover-e-load-balance-no-datasnap-2010/" title="Como implementar Failover e Load Balance no DataSnap 2010">Como implementar Failover e Load Balance no DataSnap 2010</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacao-de-lancamento-do-delphi-2010/" title="Apresentação de lançamento do Delphi 2010">Apresentação de lançamento do Delphi 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?</title>
		<link>http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver</link>
		<comments>http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 18:48:52 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[RadPHP]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1145</guid>
		<description><![CDATA[<p>Estou preparando uma série de vídeos sobre DataSnap para 2011, gostaria de saber dos usuários atuais ou futuros usuários do DataSnap sugestões sobre o que vocês gostariam de ver nesses vídeos. Durante 2010 nós criamos centenas de materiais incluindo vídeos e artigos, mas sempre podemos fazer mais e melhor, assim sendo envio sua sugestão comentando [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Estou preparando uma série de vídeos sobre DataSnap para 2011, gostaria de saber dos usuários atuais ou futuros usuários do DataSnap sugestões sobre o que vocês gostariam de ver nesses vídeos.</p>
<p>Durante 2010 nós criamos centenas de materiais incluindo vídeos e artigos, mas sempre podemos fazer mais e melhor, assim sendo envio sua sugestão comentando nesse post.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</title>
		<link>http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe</link>
		<comments>http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 19:26:49 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1135</guid>
		<description><![CDATA[<p>Se você não teve a chance de participar do Webinar &#8220;Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE&#8221;, assista a gravação do evento abaixo e aproveita para aprimorar seus conhecimentos em Delphi e DataSnap. Nesse vídeo você irá conhecer diversas ferramentas e tecnologias que podem ser usadas durante o desenvolvimento em seus [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Se você não teve a chance de participar do Webinar &#8220;Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE&#8221;, assista a gravação do evento abaixo e aproveita para aprimorar seus conhecimentos em Delphi e DataSnap.</p>
<p>Nesse vídeo você irá conhecer diversas ferramentas e tecnologias que podem ser usadas durante o desenvolvimento em seus mais variados aspectos, vantages do desenvolvimento multicamada vs Client/Server, assim como:</p>
<ul>
<li>Arquitetura do servidor físico e aplicação DataSnap</li>
<li>Automação de processos que facilitem o teste, compilação e distribuição da aplicação</li>
<li>Melhora da qualidade dos dados durante os testes</li>
<li>Isolar problemas da aplicação e banco de dados</li>
<li>E outras coisas mais</li>
</ul>
<p><object width="400" height="243" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="wmode" value="transparent" /><param name="quality" value="high" /><param name="flashvars" value="file=72--HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" /><param name="src" value="http://channel-e.embarcadero.com/scripts/player.swf" /><param name="allowfullscreen" value="true" /><embed width="400" height="243" type="application/x-shockwave-flash" src="http://channel-e.embarcadero.com/scripts/player.swf" allowFullScreen="true" allowscriptaccess="always" wmode="transparent" quality="high" flashvars="file=72--HD.mp4&amp;streamer=rtmp://etnastream01.embarcadero.com:80/vod/&amp;autostart=0" allowfullscreen="true" /></object></p>
<p><a href="http://channel-e.embarcadero.com/downloadvideo.php?id=541"><img title="Download MP4" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/12/btn_download_MP4.gif" alt="" width="124" height="23" /></a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/" title="Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil">Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/como-implementar-failover-e-load-balance-no-datasnap-2010/" title="Como implementar Failover e Load Balance no DataSnap 2010">Como implementar Failover e Load Balance no DataSnap 2010</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacao-de-lancamento-do-delphi-2010/" title="Apresentação de lançamento do Delphi 2010">Apresentação de lançamento do Delphi 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Registrando DataSnap Server Class em tempo de execução no Delphi</title>
		<link>http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi</link>
		<comments>http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 23:00:55 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1127</guid>
		<description><![CDATA[<p>Sempre que estamos construindo uma aplicação DataSnap temos que registrar as classes que serão disponbilizadas para o lado cliente, o natural é utilizar o componente DSServerClass pra isso, muitas vezes queremos fazer isso em tempo de execução, abaixo segue um código exemplo de como efetuar o registro destas classes em tempo de execução. No código [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Sempre que estamos construindo uma aplicação DataSnap temos que registrar as classes que serão disponbilizadas para o lado cliente, o natural é utilizar o componente DSServerClass pra isso, muitas vezes queremos fazer isso em tempo de execução, abaixo segue um código exemplo de como efetuar o registro destas classes em tempo de execução.</p>
<p>No código abaixo a classe TSimpleServerClass herda de TDSServerClass e estende o método Create onde passamos a classe a ser registrada, seu respectivo DataSnap Server e o LifeCycle.</p>
<pre class="brush: delphi">type

  TSimpleServerClass = class(TDSServerClass)
  private
    FPersistentClass: TPersistentClass;
  protected
    function GetDSClass: TDSClass; override;
  public
    constructor Create(AOwner: TComponent; AServer: TDSCustomServer; AClass: TPersistentClass; ALifeCycle: String); reintroduce; overload;
  end;

procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);

implementation

constructor TSimpleServerClass.Create(AOwner: TComponent; AServer: TDSCustomServer; AClass: TPersistentClass; ALifeCycle: String);
begin
  inherited Create(AOwner);
  FPersistentClass := AClass;
  Self.Server := AServer;
  Self.LifeCycle := ALifeCycle;
end;

function TSimpleServerClass.GetDSClass: TDSClass;
begin
  Result := TDSClass.Create(FPersistentClass, False);
end;</pre>
<p>Agora é criar uma instância de TSimpleServerClass para cada classe que contém os server methods.</p>
<p>Abaixo um exemplo onde são registradas 3 classes no mesmo server, com LifeCycles distintos:</p>
<pre class="brush: delphi">procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);
begin
  Assert(AServer.Started = false, 'Não é possível adicionar classes com o servidor ativo');

  TSimpleServerClass.Create(AOwner, AServer, TGlobal, TDSLifeCycle.Server);
  TSimpleServerClass.Create(AOwner, AServer, TCustomer, TDSLifeCycle.Session);
  TSimpleServerClass.Create(AOwner, AServer, TObjectPool, TDSLifeCycle.Invocation);
end;</pre>
<p>Simples e muito prático, até o próximo artigo.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/" title="Publicando providers durante o registro dinâmico de DataSnap Server Class">Publicando providers durante o registro dinâmico de DataSnap Server Class</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Webinar: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</title>
		<link>http://www.andreanolanusse.com/pt/webinar-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webinar-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe</link>
		<comments>http://www.andreanolanusse.com/pt/webinar-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 22:08:19 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Webinar]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1121</guid>
		<description><![CDATA[<p>No dia 7 de dezembro a partir das 15 horas (horário de Brasilia) estarei apresentando o Webinar: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE. A idéia é mostrar as diversas ferramentas e tecnologias que podem ser usadas durante o desenvolvimento em seus mais variados aspectos, vantages do desenvolvimento multicamada vs Client/Server, [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>No dia 7 de dezembro a partir das 15 horas (horário de Brasilia) estarei apresentando o <strong>Webinar: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE.</strong></p>
<p>A idéia é mostrar as diversas ferramentas e tecnologias que podem ser usadas durante o desenvolvimento em seus mais variados aspectos, vantages do desenvolvimento multicamada vs Client/Server, assim como:</p>
<ul>
<li>Arquitetura do servidor físico e aplicação DataSnap</li>
<li>Automação de processos que facilitem o teste, compilação e distribuição da aplicação</li>
<li>Melhora da qualidade dos dados durante os testes</li>
<li>Isolar problemas da aplicação e banco de dados</li>
<li>E outras coisas mais</li>
</ul>
<p>O webinar é gratuito e você já pode se inscrever <a href="https://www3.gotomeeting.com/register/974312046" target="_blank"><strong>aqui</strong></a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/" title="Publicando providers durante o registro dinâmico de DataSnap Server Class">Publicando providers durante o registro dinâmico de DataSnap Server Class</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/webinar-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apresentações do Delphi Conference 2010 disponível para download</title>
		<link>http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apresentacoes-do-delphi-conference-2010-disponivel-para-download</link>
		<comments>http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 23:54:24 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Conference 2010]]></category>
		<category><![CDATA[Delphi Prism (.NET)]]></category>
		<category><![CDATA[RadPHP]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[dbExpress]]></category>
		<category><![CDATA[InterBase]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1117</guid>
		<description><![CDATA[<p>Já está disponível o material utilizado nas apresentações do Delphi Conference 2010 Brasil, os slides disponibilizados trazem informações valiosas e link para download dos exemplos utilizados. Para efetuar o download das apresentações você precisa de uma conta no EDN (Embarcadero Developer Network), que é grátis, caso você já a tenha, efetue o login e tenha [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Já está disponível o material utilizado nas apresentações do Delphi Conference 2010 Brasil, os slides disponibilizados trazem informações valiosas e link para download dos exemplos utilizados.</p>
<p>Para efetuar o download das apresentações você precisa de uma conta no EDN (Embarcadero Developer Network), que é grátis, caso você já a tenha, efetue o login e tenha acesso ao melhor conteúdo já apresentado sobre Delphi.</p>
<p>Artigo do EDN com todas as apresentações, <a href="http://edn.embarcadero.com/br/article/41104" target="_blank"><strong>clique aqui</strong></a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/" title="Teste nosso servidor DataSnap XE instalado no Amazon Cloud">Teste nosso servidor DataSnap XE instalado no Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/" title="DataSnap XE e Windows Azure – RAD Studio XE Preview #3">DataSnap XE e Windows Azure – RAD Studio XE Preview #3</a></li><li><a href="http://www.andreanolanusse.com/pt/copiando-estrutura-e-dados-de-um-dbxreader-para-clientdataset-datasnap-2010/" title="Copiando estrutura e dados de um DBXReader para ClientDataSet – DataSnap 2010">Copiando estrutura e dados de um DBXReader para ClientDataSet – DataSnap 2010</a></li><li><a href="http://www.andreanolanusse.com/pt/utilizando-generics-para-transformacao-generica-de-objetos-em-datasnap-2010/" title="Utilizando generics para transformação genérica de Objetos em DataSnap 2010">Utilizando generics para transformação genérica de Objetos em DataSnap 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>DataSnap – Compartilhando conexão com o banco entre diferentes Server Classes a partir do mesmo cliente (Session)</title>
		<link>http://www.andreanolanusse.com/pt/datasnap-compartilhando-conexao-com-o-banco-entre-diferentes-server-classes-a-partir-do-mesmo-cliente-session/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=datasnap-compartilhando-conexao-com-o-banco-entre-diferentes-server-classes-a-partir-do-mesmo-cliente-session</link>
		<comments>http://www.andreanolanusse.com/pt/datasnap-compartilhando-conexao-com-o-banco-entre-diferentes-server-classes-a-partir-do-mesmo-cliente-session/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 15:59:15 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1111</guid>
		<description><![CDATA[<p>Aqueles que começam a desenvolver aplicações utilizando DataSnap tem como hábito definir conexões ao banco de dados por Data Module, isso gera um volume muito grande de conexões ao banco de dados, dependendo da situação isso pode se tornar um problema. No Delphi XE o DataSnap traz o gerenciamento de sessão (Session Management), este gerenciamento [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Aqueles que começam a desenvolver aplicações utilizando DataSnap tem como hábito definir conexões ao banco de dados por Data Module, isso gera um volume muito grande de conexões ao banco de dados, dependendo da situação isso pode se tornar um problema.</p>
<p>No <a href="www.embarcadero.com/products/delphi" target="_blank">Delphi XE</a> o DataSnap traz o gerenciamento de sessão (Session Management), este gerenciamento facilita a implementação do servidor em diversos aspectos, especificamente tratando do tema de como definir uma única conexão ao banco de dados para cada cliente onde cada Server Methods receba esta conexão, o gerenciamento de sessão é o ponto chave pra isso.</p>
<p>A definição deste controle irá ocorrer do lado servidor, a aplicação cliente não precisa e não tem que saber como ocorre a conexão ao banco de dados.</p>
<p>Ao criar um servidor DataSnap como boa prática definimos um Server Container (Data Module) que basicamente é o seu servidor DataSnap, é neste container que será definido o método responsável por passar a cada Server Class a conexão com o banco, assim sendo, a implementação seria.</p>
<p>Primeiro, o método GetConnection retornará a conexão ao banco, neste método teremos a lógica responsável por saber se a conexão existe ou não para aquele cliente conectado, cada cliente ao conectar so servidor DataSnap terá um ID de sessão associado, assim declaramos o método e a variável ListofConnection como parte do nosso Server Container.</p>
<pre class="brush: delphi">  private
    { Private declarations }
    ListofConnection : TDictionary;
  public
    function GetConnection : TSQLConnection;</pre>
<p>O método GetConnection irá consultar o pool de conexões (variável ListOfConnection) para saber se este cliente já tem uma conexão no pool ou não, através do TDSSessionManager.GetThreadSession.Id obtemos o Id da sessão para este cliente, este Id é único e somente será renovado se o cliente desconectar e voltar a conectar novamente ao servidor.</p>
<p>Não existindo a conexão para o cliente naquele sessão, será criada dinamicamente uma conexão e esta será retornada.</p>
<pre class="brush: delphi">function TServerContainer1.GetConnection: TSQLConnection;
var
  dbconn : TSQLConnection;
begin

  if ListofConnection.ContainsKey(TDSSessionManager.GetThreadSession.Id) then
     Result := ListofConnection[TDSSessionManager.GetThreadSession.Id]
  else
  begin
    dbconn := TSQLConnection.Create(nil);
    dbconn.Params.Clear;
    dbconn.LoadParamsOnConnect := true;
    dbconn.ConnectionName := 'DS Employee';

    ListofConnection.Add(TDSSessionManager.GetThreadSession.Id, dbconn);
    Result := dbconn;
  end;

end;</pre>
<p>A partir de agora precisamos informar a cada Server Class qual conexão utilizar. Se o seu Server Class tem como base um DataModule, basta no onCreate do DataModule informar a conexão que deverá ser utilizada nos objetos TSQLQuery ou outro objeto que conecte ao banco de dados.</p>
<p>Como exemplo, tenho um DataModule como Server Class, neste existem 2 SQLQuery, assim sendo passo a conexão para cada uma deles:</p>
<pre class="brush: delphi">  COUNTRYQuery.SQLConnection := ServerContainer1.GetConnection;
  EMPLOYEE1Query.SQLConnection := ServerContainer1.GetConnection;</pre>
<p>Para não deixar conexões abertas no servidor assim que um cliente desconectar do servidor DataSnap, implementamos no evento onDisconnect do componente DSServer o seguinte método:</p>
<pre class="brush: delphi">  if GetConnection &lt;&gt; nil then
     GetConnection.Close;</pre>
<p>Este método irá fechar a conexão com o banco.</p>
<p>O código fonte completo está disponível no <a href="http://cc.embarcadero.com/item/28097" target="_blank">Code Central</a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/" title="Publicando providers durante o registro dinâmico de DataSnap Server Class">Publicando providers durante o registro dinâmico de DataSnap Server Class</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/datasnap-compartilhando-conexao-com-o-banco-entre-diferentes-server-classes-a-partir-do-mesmo-cliente-session/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</title>
		<link>http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe</link>
		<comments>http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 07:05:43 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Prism (.NET)]]></category>
		<category><![CDATA[RadPHP]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Delphi Prism]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1035</guid>
		<description><![CDATA[<p>Se você não teve a oportunidade de assistir ao lançamento online do novo RAD Studio XE, onde foram apresentadas as novidades do Delphi XE, C++Builder XE, RadPHP XE e Delphi Prism XE não tem problema, o evento foi gravado e você poderá assistir na integra a apresentação, que traz: Update sobre o futuro do Delphi [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Se você não teve a oportunidade de assistir ao lançamento online do novo RAD Studio XE, onde foram apresentadas as novidades do Delphi XE, C++Builder XE, RadPHP XE e Delphi Prism XE não tem problema, o evento foi gravado e você poderá assistir na integra a apresentação, que traz:</p>
<div id="attachment_1036" class="wp-caption alignleft" style="width: 138px"><a href="http://cc.embarcadero.com/javascript/play.html?u=y&amp;w=1024&amp;h=768&amp;s=248.6MB&amp;t=RAD Studio XE Webinar - Portuguese.swf&amp;f=http%3a%2f%2fcc.embarcadero.com%2fdownload.aspx%3fid%3d28034%26file%3dRAD+Studio+XE+Webinar+-+Portuguese.swf&amp;d=http%3a%2f%2fcc.embarcadero.com%2fdownload.aspx%3fid%3d28034&amp;e=n" target="_blank"><img class="size-full wp-image-1036 " style="margin: 4px;" title="Play" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/09/play_button.png" alt="" width="128" height="128" /></a><p class="wp-caption-text">Assista o vídeo de lançamento da família XE do Delphi, RadPHP, C++Builder e Delphi Prism</p></div>
<li>Update sobre o futuro do Delphi</li>
<li>Novidades do IDE, RTL, VCL para Delphi e C++Builder</li>
<li>Performance Profile com AQTime</li>
<li>Logs avançados com CodeSite</li>
<li>Intergração com Subversion</li>
<li>O novo RadPHP para desenvolvimento PHP</li>
<li>Como desenvolver aplicações para Facebook com RadPHP</li>
<li>As novidades no Delphi Prism XE</li>
<li>Desenvolvimento de aplicações para iPhone com Delphi Prism</li>
<li>As inúmeras novidades no DataSnap XE</li>
<li>Automatização de builds com FinalBuilder</li>
<li>Desenvolvimento ágil com RAD Studio XE</li>
<li>E muito mais&#8230;</li>
<p>Além disso você pode fazer o <a href="http://cc.embarcadero.com/Download.aspx?id=28034" target="_blank">download</a> e compartilhar com seus amigos, incluir no seu website, etc.</p>
<div>
<dl id="attachment_1036"></dl>
</div>
<p>Ao final faça o download do <strong><a href="http://www.embarcadero.com/products">trial</a></strong> e teste na prática as novidades</p>
<p>Divulgue as novidades e mostre a comunidade de desenvolvedores o que você pode fazer com o novo RAD Studio XE.</p>
<div>
<dl id="attachment_1036"></dl>
</div>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-trial-datasheet-matriz-de-recursos-e-faq-para-as-versoes-xe2/" title="Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2">Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/delphi-conference-2011-chamada-para-submissao-de-palestras/" title="Delphi Conference 2011 &#8211; chamada para submissão de palestras">Delphi Conference 2011 &#8211; chamada para submissão de palestras</a></li><li><a href="http://www.andreanolanusse.com/pt/rad-studio-xe2-uma-nova-era-para-desenvolvedores-delphi-e-cbuilder/" title="RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder">RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizada-nova-versao-do-delphi-xe-cbuilder-xe-delphi-prism-xe-e-radphp-xe/" title="Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE">Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Teste nosso servidor DataSnap XE instalado no Amazon Cloud</title>
		<link>http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud</link>
		<comments>http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 23:39:56 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1019</guid>
		<description><![CDATA[<p>Funciona assim, instalamos InterBase e uma aplicação DataSnap Server no Amazon EC2 e disponibilizamos a aplicação DataSnap client desenvolvidade em Delphi. Se você quer usar um cliente DataSnap e ver na prática como é rápido o DataSnap XE, faça o download da aplicação cliente desenvolvida em Delphi e navegue pelas opções disponíveis na aplicação. O [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andreanolanusse.com/blogen/wp-content/uploads/2010/08/datasnapoverall_2814.png"><img class="alignleft size-medium wp-image-342" title="DataSnap XE" src="http://www.andreanolanusse.com/blogen/wp-content/uploads/2010/08/datasnapoverall_2814-300x227.png" alt="" width="300" height="227" /></a>Funciona assim, instalamos InterBase e uma aplicação DataSnap Server no Amazon EC2 e disponibilizamos a aplicação DataSnap client desenvolvidade em Delphi.</p>
<p>Se você quer usar um cliente DataSnap e ver na prática como é rápido o DataSnap XE, faça o download da aplicação cliente desenvolvida em Delphi e navegue pelas opções disponíveis na aplicação. O servidor estará disponível durante as próximas 24 horas.</p>
<p>Aqui algumas orientações sobre a aplicação que irá lhe ajudar a entender o que acontece quando você executa alguns dos server methods:</p>
<p><strong>Tab Server Methods</strong></p>
<ul>
<li>Button Get Server DateTime &#8211; retorna a data e hora a partir do servidor Amazon</li>
<li>Jobs available &#8211; lista os registros a partir de um ClientDataSet, você pode editar, deletar e inserir dados</li>
</ul>
<p><strong>Using ClientDataSet (Master-Detail)</strong></p>
<ul>
<li>ClientDataSet usando modelo Master-Detail (somente leitura)</li>
</ul>
<p><strong>Reading Data from DBXReader</strong></p>
<ul>
<li>Essa tab tem 3 botoões, o primeiro lista os departamentos, o segundo diz ao objeto no server que a próxima requisição deverá ser ordernada por ID, o próximo botão irá ordernar por NOME. Este objeto no servidor é singleton, ou seja, tem apenas uma instância, se quando você solicitar a lista de departamento e esta não vier ordenada pelo item que você solicitou é porque alguém fez uma solicitação ao server para ordenar por outro campo. Este é um exemplo simples mostrando como funciona a gerenciamento de objetos.</li>
</ul>
<p><strong>Using DBX framework to send TParams</strong></p>
<ul>
<li>Adiciona registros na tabela Department passando os dados como um objeto TParams</li>
</ul>
<p><strong>Object Transfer</strong></p>
<ul>
<li>Recebe objetos do servidor</li>
</ul>
<p>Faça o download da aplicacão cliente para DataSnap  <a href="http://www.andreanolanusse.com/blogen/wp-content/uploads/2010/08/DelphiDataSnapClient.zip"><strong>aqui</strong></a>, unzip, clique e execute.</p>
<p>Este é um pequeno exemplo que mostra alguma das funcionalidades do DataSnap, Anders <img src='http://www.andreanolanusse.com/pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  foi responsável pelo processo de teste <img src='http://www.andreanolanusse.com/pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/" title="Apresentações do Delphi Conference 2010 disponível para download">Apresentações do Delphi Conference 2010 disponível para download</a></li><li><a href="http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/" title="DataSnap XE e Windows Azure – RAD Studio XE Preview #3">DataSnap XE e Windows Azure – RAD Studio XE Preview #3</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2/" title="CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2">CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2</a></li><li><a href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/" title="CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1">CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DataSnap XE e Windows Azure – RAD Studio XE Preview #3</title>
		<link>http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=datasnap-xe-e-windows-azure-preview-3</link>
		<comments>http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 09:06:34 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1012</guid>
		<description><![CDATA[<p>Uma das grandes novidades no RAD Studio XE é o suporte a Cloud Computing, neste mostramos como acessar serviços no Microsoft Azure através de servidores DataSnap. Além disso o DataSnap XE traz várias novidades nesta versão, como por exemplo o suporte a autenticação e acesso a métodos a partir de grupo de usuários. Neste vídeo [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes novidades no RAD Studio XE é o suporte a Cloud Computing, neste mostramos como acessar serviços no Microsoft Azure através de servidores DataSnap. Além disso o DataSnap XE traz várias novidades nesta versão, como por exemplo o suporte a autenticação e acesso a métodos a partir de grupo de usuários.</p>
<p>Neste vídeo você irá conhecer a integração com Cloud Computing, divirta-se.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/wqDW8QtKSqA?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/wqDW8QtKSqA?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p>Agora acesse a página do <strong><a href="http://www.embarcadero.com/rad-studio-xe-preview" target="_blank">RAD Studio XE Preview</a></strong> e conheça mais sobre outras novidades do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/" title="Apresentações do Delphi Conference 2010 disponível para download">Apresentações do Delphi Conference 2010 disponível para download</a></li><li><a href="http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/" title="Teste nosso servidor DataSnap XE instalado no Amazon Cloud">Teste nosso servidor DataSnap XE instalado no Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2/" title="CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2">CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2</a></li><li><a href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/" title="CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1">CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Delphi Tour 2010 – slides e exemplos disponibilizados para download</title>
		<link>http://www.andreanolanusse.com/pt/delphi-tour-2010-slides-e-exemplos-disponibilizados-para-download/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=delphi-tour-2010-slides-e-exemplos-disponibilizados-para-download</link>
		<comments>http://www.andreanolanusse.com/pt/delphi-tour-2010-slides-e-exemplos-disponibilizados-para-download/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 20:26:49 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Prism (.NET)]]></category>
		<category><![CDATA[Delphi Tour 2010]]></category>
		<category><![CDATA[SQL Tunning]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=955</guid>
		<description><![CDATA[<p>Estimados desenvolvedores Delphi, primeiramente obrigado a todos que participaram do Delphi Tour 2010, foram 2 semanas por várias cidades conversando frente a frente com a comunidade Delphi, compartilhando conhecimento e anotando as inúmeras sugestões para fazer o Delphi cada vez melhor. Como prometido, estou disponibilizando os slides e exemplos utilizados nas apresentações, somente a apresentação [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Estimados desenvolvedores Delphi, primeiramente obrigado a todos que participaram do Delphi Tour 2010, foram 2 semanas por várias cidades conversando frente a frente com a comunidade Delphi, compartilhando conhecimento e anotando as inúmeras sugestões para fazer o Delphi cada vez melhor.</p>
<p>Como prometido, estou disponibilizando os slides e exemplos utilizados nas apresentações, somente a apresentação sobre o RAD Studio RoadMap será direcionado para o EDN, onde o mesmo é atualizado frequentemente e pode ser acessado através deste <strong><a href="http://edn.embarcadero.com/article/39934" target="_blank">link</a></strong>.</p>
<div id="__ss_4615747" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Resolvendo problemas de performance em aplicações Delphi e bancos de dados" href="http://www.slideshare.net/andreanolanusse/resolvendo-problemas-de-performance-em-aplicaes-delphi-e-bancos-de-dados">Resolvendo problemas de performance em aplicações Delphi e bancos de dados</a></strong><object id="__sse4615747" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=resolvendoproblemasdeperformanceemaplicaesdelphiebancosdedados-100625140513-phpapp01&amp;stripped_title=resolvendo-problemas-de-performance-em-aplicaes-delphi-e-bancos-de-dados" /><param name="name" value="__sse4615747" /><param name="allowfullscreen" value="true" /><embed id="__sse4615747" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=resolvendoproblemasdeperformanceemaplicaesdelphiebancosdedados-100625140513-phpapp01&amp;stripped_title=resolvendo-problemas-de-performance-em-aplicaes-delphi-e-bancos-de-dados" name="__sse4615747" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div id="__ss_4615203" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Testando aplicações DataSnap" href="http://www.slideshare.net/andreanolanusse/testando-aplicaes-data-snap">Testando aplicações DataSnap</a></strong><object id="__sse4615203" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testandoaplicaesdatasnap-100625133824-phpapp02&amp;stripped_title=testando-aplicaes-data-snap" /><param name="name" value="__sse4615203" /><param name="allowfullscreen" value="true" /><embed id="__sse4615203" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testandoaplicaesdatasnap-100625133824-phpapp02&amp;stripped_title=testando-aplicaes-data-snap" name="__sse4615203" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div id="__ss_4614887" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Integrando Skype em aplicações Delphi" href="http://www.slideshare.net/andreanolanusse/integrando-skype-em-aplicaes-delphi">Integrando Skype em aplicações Delphi</a></strong><object id="__sse4614887" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=integrandoskypeemaplicaesdelphi-100625131923-phpapp01&amp;stripped_title=integrando-skype-em-aplicaes-delphi" /><param name="name" value="__sse4614887" /><param name="allowfullscreen" value="true" /><embed id="__sse4614887" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=integrandoskypeemaplicaesdelphi-100625131923-phpapp01&amp;stripped_title=integrando-skype-em-aplicaes-delphi" name="__sse4614887" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div id="__ss_4616368" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Delphi Prism 2011" href="http://www.slideshare.net/andreanolanusse/delphi-prism-2011">Delphi Prism 2011</a></strong><object id="__sse4616368" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=delphiprism2011-100625145602-phpapp01&amp;stripped_title=delphi-prism-2011" /><param name="name" value="__sse4616368" /><param name="allowfullscreen" value="true" /><embed id="__sse4616368" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=delphiprism2011-100625145602-phpapp01&amp;stripped_title=delphi-prism-2011" name="__sse4616368" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>O código fonte dos exemplos utilizados nas apresentações sobre DataSnap e Skype, podem ser obtidos através dos links abaixo:</p>
<ul>
<li>Aplicação ASP.NET utilizando AJAX, dbExpress, Themes, Skin e outros recursos, download <strong><a href="http://cc.embarcadero.com/download.aspx?id=27770" target="_blank">aqui</a></strong></li>
<li>Aplicação DataSnap, cliente, servidor e testes unitários, download <strong><a href="http://cc.embarcadero.com/download.aspx?id=27391">aqui</a></strong></li>
<li>Aplicação Delphi integrada a Skype, utillizando Skype API e Skype4COM, download <strong><a href="http://cc.embarcadero.com/download.aspx?id=27742">aqui</a></strong></li>
</ul>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/" title="Publicando providers durante o registro dinâmico de DataSnap Server Class">Publicando providers durante o registro dinâmico de DataSnap Server Class</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/delphi-tour-2010-slides-e-exemplos-disponibilizados-para-download/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

