criar um novo servidor multicamada
Jorge Barbosa
Respostas
Rodrigo Mourão
03/03/2010
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,
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
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,
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
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,
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
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,
Rodrigo Mourão
03/03/2010
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
Att,
Jorge Barbosa
03/03/2010
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
Rodrigo Mourão
03/03/2010
Raise Exception.Create(local+' '+banco);
Poderia me informar qual o motivo ???
Acredito que o problema possa esta ai.
att,
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
Att,
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
Rodrigo Mourão
03/03/2010
Rodrigo Mourão
03/03/2010
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
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,
Jorge Barbosa
03/03/2010
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;
Jorge Barbosa
03/03/2010
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
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,
Jorge Barbosa
03/03/2010
[Fechar]
[Fechar]
Nome da pasta:
Rodrigo Mourão
03/03/2010
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
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,
Jorge Barbosa
03/03/2010
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
Se nao for dar trabalho para instalar vale a pena testar sim .
Att,
Devmedia
03/03/2010
conseguiu resolver o problema?
Jorge Barbosa
03/03/2010
Rodrigo Mourão
03/03/2010
Att,