Página 1 de 1
Variáveis do Sistema em Clipper com Blinker
Enviado: 26 Dez 2011 11:24
por billy1943
Há bastante tempo, colocávamos o executável em Clipper 5.2 linkeditado com Blinker 7, em todos os terminais.
Assim, somente as solicitações aos bancos de dados transitavam pela rede.
Mais recentemente optou-se por utilizar-se do sistema executável instalado somente no servidor de rede.
Aí passaram a ocorrer problemas de variáveis que são truncadas, ignoradas, causando falhas no processamento.
Devemos nos lembrar que vários terminais criando telas, abrindo variáveis públicas, estáticas, privadas e locais, vão aumentando
a área utilizada.
Se a empresa tiver poucos terminais pode ser que funcione bem.
Mas se ela tiver dezenas de terminais ?
Gostaria de saber a opinião dos colegas que trabalham desta última forma, com no mínimo de 10 (dez) terminais, que funcionem sem problemas, e o que implantaram para não ocorrer o exaurimento da área das variáveis.
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 11:41
por billy1943
Dias atrás, expus uma dúvida com relação ao possível exaurimento da área de variáveis, quando se usa o executável em Clipper somente no Servidor, ao invés de ter uma cópia do mesmo em cada terminal. Não tive nenhuma resposta até hoje.
Com respeito aos bancos de dados e seus índices, o sistema se comporta perfeitamente, não importa o número de terminais, pois
todos os utilizarão em modo compartilhado, na maioria dos casos.
Pois bem, aí vão as (outras) dúvidas:
- se todos os terminais estão acessando o mesmo executável, que tem as mesmas rotinas para todo mundo, como ficam os conteúdos
das diversas variáveis (estáticas, públicas, privadas e locais), quando alguém entra para executar uma rotina já em uso por determinado terminal, se é de praxe, no inicio de cada rotina, definirmos as variáveis necessárias para essa rotina, e nessa definição, iniciamos os valores delas com espaços, zeros, datas vazias, etc. ?
- então como o sistema se comportará para que os valores dessas variáveis já existentes nesse servidor, não sejam afetadas pela entrada por outro terminal na execução da mesma rotina ?
E como fala aquela propaganda na TV, o que move o mundo, não são as respostas mas sim as perguntas...
Variáveis do Sistema em Clipper com Blinker
Enviado: 04 Jan 2012 12:03
por Pablo César
Oi Billy, já que você abriu outro tópico abordando este mesmo tema, vou aproveitar para juntá-lo e responder a suas dúvidas com relatos baseados na minha experiência. Mas desde já, não entendí o por quê do título "com Blinker", pois com ou sem este assunto indifere, na minha opinião.
recentemente optou-se por utilizar-se do sistema executável instalado somente no servidor de rede.
Aí passaram a ocorrer problemas de variáveis que são truncadas, ignoradas, causando falhas no processamento.
Problemas de variáveis por conta do sistema estar instalado somente no servidor ? Eu gostaria que você relatasse que tipos de problemas, mencione as mensagens de erros. Pois eu não estou entendendo a lógica que você levantou. Você menciona em variaveis conflitando, mas minha opinião, isso certamente não acontece porque a estações estaria compartilhando o mesmo executável. Já que cada estação ocupa o seu proprio espaço de memória em sua CPU. Você teria que explicar melhor quais váriaveis você se refere, variáveis de ambiente ? Mesmo assim não vejo nexo, desculpa Billy, tlvez eu esteja ignorando algum fato. Pode explicar melhor ?
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 14:12
por alxsts
Olá!
Também acho que o Billy está fazendo alguma confusão.
Nunca ouvi falar em variável ignorada ou truncada, a não ser por erro de lógica do programador.
O fato de o executável estar armazenado no servidor é apenas por motivo de centralização de informação, para não ter que copiar uma nova versão em cada terminal, quando feita alguma alteração.
Quando um computador recebe a ordem para carregar um executável, o sistema operacional simplesmente carrega o arquivo .Exe para a memória e lhe passa o controle. Pouco importa se o .Exe está armazenado no servidor. Vai ser carregada uma cópia na máquina local e toda a alocação de memória será feita nesta.
Aliás, mesmo que você execute várias instâncias de um executável na mesma máquina, o gerenciamento de memória garante a alocação estanque para cada instância.
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 14:26
por billy1943
Oi, Pablo
Vou explicar o que pode estar ocorrendo com a utilização de todos os operadores em seus terminais acessando um único executável instalado no servidor de rede.
Como todos os operadores podem entrar em qualquer rotina, o que acontece (presumo) ?
- uma rotina inicia uma variável caracter chamada mensagem com um conteúdo vazio, exemplo: 100 caracteres.
- essa mesma rotina com o mesmo operador edita essa variável, colocando-lhe um determinado conteúdo
- antes de ele se utilizar essa variável editada em sequencia para passá-la para um relatório ou antes de gravá-la em um banco, outro operador em outro terminal acessa a mesma rotina para fazer um mesmo serviço
- no início dessa rotina o programa inicia a variável novamente agora para o segundo operador, afinal a rotina é a mesma para todo mundo não importando em que parte dela eles estão
As perguntas são:
- com a entrada do segundo terminal/operador que utiliza o mesmo servidor e mesma rotina não pode acontecer dele "limpar" a variável que o primeiro editou e ainda não terminou de utilizá-la ?
- todos os operadores utilizando a mesma área (do servidor) não há possibilidade de exaurir a área disponível ?
- como um servidor (presumo que somente para acesso a bancos de dados e seus índices) faz esse tratamento ?
- porque alguns colegas informam que colocam o executável somente no servidor e alegam que deixar uma cópia em cada terminal é problemático ?
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 14:34
por billy1943
Não tinha visto ainda a resposta do nosso amigo Alexandre, que afirma que o programa faz todo o processamento no terminal, apenas
obtendo uma cópia do executável (.EXE) que está no servidor, para iniciar o serviço, independentemente dos outros terminais.
É isto o que realmente acontece ?
Pois o analista/administrador de rede não pode me afirmar isso com convicção.
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 14:45
por alxsts
Olá Billy.
É isto sim, pode acreditar. Uma imagem do executável é trazida do servidor para a máquina local.
Simplesmente coloque o executável em uma pasta do servidor mas não o execute. Vá a uma outra máquina da rede e execute o executável a partir daquela pasta do servidor. Na máquina local, abra o Task Manager e verá o seu executável listado entre os aplicativos. Abra o Task Manager no servidor e verá que o teu executável não aparece na lista de aplicativos rodando no servidor.
Sem saber, respondi a outra dúvida tua:
billy1943 escreveu:- porque alguns colegas informam que colocam o executável somente no servidor e alegam que deixar uma cópia em cada terminal é problemático ?
alxsts escreveu:O fato de o executável estar armazenado no servidor é apenas por motivo de centralização de informação, para não ter que copiar uma nova versão em cada terminal, quando feita alguma alteração.
Além disto, reforça a segurança.
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 15:26
por Pablo César
Billy escreveu:Não tinha visto ainda a resposta do nosso amigo Alexandre, que afirma que o programa faz todo o processamento no terminal
Eu ja tinha mencionado isso para você:
minha opinião, isso certamente não acontece porque a estações estaria compartilhando o mesmo executável. Já que cada estação ocupa o seu proprio espaço de memória em sua CPU.
Por isso pedí explicações de onde estaria ocorrendo algum presumível erro. Mas os colegas já ajudaram a afirmar o mesmo.
Na minha opinião, bom seria que em cada terminal tivesse o seu executável instalado. Assim iria apenas trafegar dados e não a instrução do programa conforme a demanda. Isso em rede causa um certo volume que poderia ser evitado. Por outro lado essa prática requer um cuidado a mais quando o programa sofre algum upgrade. Ai deveria ser feito uma rotina de verificação de versão e atualizar-se no terminal automaticamente quando alguma diferença for detectada.
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 17:20
por rochinha
Amiguinhos,
A prática de se colocar o sistema espalhado em maquinas era usado a tempos atrás onde tinhamos pouca memória disponivel e para desafogar o peso do executável nos servidores, hoje já contamos com memórias maiores e servidores melhores.
O mesmo aplicativo sendo aberto várias vezes dificilmente terá meios de alterar o valor de uma variável aberta por outro aplicativo.
Isto só acontece com arquivos externos, ou seja, voce esta salvando informações em arquivos .MEM ou usando variáveis ambientais como meio de transporte.
Se voce pretende colocar seu aplicativo somente no servidor terá de rever estas variáveis de nome único e que são manipuladas por muitas estações, dando-lhes alguma sequencia. Exemplo, ESTACAO01, ESTACAO02, ...
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 18:25
por Pablo César
O mesmo aplicativo sendo aberto várias vezes dificilmente terá meios de alterar o valor de uma variável aberta por outro aplicativo.
Na verdade o colega está se referindo a variaveis terem algum problema quando acessado por diversas estações e não por outros aplicativos.
Isto só acontece com arquivos externos, ou seja, voce esta salvando informações em arquivos .MEM ou usando variáveis ambientais como meio de transporte.
Se voce pretende colocar seu aplicativo somente no servidor terá de rever estas variáveis de nome único e que são manipuladas por muitas estações, dando-lhes alguma sequencia. Exemplo, ESTACAO01, ESTACAO02, ...
Nesses casos, que guardam informações únicas para cada estação, eu disponibilizo o arquivo, seja .MEM ou seja .CFG na propria estação. Portanto não terá influência nos arquivos de configuração que está no servidor, isso se eu não quiser que seja alterado pelas estações.
Conflito de variáveis - Executável em Servidor
Enviado: 04 Jan 2012 19:45
por Clipper
Complementando.
Pessoalmente gosto de ter um executável para cada estação, da mesma maneira que cria uma dificuldade por descentralizar o EXE, cria uma facilidade, que é de poder atualizar em apenas uma máquina sem precisar todos sairem do sistema, na maioria dos meus clientes acontece assim :
1-Um usuário de um cliente solicita uma alteração (por um motivo qualquer)
2-Faço a modificação e atualizo apenas na máquina do usuário que solicitou
3-Se não funcionou volto ao passo 2, se funcionou legal envio para o servidor e aviso a todos os usuários para assim que puder executara o BAT de atualização que deixo em cada estação.
Isso funciona muito bem no dia a dia, em que a maioria das atualizações não afeta um todo e são apenas pequenas modificações.
Até logo.
Marcelo
Conflito de variáveis - Executável em Servidor
Enviado: 31 Jan 2012 17:55
por billy1943
Após todas as considerações dos colegas, e verificando junto ao cliente, informo que está tudo OK, e, repasso as colocações
que fizemos, no intento de ajudar outros colegas, de uma forma bem sucinta:
Servidor...............................: fica com o executável (ESTOQUE.EXE) do sistema
Cada um dos Terminais.............: acessará o sistema por meio de um ícone no DeskTop, que tem entre as suas propriedades:
- Programa
Linha de comando: C:\estoque\estoque.bat
Processando.......: C:\estoque
Esse .BAT tem 1 linha com o seguinte conteúdo:
S:\estoque\estoque.exe
S = Mapeamento do servidor para os terminais
Assunto resolvido.