Soap Delphi7 FireBird

Delphi

18/04/2007

Pessoal,
Desenvolvi uma aplicação utilizando Soap e FireBird.
Minha aplicação acessa uma dll no servidor q faz as requisições ao Banco q está em um Servidor Web. E cada vez q a aplicação da um Post o ´Number of Attachments´ aumenta.

E quando chega a um numero elevado eu perco a conexão(provavelmente, excede o limite).
Localmente tb aumenta o Number of Attachements, mas, funciona perfeitamente(pois, naum possuo limites d conexão)

Alguem já passou por algo parecido?
Number of Attachments é o nº de conexões simultâneas???
Oq q eu poderia fazer para reduzir o Number of Attachments


Rspinheiro

Rspinheiro

Curtidas 0

Respostas

Rspinheiro

Rspinheiro

18/04/2007

sobe


GOSTEI 0
Jujan

Jujan

18/04/2007

Experimente criar um outro webservice para diminuir a carga em cima do seu webservice, é interessante entender que o webservice é uma página de acesso a dados e funções através de um protocolo Http e com isso tem as limitações do protocolo de internet, se está pesado demais vc pode balancear revendo a sua rede(muitíssimo complicado) ou então montando novos webservices paar dividir o peso e revendo suas consultas.


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

jujan,

muito obrigado pela resposta... mas creio q o meu problema está na quantidade de conexões no meu webservices, pois cada vez q eu dou um post é criada uma nova conexão.
eu preciso de alguma maneira encerar essa conexao logo após q dou o Post... Mas, naum sei como faze-lo.

Não sei se issu eh um problema do Soap ou do Sistema do Servidor(windows 2003)

grato,
Ricardo Pinheiro


GOSTEI 0
Jujan

Jujan

18/04/2007

Cara se for conexão vc tem q ver se está sendo fechada a conexão toda vez que vc deixa de usar os objetos, no webservice no SoapModule tem o evento onDestroy coloca para fechar a conexão do SqlConnection lá.


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

Jujan,
Testei sua dica, mas, meu webservice eh uma dll que esta sempre online, por issu, eu naum passo pelo evendo OnDestroy.

Estou tentando fechar minha conexao de qualquer jeito, mas, naum estou conseguindo.

vc tem outra idéia???


GOSTEI 0
Alex Maia

Alex Maia

18/04/2007

Amigo,
Você já tentou usar o seu servidor como sendo um exe ao invés de uma dll? Comecei a desenvolver um sistema em 3 camadas usando SOAP tendo como servidor uma dll e tinha muitas dificuldades. Depois de um tempo mudei para um exe e não tive mais problemas. Até a performance do sistema ficou melhor com o exe. T+


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

só que para issu eu preciso alterar toda a estrutura...

Antes quero lutar mais um pouco.

Grato,
Ricardo Pinheiro.


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

galera

SOAP

não foi desenvolvido para ser servidor de aplicaçao e conter regras de negocio pesadas e acesso a dados.

para se ter perfromance vc precisa aplicar conceito de multicamadas na aplicação, usar um container rapido e seguro como o Borland Socket Server(BSS).

a dica do colega com relação a usar CGI ao inves de ISAPI realmente e melhor.

Fazer pooling tb ajuda.

Mas se vc rpecisa de perfromance nesta estrutura vc não conseguirá, migre para BSS, com ele vc faz a interface q quiser, win32, IW, SOAP, etc...

no meu link de downloads gratuitos(abaixo da minha assinatura) vc encontra varios exemplso de aplicaçoes de alta performance com multicamadas e datasnap.

alem de ter um grupo de usuarios especifico a mais de 2 somente sobre este assunto: nddv@yahoogrupos.com.br


GOSTEI 0
Jujan

Jujan

18/04/2007

Quote[só que para issu eu preciso alterar toda a estrutura... ]

Para mudar a estrutura vc terá que copiar seus objetos de conexões q vc utiliza no seu ISAPI e colar na nova aplicação CGI que vc criou.

Quando vc compila a sua aplicação servidora seria interessante verificar se vc está compilando ela com o SQLConnection aberto se estiver feche e compile ela.Outra observação quantos SQLConnection vc colocou na sua aplicação e quantos usuários acessam ela.Desenvolver um modelo de pool também é um boa idéia como o Bruno falou, mais não mude direto para o BSS que é uma boa solução, pois se sua aplicação não trabalhar em rede local vc pode ter problemas com configuração de portas e acesso, pois essa é a base do BSS trabalhar com Socket através de portas já o WebService o acesso é via Http com o protocolo SOAP de transporte, para redes web é o melhor caminho na minha opinião.


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

cara..

BSS e mto mais escalavel q SOAP e mais rapido, leve e seguro.

ele e mto melhor pra rede local ou pra Web ja q vc pode definir em q porta, e naum precisa de trabalhar com nenhum servico sobre IP como e o caso do soap.

vc trabalha sobre IP diretamente..

e a porta so te dar maior mobilidade e opcao de configuracao..se o problema for porta, poem ele na 8080 por exemplo.

realmente essa questao da porta não é o motivo de não usar BSS, pelo contrario, é o motivo de usar :D


GOSTEI 0
Jujan

Jujan

18/04/2007

Caríssimo Bruno entendo a sua prioridade pelo BSS que tbm acho muito bom, porém estou somente tentando ajudar o colega na tecnologia que ele escolheu e por seus motivos que tal ao invés de ficarmos discutindo qual tecnologia gostamos mais, vamos tentar ajudá-lo com nossas experiências na tecnologia que ele escolheu, pois eu utilizo webservice em aplicações de altas demandas e tenho perfomace satisfatória dos meu aplicativos, assim como sei que vc tbm já desenvolveu coisas na tecnologia e sabe que é bom tbm.

