sexta-feira, 17 de julho de 2015

Encerrando conexão REST JavaAndroid DataSnap

Prezados,

Pra quem utiliza Java ou esta começando a utilizar REST com DataSnap já deve ter percebido que uma conexão que é feita com o Proxy gerado pelo win32proxydownloader da embarcadero não encerra a sessão no servidor DataSnap.

Levando em consideração que seu  DSRESTConnection seja "conn"; Mesmo se você colocar conn.CloseSession; ele irá apagar o conteúdo da variável session, porem no servidor DataSnap a conexão permanecerá ativa. Pois bem se vc fizer muitas requisições DataSnap logo logo seu servidor estará com varias sessões abertas consumindo memoria e sem a menor ncesessidade.

Para resolver essa questão criei um método estático dentro da minha classe TJ3Conexao;
Nela você deve passar como parâmetro o objeto da conexão que está utilizando.

Segue o codigo:

public static void CloseConexao(DSRESTConnection _con)
{
String auxurl = _con.getProtocol() + "://"+ _con.getHost() + ":" + Integer.toString(_con.getPort()) + "/datasnap/rest/CloseSession/";
String auxsession = "dssession=" + _con.getSessionID();
_con.CloseSession();
try
{
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(auxurl);
get.setHeader(new BasicHeader("Accept", "application/json"));
get.setHeader(new BasicHeader("Content-Type", "text/xml; charset=utf-8"));
get.setHeader(new BasicHeader("Pragma", auxsession));
client.execute(get);
} catch (Throwable e)
{
e.printStackTrace();
}
}
}

Qualquer dúvida entre em contato.

Atenciosamente,

Nelson Lima ;-)

segunda-feira, 13 de julho de 2015

Doações para desenvolvimento de novos projetos.

Nova fase...

Não cobro por informações, é livre e espontâneo quem quiser ajudar, temos o compromisso de desenvolver tecnologia para nosso país.

Em breve mais assuntos e mais informações sobre tecnologia, em especial, Veículos elétricos, Drones, Programação, e muito mais.

quarta-feira, 24 de setembro de 2014

Wamp com Windows Server 2012 – “Microsoft-HTTPAPI/2.0”


Prezados,

Recentemente fui atualizar o servidor. Como Fui para o Windows Server R2 64 bits.

Resolvi que iria utilizar também Apache 64 bits. Para minha surpresa não existe pacote oficial do Apache 64bits.
Então fui procurar pacotes instalei o Wamp. Porem não consegui de primeira.

O primeiro problema foi por conta do IIS estava instalado. Desinstalei com certa facilitada pelo próprio recurso do Windows Server de adicionar e remover funcionalidades;

Mas mesmo após a remoção do IIS, não consegui instalar o WampApache; Fiz o teste de porta 80 e aparecia a seguinte mensagem:
Microsoft-HTTPAPI/2.0

Comecei uma caçada ate descobrir que o serviço que estava utilizando era o: BranchCache

Desativei o serviço! E somente assim finalizei a instalação;

Fica a dica, porque não achei essa solução na internet;


Abraços e ate a próxima;

domingo, 3 de novembro de 2013

Comparativo entre componente de conexão com banco de dados Delphi DBX vs FireDAC



Prezados amigos, resolvi fazer um teste comparativo de velocidade entre algumas suíte de acesso a dados do Delphi.  Minha ideia inicial era fazer um comparativo entre o tão falado FireDAC e o DBX. Fiquei surpreso com o resultado, mas foi uma surpresa um tanto decepcionante quanto ao FireDAC. No teste que fiz ele é surpreendentemente lento. Pode ser que haja alguma configuração que eu não tenha feito, mas por default, ele não foi bem. Abaixo segue a metodologia e em seguida os resultados.

Metodologia

Criei uma simples aplicação com os componentes de acesso e fiz um loop com FOR de 1 ate 10000 com INSERTs. Abaixo segue o trecho do código:
  for I := 1 to SpinEdit1.Value do
    begin
      ClientDataSet1.Append;
      ClientDataSet1ID.Value := i;
      ClientDataSet1TEXTO.Value := '0123456789001234567890';
      ClientDataSet1TEMPO.Value :=   now;
      ClientDataSet1.Post;
      ClientDataSet1.ApplyUpdates(0);
    end;
  ClientDataSet1.Close;

Essa arquitetura foi utilizada, pois é assim que utilizo no meu desenvolvimento em 3 camadas com o DataSnap. O ClientDataSet roda no lado cliente e no lado servidor há um provider e o componente de acesso a dados.
Utilizei o banco de dados FireBird porque creio que seja um dos mais comuns na comunidade e sua instalação é bastante simples de realizar.
            A tabela no banco contem apenas três campos: ID interger, TEXTO varchar, TEMPO Time; Para cada registro gravado é fornecido o ID, um texto padrão e no campo tempo vai o momento da em que os campos são atribuídos, utilizando a função NOW como visto no código acima. Após isso é verificado no banco de dados a relação de tempo entre o primeiro registro gravado e o último, obtendo-se assim o tempo gasto para serem feitos todos os inserts. Outros  parâmetros do ambiente do teste:
Versão Delphi: XE5 Trial
Computador: Notebook Dell i5 Windows 64 bits
Versão Firebird: 2.5.1 32 bits
Rede: Servidor local, não foi utilizado rede

Resultados

Aqui segue a tabela de resultados entre as 3 suites testadas ate agora, e uma variação do DBX, gravação com SQLQuery e com SQLDataSet: 

FireBird 2.5 32 Bits

Componente
INSERT=10000 (segundos)


DBX/Query
28

DBX/DataSet
27

FireDAC
274

IB
30

          
Note que no geral a pouca diferença entre as suítes, exceto o FireDAC que é extremamente lento comparado com outros. Pode ser que seja somente com o Firebird? –Talvez, foi um teste que fiz, repito de forma simples para uma avaliação inicial. Para ver as primeiras impressões, bem, eu não estou feliz com o que vi e irei procurar me aprofundar mais no assunto para ver o que pode ser melhorado.

Novos teste 

Estou prevendo realizar novos testes, quero incrementar outros componentes no comparativo, por tanto aceito sugestões(Coloquem nos comentários ou enviem um e-mail para jnelson3@ig.com.br).  E brevemente quero testar com outros bancos de dados e outros e outros comando como Update e Select que são os mais utilizados.

Conclusão

Fiquei realmente decepcionado com o FireDAC, li que ele integrou ao Delphi para ser o padrão, então irei buscar mais informações para saber o que está ocorrendo de errado.  Por hora posso dizer que foi chocante a lentidão. Não recomendo ninguém a mudar por enquanto.