Porque meu SocketServer (3 Camadas) trava?

Delphi

22/09/2005

Olá, tenho um servidor usando o SocketServer da borland, e quando tem muitos processos de dados, (muitos incluir por exemplo), ele simplesmente trava todas as conexoes.. o que pode ser?

Estou usando COM, e todas as portas estao abertas no windows 2k Server.


Desde ja agradeco


Titanius

Titanius

Curtidas 0

Respostas

Nandolh

Nandolh

22/09/2005

Por isso eu parei de utilizar :lol:


GOSTEI 0
Nandolh

Nandolh

22/09/2005

Ah! Ia me esquecendo... Enfrentei o mesmo problema e não consegui encontrar nenhuma solução.

Se alguém souber de algo, agradeceria muito.


GOSTEI 0
Titanius

Titanius

22/09/2005

:D

Estou quase desistindo também, mas pra qual vc mudou?


GOSTEI 0
Nandolh

Nandolh

22/09/2005

Abandonei...

:cry:


GOSTEI 0
Marioguedes

Marioguedes

22/09/2005

Olá... não entendi por completo o problema mas o uso de Threads é uma opção a meu enteder...


GOSTEI 0
Thomaz_prg

Thomaz_prg

22/09/2005

No Socket Server tem uma opção chamada Thread Cache Size... aumente esse valor (é que o valor que vem por Default é 10, e muitas vezes não é o suficiente).


GOSTEI 0
Titanius

Titanius

22/09/2005

Olá... não entendi por completo o problema mas o uso de Threads é uma opção a meu enteder...


O problema é o seguinte: Eu tenho um servidor COM, e eu uso o SocketServer (SocketConnection) para conectar no servidor, visto que não consegui fazer funcionar com o DCOM e nem com o WebConnection. Quando algum cliente está fazendo algum processamento grande, como por exemplo Refaz Acumulados e algum outro cliente tenta conectar, o ScktSrvR.exe (Socket Server da Borland), simplesmente trava!! e [b:320ded28ac]todos[/b:320ded28ac] os clientes travam, eu tenho que reiniciar o servidor COM, e reiniciar o scktsrvr.exe para voltar a funcionar... Isso acontece com 2 usuários... ou seja, muito estranho.

Abandonei... ---------- No Socket Server tem uma opção chamada Thread Cache Size... aumente esse valor (é que o valor que vem por Default é 10, e muitas vezes não é o suficiente).


Eu aumentei o Cache pra 500000 e nada, :D.. Voce abandonou, mas está usando algo? Qual tecnologia?



