criar um novo servidor multicamada

03/03/2010

ola     estou com seguinte problema   uso aplicacao multicamada com delphi 2007   e tenho que rodar no mesmo servidor  os programas servidores   para empresas diferente   so que na   mesma maquina     gostaria de saber como eu faco par duplicar  meu servidor de aplicacao   para que eu possa registrar eles com nome diferente na   mesma maquina servidor   levando tipy llbery junto       se faltou alguma coisa vamos coversando vou tentando explicar melhor     obrigado  
Jorge Barbosa

Jorge Barbosa

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Olá Jorge,

Não faz mutio sentido "Duplicar" o servidor pois um servidor de app nada mais é que um ActiveX registrado na maquina, Activex este que possuem metodos que podem ser consumidos remotamente. Se eu tenho um servidor A com o metodos A, B, C e eu "Duplico" então eu terei o seguinte:

Servidor A
  Metodo A
  Metodo B
  Metodo C
Servidor B
  Metodo A
  Metodo B
  Metodo C

Os metodos serão os mesmo, porem em servidores diferentes. Não faz sentido.

Poderia me explicar a intenção disso?. Talvez a saida seja um Load Balance, Aninhamento de Servidor ou algo do Genero


Em tempo: "Duplicar" o servidor na verdade e criar outro TypeLybrary com os metodos e implementações, praticamente fazer outro projeto na base do Copy Paste. Obvio que poderiamos modularizar as implementações e concentrar num mesma unit usada por todos os projetos.

Att,

GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

rodrigo     e seguinte eu tenho um sistema unico para todos os meus clientes   com servidores para cada modulo   o meu cliente colocou o banco de dados eu uso o postgresql   tenho tres banco de dados diferentes   na  mesma maquina     e um unico servidor tenho que acessar quando a empresa A tenho que acessar  o mesmo  o banco a     quando eu cliente solicitar a empresa  B tenho que acessar a empresa B   assim por com  C  so que eu tenho um unico servidor de aplicacao para fazer o acesso a base     eu achei que duplicando com nomes diferente resolveria     ou se vc tiver uma outra solucao  obrigado   e so penser que tenho tres empresa diferente cadas uma com seu banco de dados e tenho um unico servidor   de aplicacao   obrigado
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Maravilha,

Vamos pensar juntos ....  Po falei igual telecurso 2000 rsrsrsrs

Bem um coisa e o servidor de app e outra coisa e o banco de dados. MultiCamadas funciona assim :



O que vc quer é isso aqui:




Então na hroa que o usuario se liogar no servidor e disser qual a empresa então você vai passar para o SQLConection os Parametros. Exemplo:

Se for Emrpesa A

Server:  10.0.0.0
Usuario: admin
senha: 123
DataBase: BancoA

Se for Emrpesa B

Server:  10.0.0.0
Usuario: admin
senha: 123
DataBase: BancoB

Se for Emrpesa A

Server:  10.0.0.0
Usuario: admin
senha: 123
DataBase: BancoC

Acho que a caminho e este.

Estou as ordens.

Att,

GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

isso mesmo a ideia e este   uma unica coisa como eu passo este paramento para sqlconnection  de eu estou na estacao com socket   connection este funcao que eu nao tenho ideia mas o desenho e isso mesmo    
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Vc ano vai fazer no cliente  vai fazer no servidor.

Exemplo.

No servidor de App vc criar um funcao Login.

function Login(usuario, senha, empresa: String);
begin
 
   If usuariocerto e senha certa then
   begin
     if Empresa = A then
     begin
         SqlConection.Params[username] := xxxx
         SqlConection.Params[password] := xxxx
         SqlConection.Params[database] := BancoA
     end
     else
     if empresa = B then
     begin
      
         SqlConection.Params[username] := xxxx
         SqlConection.Params[password] := xxxx
         SqlConection.Params[database] := BancoB
     end;
  end;

end;


No Cliente vc faz  Socketion.AppServer.Login(Rodrigo, 123, A) ou
Socketion.AppServer.Login(Rodrigo, 123, B).

Att,


GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

rodrigo   achei super legal   so fiquei com uma duvida eu  uso loadparmsconnect  no meus   servidores   eu continu usando ou coloco false nele co  este nova   condicao que vc passou
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

AI vai depender. Se vc carrega os parametros quando inicia o servidor então nao vai poder ser assim pq ai a conexão vai ser feita no inicio e ja vai conectar ao banco.

Pelo que entendi vc quer que um mesmo servidor acesse diferentes bancos de dados, entao nao podera mais carregar os parametros no inicio e sim quando o usuario logar.


Att,

GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Olá Amigo, Podemos ajudar em algo mais? Estamos aguardando para encerrar o chamado !! Att,
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola   so vou testar e retorno para vc
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Perfeito Estaremos aguardando !!!

Att,

GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola rodrigo eu criei a seguinte funcao no servidor da aplicacao   procedure Tserver_pagar.funcaologin(const banco, local: WideString);
begin
    Raise Exception.Create(local+'  '+banco);
    SQLConnection1.Params.values['hostname'] := local;
    SQLConnection1.Params.values['database'] := banco;
    SQLConnection1.Connected    :=true;