Porque vamos ser lógicos senão fosse bom a Microsoft e CodeGear não colocaria em seus produtos tal tecnologia e a IBM não incentivaria o uso da tecnologia.


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

naum estopu falando pra naum usar soap, so estou esclarecendo q soap foi desenvolvido(no consorcio q envolve, SUN, IBM, Borland, Microsoft) para interfaces e naum com o objetivo de container de processamento pesado e acesso a dados, algyumas companhias(como a borland) q incluiram possibilidades disso na estrutura.. e naum falo do BSS pq gosto e nem disse q naum se pode fazer algo performatico com SOAP, ate pq uso SOAP e mto.

so procurei esclarecer pontos de utilizaçAo e alpicacao tecnologica q geralmente naum sao abordados. e contribuir com o pouco de experiencia q tenho pra q tds possamos nos ajudar.

me desculpe alguma coisa, me perdoe se vc entendeu q estava impondo uma solucao, apneas estava expondo o q sei com a intencao de ajudar e naum de puxar sardinha pra lado nenhum.

tamus juntos e misturados pra poder crescer, conta comigo para o q precisar. e mais uma vez, desculpa qq coisa diferente q expressei a não ser esclarecer e ajudar


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

jujan,

eu já mudei para CGI, mudei para Apache, mudei até o objeto de conexão... e continuo com o mesmo problema, quando vou converir as conexões ainda estão abertas(como vc pod ver abaixo) mesmo apos ter fechado minha aplicação....

C:\>netstat -an | find ´:3050´
TCP 0.0.0.0:3050 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1131 127.0.0.1:3050 TIME_WAIT
TCP 127.0.0.1:1132 127.0.0.1:3050 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1133 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1134 TIME_WAIT
TCP 127.0.0.1:3050 127.0.0.1:1135 TIME_WAIT

Cada conexão eh dada após um open do meu cds...

se puder me ajudar ficarei muito grato,
[]s,
Ricardo Pinheiro


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

tanto soap qto isapi vao trazer este problema.

vc precisa configurar no evento newsession para conectar e closesession para fechar a conexao.

no BSS nao teria este problema.

mas faz isso q resolve sua vda pro enquanto


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

´vc precisa configurar no evento newsession para conectar e closesession para fechar a conexao.´


Como eu poderia fazer para configurar estas sesões???

Grato,
Ricardo Pinheiro.


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

na sua aplicacao vc tem esses eventos, vc precisa olhar de acordo com o tipo q vc esta desenvolvendo, geralmente no webmodulo vc tem esses eventos nos dispatchers


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

na sua aplicacao vc tem esses eventos, vc precisa olhar de acordo com o tipo q vc esta desenvolvendo, geralmente no webmodulo vc tem esses eventos nos dispatchers


Estou gerenciando as Sessoes ´na mão´, antes de instaciar o objeto dou um Enter e apos dou um Leave...
depois q eu abro acesso Provider dou um Close no meu obj d conexão.

mas... nada disso adiantou, continua gerando conexões!!!

vc teria mais aluma dica pra me dar???

grato,
Ricardo Pinheiro


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

q tipo de projeto esta desenvlvendo e qual versao do Delphi?

ISAPI ou CGI?


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

ISAPI, Delphi7 e FireBird 1.5


GOSTEI 0
Jax

Jax

18/04/2007

Para de Sofrer e usa BSS
A transição nem é tão dificil assim...


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

Voces poderiam enviar para o meu e-mail algum material mais detalhado sobre o BSS???

rspinheiro@gmail.com

Ps: Bruno, eu já fiz o download do seu material!!!

Grato,
Ricardo Pinheiro.


GOSTEI 0
Armando.boza

Armando.boza

18/04/2007

amigo, vou falar mas não sei se vc ja fez isso.

na programação use o try finally ex:

dm.soapconnection.open;
try
  dm.ClientDataSet1.Post;
finally
  dm.soapconnection.close;
end;


use sempre try finally para garantir que sua conexão vai ser realmente fechada.
eu uso assim e não tive problema ainda.


GOSTEI 0
Rspinheiro

Rspinheiro

18/04/2007

já tentei sim!!!
dei o Close tanto na aplicação desktop qto no servidor(dll)...


[]s,
Ricardo Pinheiro


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

Material mais especifico sobre BSS somente no meu treinamento :(

ainda nao deu pra fazer as video aulas, se tiver interesse no treianmento mande uma mensagem em PVT e conversamos melhor.

mas qq duvida pode perguntar, sera um prazer ser util de alguma forma.


GOSTEI 0
Armando.boza

Armando.boza

18/04/2007

Material mais especifico sobre BSS somente no meu treinamento :( ainda nao deu pra fazer as video aulas, se tiver interesse no treianmento mande uma mensagem em PVT e conversamos melhor. mas qq duvida pode perguntar, sera um prazer ser util de alguma forma.


Aproveitando a deixa, comecei a pesquisar sobre BSS e notei que não há muita coisa na internet, vi no seu site de download os materiais e baixei todos mas infelizmente não consegui compilar.
onde posso achar mais sobre o BSS, queria fazer uns testes, saber como funciona, pois não tenho nem ideia.


GOSTEI 0
Brunolspp

Brunolspp

18/04/2007

entao

os exemplos a maioria esta em Delphi 2006 e 2007, mas podem ser compilados em Delphi 7, basta remover o sqlconnection do dbexpress e colocar de novo, os exemplos estao amplamente funcionais.

Tem muita coisa no HELP do Delphi e tem um grupo com mais de 400 usuarios desenvolvendo sobre esta tecnologia, o que pode lhe ajudar muito: nddv@yahoogrupos.com.br

e no mais sera um prazer lhe ajudar


GOSTEI 0
POSTAR