[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

isso depende muito da configuração do seu servidor COM+

Call Synchronization = Required
Transaction Model = Requires a transaction

Além disso, crie sua classe COM+ com os parâmetros ciSingleInstance e tmApartment pra ver se resolve.

Se as suas configurações não estiverem dessa forma e você as alterar, será necessário desinstalar o COM+ e reinstalá-lo. apenas substituir a DLL não dá certo.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

agora uma outra pergunta: a rotina do Refaz Acumulados está no cliente?
deveria ser uma Stored Procedure no servidor de banco de dados, que seria disparada pelo servidor COM+ em função da solicitação do client.
asim a conexão não ficaria comprometida de forma alguma, pois o cliente solicitaria (o que não ´pesa´ na aplicação) e o servidor dispararia a stored procedure, o que manteria o processo totalmente no servidor, sem mais utilizar a porta de comunicação ou os serviços do socket.


GOSTEI 0
Titanius

Titanius

22/09/2005

Olá emerson.en

A rotina do refaz foi só um exemplo. Pra testar eu fiz o seguinte, criei uma tabela de testes, e no cliente, coloquei um FOR pra incluir alguns dados, ou seja, simulando que alguns usuários estariam inserindo os dados, e com isso o outro cliente na hora que conecta ele trava.

Bem, o meu servidor está

Call Synchronization = Required
Transaction Model = Requires a transaction
tmApartment
cMultiInstance

jah tentei com
tmBoth
cMultiInstance

e
tmBoth
cSingleInstance

e o RDM está como Pooled


Será que é configuração errada minha?

[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

eu não tive uma boa experiência com os objetos ´Pooled´.

aqui criamos os objetos com ciMultiInstance e tmSingle, com Call Synchornization=Required e Transacion Model=Does not support transactions, e ainda com o object pooling desmarcado.
foi feito um programa para estressar o sistema. esse programa tinha um for..next que inseria 2.000 registros e foi executado simultâneamente em 6 micros. o sistema sequer ficou lento.

tente com essas configurações e veja se resolve seu problema.


GOSTEI 0
Titanius

Titanius

22/09/2005

Ok amigo, agora está funcionando, um pouco mais lento, parece que ele executa somente um de cada vez, sei lá, mas o que me preocupou foi isso:
Transacion Model=Does not support transactions

no livro que tenho, fala que isso aí diz: não há suporte para transação.

e como funcionaria então? não teria algum problema com várias máquinas ligadas ao mesmo tempo não?

E mais uma coisa... onde eu tenho master-detail quando eu chamo ele dá: falha catastrófica.


[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

pelo que eu sei, com [i:c2239a7805]Does not support transactions[/i:c2239a7805] as transações deverão ser explícitas (controladas por você).
se estiver com qualquer outro flag que suporte transações. as mesmas serão implícitas, controladas pelo próprio objeto COM+.

quanto ao ´Falha catastrófica´ no master-detail não sei te dizer. utilizo nested tables.


GOSTEI 0
Denis

Denis

22/09/2005

só um comentário.

Tbm tive problemas com socket server. Mas isto aconteceu em uma máquina que tem windows 2000. Então transferi a aplicação para uma outra com windows XP e não tive mais problemas.
Será que é algum Bug do 2000 ? Estranho isso né ?


GOSTEI 0
Titanius

Titanius

22/09/2005

pelo que eu sei, com [i:8db91040e5]Does not support transactions[/i:8db91040e5] as transações deverão ser explícitas (controladas por você). se estiver com qualquer outro flag que suporte transações. as mesmas serão implícitas, controladas pelo próprio objeto COM+. quanto ao ´Falha catastrófica´ no master-detail não sei te dizer. utilizo nested tables.


É eu uso o ClientDataSet mesmo... tem alguma diferenca? e sobre Windows, procede?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

eu sei que há um bug no scktsrvr.exe do Delphi 5 até o delphi 7 (acontece quando é feita a desconexão de um cliente).
esse erro foi corrigido e está no site da borland.
(se você precisar dessa correção eu posso te mandar por email)

no servidor eu uso SQLDataset + DatasetProvider + Datasource (quando necessário)

no cliente eu uso ClientDataset conectando através de um ConnectionBroker + SocketConnection

quanto ao windows eu não tenho o que falar. utilizo com windows 2000, 2003 e XP e nunca tive problemas.

mais uma coisa: se você controla suas transações com StartTransaction e Commit não é necessário se preocupar com o [i:5c535cf6cc]Does not support transactions[/i:5c535cf6cc]


GOSTEI 0
Titanius

Titanius

22/09/2005

Pior que eu baixei a versao atualizada e tudo.. e ele nao para de travar.. sacanagem... estou pensando em usar o ASTA para a conexao, vc conhece?


GOSTEI 0
Megsoft

Megsoft

22/09/2005

[quote=´emerson.en´]eu sei que há um bug no scktsrvr.exe do Delphi 5 até o delphi 7 (acontece quando é feita a desconexão de um cliente).
esse erro foi corrigido e está no site da borland.
(se você precisar dessa correção eu posso te mandar por email)

Vc pode mandar este scktsrvr.exe estou precisando fazer esta correção mas não encontrei no site da borland.

Gilmar Paiva
megsoft1@hotmail.com


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

e-mail enviado...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

o email voltou. o anexo tem 1.2MB... deixe outra conta de e-mail pra eu tentar novamente...


GOSTEI 0
Martins

Martins

22/09/2005

o email voltou. o anexo tem 1.2MB... deixe outra conta de e-mail pra eu tentar novamente...

vc poderia enviar para martinsbios@gmail.com?

Obrigado [b:c06eefb12d]emerson.en[/b:c06eefb12d]!!


GOSTEI 0
Megsoft

Megsoft

22/09/2005

Meu Caro,

Mande pra este: megsoft@clubenet.com.br

Gilmar Paiva


GOSTEI 0
Megsoft

Megsoft

22/09/2005

Caro Colega,

Não conseguir abrir o arquivo q vc me enviou mesmo renomeando para zip, poderia mandar novamente.

Gilmar Paiva
megsoft@clubenet.com.br


GOSTEI 0
Titanius

Titanius

22/09/2005

Opa.. até que enfim consegui postar algo no fórum :D

Pode enviar pra mim também?

fellipe@digitum.info


Obrigado


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

baixem de
[url]ftp://ftp.sistecno.com.br/Arquivos/18265_borland_socket_server_fixed_d5_to_d7.ZIP[/url]

só ficará no ar hoje (18/11/2005)...


GOSTEI 0
Martins

Martins

22/09/2005

baixem de [url]ftp://ftp.sistecno.com.br/Arquivos/18265_borland_socket_server_fixed_d5_to_d7.ZIP[/url] só ficará no ar hoje (18/11/2005)...


Valew Emerson.en, recebi o e-mail e vou aproveitar para baixar novamente do link.

Obrigado!!!


GOSTEI 0
Titanius

Titanius

22/09/2005

emerson,

Esse server, não trava? Pois parece que eu baixei tbm esse, e tive problemas com muitas máquinas...


GOSTEI 0
Megsoft

Megsoft

22/09/2005

baixem de [url]ftp://ftp.sistecno.com.br/Arquivos/18265_borland_socket_server_fixed_d5_to_d7.ZIP[/url] só ficará no ar hoje (18/11/2005)...



Caro Colega,

Vc poderia disponibilizar apenas por hj novamente. Estava viajando e só retornei na Segunda feira - 21/11 e nao conseguir baixar.

Desculpe o incomodo.

Gilmar Paiva
megsoft@clubenet.com.br


GOSTEI 0
Titanius

Titanius

22/09/2005

Olá, segue o link, este ficará no ar..

[url]http://www.digitum.info/downloads/18265_borland_socket_server_fixed_d5_to_d7[1].ZIP[/url]


Porém preciso que alguem teste em muitos computadores e me fale se funcionou, pois nao consigo testar pois mudei meu sistema, e nao tenho computadores suficientes pra testar, pois comigo esta versão quando eu peguei a um tempo atrás estava travando mesmo assim..

[]s

e aguardo retorno dos amigos...


GOSTEI 0
Megsoft

Megsoft

22/09/2005

[quote=´titanius´]Olá, segue o link, este ficará no ar..

[url]http://www.digitum.info/downloads/18265_borland_socket_server_fixed_d5_to_d7[1].ZIP[/url]


Porém preciso que alguem teste em muitos computadores e me fale se funcionou, pois nao consigo testar pois mudei meu sistema, e nao tenho computadores suficientes pra testar, pois comigo esta versão quando eu peguei a um tempo atrás estava travando mesmo assim..

[]s

quote]


Vou fazer testes com ele esta semana se resolver o problema direi a vc

Gilmar Paiva
megsoft@clubenet.com.br


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

notem que não basta apenas utilizar esse novo socket server.
também é necessário trocar as units/dcus scktcomp e sconnect do delphi e recompilar o projeto (de preferência fazer um rebuild)


GOSTEI 0
Titanius

Titanius

22/09/2005

Emerson.en, só a titulo de curiosidade, quantos computadores voce consegue conectar sem problemas?

[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

em uma empresa mais ou menos 70.
numa outra empresa uns 40.

essas são as maiores, eu acho.

as demais têm por volta de 25.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

na verdade, numa empresa está com 187 conexões simultâneas agora (22/11/2005 16:08). durante a madrugada - das 22:00 às 05:00 - o movimento é ainda maior.


GOSTEI 0
Titanius

Titanius

22/09/2005

putz... como vc consegue? quando eu desenvolvi quando ficava perto de 5 simultanea travava meu ScktSrv!! Essas conexoes eh via internet? usando SocketConnection?


[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

nessa empresa que está com mais de 180, são todas via internet por sockets.
as conexões internas também são feitas num socket server, mas no próprio servidor de dados.
ambas com aquele socket server da borland.

minha estrutura é mais ou menos assim

  [clientes externos]
           |
           |
           |
+----------+-----------+    +--------------------------+
|          |           |    |      [banco de dados]    | 
|          |           |    |             ^            |
|          V           |    |             |            |
|   [socket server ]--------+->[servidor de aplicação] |
|                      |    |             ^            |
|                      |    |             |            |
|                      |    |      [socket server ]    |
+----------------------+    +--------------------------+
 [servidor de internet]         [servidor de dados]
                                          ^
                                          |
                                          |
                                 [clientes internos]


dessa forma, o socket server do servidor de internet fica com mais ou menos 180 conexões; o socket server do servidor de dados fica com umas 40 conexões; e servidor de aplicações fica com um total de 220 conexões simultâneas.


GOSTEI 0
Titanius

Titanius

22/09/2005

vixi... sem travar? então com certeza eu devo ter feito algo errado no meu sistema... só pode... olha que procurei até não querer mais e não achei... msa estou querendo voltar pro 3 camadas, pois programar em Asta vai ficar complicado, já que estamos passando pra Delphi2005, e não tem Asta pra D2005, e mesmo se tiver... vai ficar muito caro.. :D


Vc indica algum site, tutorial ou alguma coisa sobre esse assunto?

[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

eu li o livro [url=http://www.malima.com.br/BOOK_read.asp?id=33]Sistemas Multicamadas com Delphi - DataSnap e dbExpress[/url]


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

tem um baratinho [url=http://produto.mercadolivre.com.br/MLB-36930980--_JM]aqui[/url]


GOSTEI 0
Titanius

Titanius

22/09/2005

este livro eu comprei ele na epoca, mais achei meio fraco, queria algo mais a fundo nesse sistema.. mas parece que nao existe...fico me perguntando se a tecnologia eh tao boa assim, pq sera que nao se acha nada dela? :roll:


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

há vários artigos na internet sobre o assunto (quase todos em inglês). tente
http://www.drbob42.com/examines/examin34.htm
http://www.linhadecodigo.com.br/artigos.asp?id_ac=516&sub=0

sobre pooling (é a mesma coisa no D7):
http://bdn.borland.com/article/0,1410,27568,00.html

eu só gostaria de passar uma dica:
se foi feita qualquer alteração nas configurações do COM+ (Call Syncronization/Transaction Model/etc.) desde o último registro do objeto, eu recomendo parar o serviço, desinstalar e reinstalar. pelo que eu pude perceber esse tipo de alteração não é bem aceita pelo sistema windows. sempre que fiz alterações e simplesmente troquei a dll tive dores de cabeça, principalmente congelamento do serviço. ao desinstalar e reinstalar novamente, isso não acontece.


GOSTEI 0
Titanius

Titanius

22/09/2005

Valeu emerson... vou tentar mais uma vez...

[]s


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2005

galera, resolvi reviver esse tópico...

titanius, você conseguiu resolver o problema de muitas conexões simultâneas no COM+?

vou fazer um exemplo simples de objeto COM+ com acesso a um BD FB ou MSSQLServer e vou preparar um cliente para popular esse banco através do COM+. assim você instala num servidor seu, e nós do clube (ou pelo menos você e eu) instalaremos o cliente nas máquinas, abriremos uma ou mais instâncias desse módulo cliente, faremos o acesso ao servidor COM+ que você irá instalar e ´estressaremos´ o serviço. assim você poderá ver o número de conexões ativas, a velocidade de processamento, e se haverá algum travamento.

pode ser?


GOSTEI 0
Thomaz_prg

Thomaz_prg

22/09/2005

Bom Emerson.En, eu tenho uma aplicação web (feita com Intraweb), e usei Soap para conexão... lendo o tópico, troquei a conexão para Socket e refiz meu servidor (aplicação). Não encontrei problemas, mesmo usando o SocketServer que acompanha o delphi. Consegui ter 320 conexões simultâneas, sem travar.
Fica aí a dica pro pessoal.


GOSTEI 0
Titanius

Titanius

22/09/2005

galera, resolvi reviver esse tópico... titanius, você conseguiu resolver o problema de muitas conexões simultâneas no COM+? vou fazer um exemplo simples de objeto COM+ com acesso a um BD FB ou MSSQLServer e vou preparar um cliente para popular esse banco através do COM+. assim você instala num servidor seu, e nós do clube (ou pelo menos você e eu) instalaremos o cliente nas máquinas, abriremos uma ou mais instâncias desse módulo cliente, faremos o acesso ao servidor COM+ que você irá instalar e ´estressaremos´ o serviço. assim você poderá ver o número de conexões ativas, a velocidade de processamento, e se haverá algum travamento. pode ser?


Olá emerson,

Eu tinha desistido do COM+, e começado a usar o ASTA, resolveu meu problema em partes, mas agora estou voltando para o COM+, pois é mas fácil para programar, e eu tenho condições de migrar para os próximos delphis, pois bem, estou terminando um sistema que estou usando o COM+, por enquanto está sem problemas, quando terminar, irei fazer o que você disse, vou colocar meu server numa máquina, e encher a tabelas via intenet pra ver se trava ou acontece alguma coisa... mas com todos os meus problemas antigos, percebi que o erro (travamento) ocorria quase sempre quando algum cliente era desconectado de alguma forma que não fosse a normal, queda de internet, reinicio da máquina... parece que o SocketServer da borland não liberava a memória despendida para aquele cliente, e com isso e com um tempo o servidor ficava lento e chegava até a travar, qua

então lanço uma pergunta: será que tem como criar um servidor que ficasse dando um ping nos clientes, e quando percebesse que algum não respondia, liberasse a memória dele no server?

Acho ótima você ter reavivado este topico, pois acho isto muito importante, já que não se encontra muita coisa sobre este assunto na internet.

[]s a todos,


GOSTEI 0
Titanius

Titanius

22/09/2005

ndo não travava de uma vez....
GOSTEI 0
Thomaz_prg

Thomaz_prg

22/09/2005

Pra evitar isso, eu coloquei um valor na propriedade TimeOut do SocketServer... POis após esse tempó ocioso no processo, o mesmo é destruído.


GOSTEI 0
Titanius

Titanius

22/09/2005

Pra evitar isso, eu coloquei um valor na propriedade TimeOut do SocketServer... POis após esse tempó ocioso no processo, o mesmo é destruído.


Já tentei isso tbm, e nao funcionou na epoca... :(


GOSTEI 0
Eselvati

Eselvati

22/09/2005

Pessoal,

Ressucitando o tópico, tenho tido problemas com BSS+Datasnap.


Tenho uma aplicação servidora (*.exe) e varios rdms, estes todos com cimultiinstance e tmsingle.

Funciona perfeitamente, tenho 150 acessos neste server...porém, se alguma das maquinas mandar um processo demorado, tipo um select q retorne algumas centenas de registros dentro de um método criado na type library, as outras 149 estações, literalmente ´param´, quem esta fora nao entra e quem esta dentro nao vai pra lado algum. :)
qdo o processo demorado disparado pela estação termina, todas as outras voltam ´ao ar´.

Se eu usar tmapartment ao inves de tmsingle, estes travamentos somem, mas tenho problemas com envio de comandos para o mysql, me retornam erros tipo ´commands out of sync´ dizendo q a ordem do envio dos comandos está errada.


Alguem já se deparou com este tipo de travamento no BSS?

Usar apartment ao invés de single será a saída?

Fiz um exemplo simples (cimultiinstance, tmsingle) criando um metodo no server para contar de 1 até 5000000000 e rodei em 2 estações, enqto o metodo nao terminou na 1ª instancia, a segunda ficou travada aguardando.



Ederson Selvati


GOSTEI 0
Brunolspp

Brunolspp

22/09/2005

Vamos la pessoal,

o q vejo é que existem alguns problemas de conceitro aqui.

COM+ não funciona, ou seja se vc utiliza o BSS e seu servidor e uma activex COM ou um dll não vai funcionar direito. Vai travar.
O ideal é utilizar o servidor como executável(vide meu exemplo do 8º DDD).

Não é recomendável que vc instale o servidor no serviços de componentes do COM+, isto faz travar tb. Para registrar use a seguite linha de comando no executar ´C:\minhapasta\meuserver.exe /regserver´.

Outra coisa, como não usamos COM+, não utilize o transactional datamodulo, use Remote Data Module, a principio com Multiple Instance e Thread Single.

OCahce size do BSS pode ser aumentando tb.

Se seu servidor fizer parte ou for um domain controller do Active Directory tb vai travar, pois os serviços do AD impedem o bom funcionamento de outros serviços inclusive do BSS, e faz ele travar.

Meus sistemas de missao critica tds funcionam sobre esta arquitetura sem problemas, pleo contrario, com mta performance, velocidade, escalabilidade e manutenabilidade.

Pra quem estiver querendo desistir, participe da lista que mantenho: nddv@yahoogrupos.com.br, vai ver um monte de pessoas trabalhando com isso e tendo sucesso.

Baixe meus exemplos que vcs verão a forma comercial deste tipo de desenvolvimento e independente de qualquer coisa, contem comigo para o que precisarem.

E se alguem quiser, eu tenho todo o treinamento on-line e prático sobre estas tecnologias.


GOSTEI 0
Vitor Rubio

Vitor Rubio

22/09/2005

Pessoal, estou com algumas dúvidas sobre 3 camadas, estou começando agora:

1) o que é o ALSA mencionado nas páginas anteriores desse tópico?
2) Outras linguagens, tipo C# ou java tambem tem esquemas n camadas iguais ao DataSnap do delphi?

Fiz, a titulo de teste, 4 exemplos: um transactional datamodule numa dll dcom sendo acessada por um DcomConnection, um outro transactional datamodule para ser acessado por um Socket connection e depois repeti esses dois exemplos, mudando o server para um executavel de remote datamodule e acessando ele tanto com dcom como com socket.

TODOS OS MEUS 4 EXEMPLOS ESTÃO FUNCIONANDO BEM, POREM, DEU CERTO DAQUELE JEITO, SABE? FUÇANDO SEM SABER DIREITO O QUE SE ESTÁ FAZENDO....

As minhas perguntas são:
1)Existem outras maneiras de fazer isso?
2)Como eu poso fazer um bom tunning de cache, pool e timeout para minha aplicação não travar?
3)onde eu posso encontrar o socket server da borland atualizado e corrigido? os links daqui estão quebrados.
4)essa tecnologia tem futuro? mesmo com essa aquisição do delphi pela embarcadero? A migração de delphi 7 para 2007 ou 2009 seria fácil?
5)o que é e para que serve o connection broker?