end;      
  e estou chamando ela assim na  minha aplicacao so para testar     procedure Tpagar1.FormCreate(Sender: TObject);
var
banco,local:string;
begin
banco:='tigra';
local:='127.0.0.1'; dtm_forn.SocketConnection1.Connected:=true;
try
  dtm_forn.SocketConnection1.AppServer.funcaologin(local,banco);
  dtm_forn.cdsempresa.Close;
  dtm_forn.cdsempresa.Open;
finally
dtm_forn.SocketConnection1.Connected:=false;
end;
Label5.Caption:=dtm_forn.cdsempresaempr_razao_social.AsString;
 DecimalSeparator:='.';
 // formsplash.ShowModal;
end;    e estou com seguinte erro  method'funcaologin  not supported by automation  object  
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

So não entendi o

Raise Exception.Create(local+'  '+banco);

Poderia me informar qual o motivo ???

Acredito que o problema possa esta ai.

att,



GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola o  motivo e so para pode ver as variavis que carregou  
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Pode comentar e tentar  novamente por favor para verificarmos se o motivo é este.

Att,

GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

oi   eu tirei     e erro agora e   INVALID VARIANT OPERATION   
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Vou verificar e retorno em breve.   Att,  
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Vou verificar e retorno em breve.   Att,  
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Vou verificar e retorno em breve.   Att,  
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

rodrigo ola   vc consegui   ve qual e o erro
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Olá,


Testei todas as formas de passagem de parametro e nao consegui reproduzir o erro. Poderia me enviar os fontes para eu testar a sua aplicacao.

Use o Disco virtual.

Att,

GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola   rodrigo ja tirei o erro mas na esta fazendo a conexao   vou colocar como estou chamando   ou a onde devo colocar onde chamar a   funcao esta e funcao no servidor   procedure Tserver_pagar.funcaologin(const banco, local: WideString);
begin
     ShowMessage(local+'   '+banco);
     SQLConnection1.Connected :=false;
     SQLConnection1.Params.Clear;
     SQLConnection1.LoadParamsOnConnect :=true;
     SQLConnection1.Params.values['BlobSize']:='-1';
     SQLConnection1.Params.values['DriverName']:='DevartPostgreSQL';
     SQLConnection1.Params.values['HostName']:= local;
     SQLConnection1.Params.values['DataBase']:=banco;
     SQLConnection1.Params.values['User_Name']:='postgres';
     SQLConnection1.Params.values['Password']:='';
     SQLConnection1.Params.Values['FetchAll']:='True';      SQLConnection1.Connected :=true;
    esta estou chamando na criacao do data no modulo do cliente   SocketConnection1.Connected :=true;
try
 banco:='new-scanner';
 local:='127.0.0.1';
 dtm_forn.SocketConnection1.AppServer.funcaologin(local,banco);
finally
SocketConnection1.Connected :=false;
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola como eu faco para passar o fontes para vc dar uma olhada     obrigado
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ja esta no meu disco virtual   com os fontes
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Olá Jorge com a tempestado aqui no RJ no FDS fiquei sem net.

Bem para que eu possa acessar o sues fontes preciso do link pois nao tenho acesso a area do cliente no disco virtual.

Este video mostra como publicar os fontes:

https://www.devmedia.com.br/imagens/videos/4/Video%20disco%20virtual.htm

No aguardo.

Att,


GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

oi   estou encaminhando o link   http://video.devmedia.com.br/discovirtual/199257/menu_multicamadas.zip
[Fechar]

[Fechar]

Nome da pasta:
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Vou verificar e entro em contato. Att,
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola descupe   cobrar vc mas vc ja chegou a ver alguma coisa
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Olá Amigo,

Eu continuo analisando. ALgo estranho ocorre,pois somente no seu projeto nao funciona.

Se eu crio um novo consigo a conexao correta. Sendo assim estou testando as maneiras como o servidor e instanciado: Single,APartment, etc.

Estou testando um por um e leve um certo tempo.

Peço a gentileza que aguardo, se não conseguir obter sucesso irei informar e cancelaremos seu chamado para não consumir seu pacote de crédito.

Att,

GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

TUDO BEM     SO TE PERGUNTEI     PORQUE EU ESTOU DEPENDENDO PARA IMPLANTAR O   UM SISTEMA MAS TUDO   BEM  E OBRIGADO PELA ATENCAO
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola   eu esto com uma delphi 2009     para instalar sera que     resolve este problema
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Olá Jorge, não sei se resolve o seu problema especificamente mas os exemplos que faço com o Delphi 2010 funcionam perfeitamente.

Se nao for dar trabalho para instalar vale a pena testar sim .

Att,

GOSTEI 0
Devmedia

Devmedia

03/03/2010

Jorge,
conseguiu resolver o problema?
GOSTEI 0
Jorge Barbosa

Jorge Barbosa

03/03/2010

ola rodrigo achei uma saida blz  fui comprar mais credito do suporte e fiquei sabendo que esta acabando que pena e muito bom ter alguem para socorre muito obrigado pela atencao  
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/03/2010

Por nada !!

Att,

GOSTEI 0
POSTAR