6) quando eu adiciono um transactional datamodule ou um remote datamodule, os dois wizzards mostram uma tela com opções para eu escolher antes de criar o projeto. Uns esquemas de transaction, instances e sei lá o que. O que significam essas opções e o que eu escolho?

7)Como fica a relação ntier e poo? fica muito trabalhoso? Tenho que criar classes ´fictícias ou tipo artificiais´ nos meus clients para corresponder às interfaces de classes ´verdadeiras´ no meu server?


desculpem o bombardeio de duvidas!


GOSTEI 0
Brunolspp

Brunolspp

22/09/2005

http://www.yahoogrupos.com.br/group/nddv é a fonte de consulta mais assertiva.

Nao use DCOM e nem DLL, é lento, cheiod e bugs e com probelmas de segurança a incompatibilidade entre SO.

A melhor solução até o Dlephi 2007 é BSS com DataSnap, usando servidor como executavel e nao como dll. Conector sempre o socketconnection, para o Delphi 2009 o melhor é o novo datasnap que esta sendo apresentado agora no Delphi Tour On Line (http://dn.codegear.com/br).

No meu link de downloads tem uma atualização do BSS e mais exemplos que voce pode tomar como base:
http://cc.codegear.com/author/795118

A migraçao de Delphi 7 para 2009 é imediata, não existem problemas de incompatibilidades entre as versões de Delphi desde 1 ate 2009.

Nao faz sentido realmente usar o Delphi 7, esta descontinuado e defasado totalmente, D2007/2009 é muito mais rapido para compilar, mais robusto, com mais recursos, a aplaicacao fica bem mais rapida por conta do novo gestor de memoria, voce tem mais recursos visuais e uma total absrtacao de SO com total suporte ao Vista e demais windows nativamente sem precisar mexer em código.

Nao poderia acontecer nada melhor com o Delphi do que ser adquirido pela Embarcadero, o resultado positivo disso ja pode ser sentido mundialmente pelo seu indicie de utilização que vem crescendo exponencialmente, as melhorias e nosvas tecnologias agregadas.

Abraços,

BL


GOSTEI 0
Vitor Rubio

Vitor Rubio

22/09/2005

Obrigado pelas dicas.

Preciso dar uma olhada no novo Delphi. Mas dificilmente ele será adquirido pela empresa. Trabalh ono TRF (Tribunal Regional Federal) e aqui usamos D7 por ser o que temos e o sistema (que é grande pois demora 2 minutos pra dar um rebuild) é todo feito em D7. é tipo um legado. Tambem só tem esse sistema, bem específico. Até os componentes feitos aqui são uteis somente a esse sistema e não visam outros.

Existe outras formas de se fazer n-tier sem ser com datasnap? Como eu posso usar o webConnection? É possivel usar o web connection em servidor apache?

Obrigado!


GOSTEI 0
Brunolspp

Brunolspp

22/09/2005

cara..

no Delphi o melhor sem duvida nenhuma é datasnap..

nao vale a pena usar nada diferente disso.. pois é mais rapido, facil, escalavel, seguro, em fim..

verifique na lista que te passei e confira..

eu uso com total sucesso a mais de 6 anos datasnap desta forma em a[plicacoes de missao critica 24X7 e de alta disposnibilidade e distribuicao geografica.

abs

BL


GOSTEI 0
Vitor Rubio

Vitor Rubio

22/09/2005

Bruno, pediram aqui na firma pra perguntar para você, porque você era o ´pai´ dacoisa hehehe

Seguinte, se eu fecho o clientdataset no meu client e paro de acessar os dados o remote datamodule que eu estava acessando é destruido, e quando eu abro é criado um novo.
Existe maneira de eu manter meu remote datamodule? Quero saber isso porque imagine um cliente fazendo consultas ou alterações, de repente ele perde a conexão. Se ele pedir pra reconectar ele não vai visualizar os dados que estava consultando ou alterando antes, terá de começar tudo de novo.

Outro problema, se eu configuro um timeout no servidor para matar meus clientes desconectados ele mata inclusive clientes válidos que estão conectados sem fazer nada. Isso é ruim porque se o usuario vai tomar um café, quando ele voltar perdeu a conexão....


GOSTEI 0
Brunolspp

Brunolspp

22/09/2005

fazer timeout é algo que deve ser feito co cautela e de acordo com a demanda.

sobre manter estado e outras soluções.

Tambem deve ser visto caso a caso...

mas a ideia é que enquando ha conexao, existe persistencia.. e fora isso e mais dificil..teremos que ir para o estado da arte e inventar algo.. pois nai existe magica pra isso mesmo.

em todo caso.. essa discussao seria muito melhor suportada na lista nddv como te passei..

abs

BL


GOSTEI 0
Vitor Rubio

Vitor Rubio

22/09/2005

pensei em toda vez que cair a conexão, ao dar a exception, salvar o clientdataset como xml, ou guardar apenas seu data ou delta numa olevariant, reconectar, limpar o clientdataset e jogar nele o que eu guardei no xml ou no olevariant.

Será que funciona?

de qualquer forma já postei isso no grupo. obrigado pela ajuda!


GOSTEI 0
Brunolspp

Brunolspp

22/09/2005

esta é uma boa pratica, mas sempre é bom salvar o conteudo inteiro (DATA) do CDS e de preferencia como binario.

no meu link de downloads gratuitos tem um video sobre isso e muito mais.

procure pelo video do FDD 2008 e pelo exemplo que apresentei lá.

http://cc.codegear.com/author/795118

abs

BL


GOSTEI 0
Vitor Rubio

Vitor Rubio

22/09/2005

valew! já estou baixando tudo do site hauahauahaua

vou pasar um bom tempo estudando.


GOSTEI 0
POSTAR