quot;Multi camadasquot; e quot;Modularização BPLquot;

Delphi

20/10/2006

caros colegas, estou realizando uma pesquisa e gostaria de contar com voces. estou estudando alguns materiais sobre ´multi camadas´ e ´modularização com packages BPLs´.

O tema modularização eu ja consegui absorver o suficiente para formular apenas a pergunta numero 3, porem sobre o tema multi camada ainda está meio vago para mim. acabei de ver a video aula do clube delphi ´DataSnap - Aplicacoes MultiCamadas com Delphi 7´ e irei ver assim que possivel os Mini Curso - Aplicacoes Client_Server com dbExpress e Firebird, saquei a ´ideia da coisa´, porem nao consegui responder a mim mesmo as perguntas 1 e 2.

1. Para que serve uma aplicação multi camada?

2. quais as vantagens de ter uma aplicação multi camadas?

3. Fazendo uma relação entre ter um datamodule para cada BPL ou ter apenas um datamodule no form principal para todos os BPLs, qual seria o mais indicado e por que? um datamodule para cada BPL nao prejudicaria o desempenho de um aplicativo multi camada?


Mahdak

Mahdak

Curtidas 0

Respostas

Leonardobhbr

Leonardobhbr

20/10/2006

1. Para que serve uma aplicação multi camada?
Vamos supor que seu cliente tenha uma matriz no rio de janeiro e filiais em várias cidades do brasil, o banco de dados ficaria na matriz junto com o programa Servidor e todas as filiais inclusive a propria matriz acessaria o banco via cliente. Resumindo para aplicações grandes onde possa se acessar de vário lugares ao mesmo tempo inclusive se os funcionários quisessem acessar da sua própria casa.


2. quais as vantagens de ter uma aplicação multi camadas?
as maquinas cliente não precisaria ser potente pois a maquina cliente iria chamar funções complexa que está no sistema server ele processaria tudo local e só retornaria resposta para o cliente assim podendo ser computadores carroção, só que o computador onde ficaria o servidor teria que ser um computador robusto!



espero que tenha ajudado


GOSTEI 0
Tiagorocha

Tiagorocha

20/10/2006

Perae... isso aí que o Leonardobhbr está descrevendo me parece mais uma aplicação cliente/servidor (2 camadas). Multicamadas implica 3 ou mais camadas, por exemplo, um cliente ligado a um servidor que acessa outro servidor, não é? Eu poderia ter a lógica de apresentação rodando na máquina do cliente, a lógica de negócio em um servidor de aplicação e o banco de dados em um servidor de servidor de banco de dados, não é isso? Ou eu estou enganado? (A aula na faculdade foi há tanto tempo atrás... :P)


GOSTEI 0
Titanius

Titanius

20/10/2006

Perae... isso aí que o Leonardobhbr está descrevendo me parece mais uma aplicação cliente/servidor (2 camadas). Multicamadas implica 3 ou mais camadas, por exemplo, um cliente ligado a um servidor que acessa outro servidor, não é? Eu poderia ter a lógica de apresentação rodando na máquina do cliente, a lógica de negócio em um servidor de aplicação e o banco de dados em um servidor de servidor de banco de dados, não é isso? Ou eu estou enganado? (A aula na faculdade foi há tanto tempo atrás... :P)


Justamente, com 3 camadas ou n-camadas... você pode ter um servidor de aplicação, onde ficaria seu Server, e um outro computador como servidor de banco de dados... ou melhor ainda, pra aplicações grandes.. você pode fazer carga de trabalho, ou seja... vamos supor que você tenha 4 super-servidores.. você pode colocar a aplicação servidora, nos 4, e os 4 acessando o banco de dados, e fazendo a carga entre eles, ou seja, quando um servidor estiver muito carregado, outro assume seu papel, ou se um servidor cair, outro assume o papel dele... e por aí vai...

Programar pra n-camadas (digo n, porque 3-camadas pra n-camadas é questao de observação.. :D ) não é um bicho de sete cabeças, porém precisa de muita atenção, perseverança... pois é algo que não se encontra fácil na internet, ou seja, é difícil acha informaçoes sobre isto...

Mas, vale a pena.. tenho um sistema rodando 45 filiais, com 2 servidores (banco e aplicacao).. vixi.. show de bola, acesso o sistema via internet discada e vejo tudo o que quero.. os diretores ficaram bolados, onde eles tiverem, plugam lá o notebook deles, e pronto...

Ah.. uma dica, sempre trabalhe com querys parametrizadas, senão nao vai adiantar ser n-camadas, o sistema fica uma carroça..

vixi... :roll: ´falei´ demais..

[]s


GOSTEI 0
Mahdak

Mahdak

20/10/2006

humm, muito bom... valleu a mão ai galera


GOSTEI 0
Tiagorocha

Tiagorocha

20/10/2006

você pode fazer carga de trabalho, ou seja... vamos supor que você tenha 4 super-servidores.. você pode colocar a aplicação servidora, nos 4, e os 4 acessando o banco de dados, e fazendo a carga entre eles, ou seja, quando um servidor estiver muito carregado, outro assume seu papel, ou se um servidor cair, outro assume o papel dele... e por aí vai...

Hmmm... certo, certo, me lembrei de outra aula... Sistemas Distribuídos! Sistemas capazes de distribuir suas instruções entre vários processadores de vários computadores de forma a obter um resultado mais rápido!

Ah.. uma dica, sempre trabalhe com querys parametrizadas, senão nao vai adiantar ser n-camadas, o sistema fica uma carroça..

Taí um negócio que eu ainda não compreendo 100¬ Sei que views armazenadas no banco evitam tráfego desnecessário pela rede e são pré-compiladas e otimizadas pelo SGBDR... Mas esse lance de query parametrizada é novidade pra mim! Por quê isso acontece?


GOSTEI 0
Titanius

Titanius

20/10/2006

Olá [b:eedb39e9dc]TiagoRocha[/b:eedb39e9dc]

O que eu quis dizer foi o seguinte, ao invés de fazer uma query assim;

select * from cliente


é melhor fazer assim:

select * from cliente
where codigocliente = :codigo


assim, você só traz o que você quer... evitando o tráfego.. outro modo, é a utilizacao de SP, Triggers e Views...

[]s


GOSTEI 0
Edibertoalves

Edibertoalves

20/10/2006

Estou projetando meu sistemas para serem em n-camadas e um ponto se tornou importante: entre usar o commandtext no CDS ou usar a query no SQLQuery ou SQLDataset.

Optei em jogar tudo nas SQLQueries e SQLDataSets pois assim pra ficar mais organizado, parametrizado minhas regras de negócios, tudo na camada de servidor.

Estou optando pela forma correta???

[]´s


GOSTEI 0
Macario

Macario

20/10/2006

Ola, apenas uma dica.

Fazendo uso do CommandText do ClientDataSet, voce pode ´deixar uma brecha´ em seu sistema para que comandos do lado servidor possam ser sobrepostos pelo lado cliente.



[]´s


GOSTEI 0
Edibertoalves

Edibertoalves

20/10/2006

Macario, desculpa mas eu não entendi. Detalhe por gentileza...

[]´s


GOSTEI 0
Fabiotb

Fabiotb

20/10/2006

Ola, apenas uma dica. Fazendo uso do CommandText do ClientDataSet, voce pode ´deixar uma brecha´ em seu sistema para que comandos do lado servidor possam ser sobrepostos pelo lado cliente.

O q vc quer dizer com isso acima, não entendi!
Abraço


GOSTEI 0
Adriano Santos

Adriano Santos

20/10/2006

Macario, desculpa mas eu não entendi. Detalhe por gentileza... []´s


[quote:d27cad94c0] Ola, apenas uma dica. Fazendo uso do CommandText do ClientDataSet, voce pode ´deixar uma brecha´ em seu sistema para que comandos do lado servidor possam ser sobrepostos pelo lado cliente.

O q vc quer dizer com isso acima, não entendi!
Abraço[/quote:d27cad94c0]

Galera, o que o [b:d27cad94c0]Macario[/b:d27cad94c0] quis dizer é que você (usuário) poderia enviar um comando sql em uma consulta e sobrepor a SQL no servidor. Tipo:

No servidor vc tem uma instrução assim:

SELECT * FROM CLIENTES WHERE CAMPO="""" + VARIAVEL + """";


Daí seu usuário põe no campo de busca:

MARIA JOSÉ; DELETE FROM TABELA;

Pronto, o ´;´ depois de [b:d27cad94c0]MARIA JOSÉ[/b:d27cad94c0] finaliza o comando da pesquisa e o próximo comando (DELETE) é executado com facilidade.

Não sei se o exemplo está correto, mas é mais ou menos isso que pode ocorrer.


GOSTEI 0
Tiagorocha

Tiagorocha

20/10/2006

Olá [b:c1b2ac40c5]TiagoRocha[/b:c1b2ac40c5] O que eu quis dizer foi o seguinte, ao invés de fazer uma query assim;
select * from cliente
é melhor fazer assim:
select * from cliente
where codigocliente = :codigo
assim, você só traz o que você quer... evitando o tráfego.. outro modo, é a utilizacao de SP, Triggers e Views... []s


Oh sim, sim... SELECT * FROM TABLE sem cláusula WHERE é loucura loucura loucura... pensei que fosse outra coisa, hehehe :P


GOSTEI 0
Macario

Macario

20/10/2006

[quote:0faa39a19c=´Adriano Santos´]
Não sei se o exemplo está correto, mas é mais ou menos isso que pode ocorrer.[/quote:0faa39a19c]


Ola Adriano

Voce exemplificou bem, e o delete é o menor ´dos males´ que se pode ter ao se fazer uso do CommandText do CDS.

Se o sistema nao fizer uso de usuario previamente determinado no banco (muitos usam o proprio SA) as consequencias podem tornar-se uma ´catastrofe´, bancos podem ser ´dropados´ e por ai vai.



[]´s


GOSTEI 0
Adriano Santos

Adriano Santos

20/10/2006

[quote:4d13e4ab75=´Adriano Santos´] Não sei se o exemplo está correto, mas é mais ou menos isso que pode ocorrer.



Ola Adriano

Voce exemplificou bem, e o delete é o menor ´dos males´ que se pode ter ao se fazer uso do CommandText do CDS.

Se o sistema nao fizer uso de usuario previamente determinado no banco (muitos usam o proprio SA) as consequencias podem tornar-se uma ´catastrofe´, bancos podem ser ´dropados´ e por ai vai.



[]´s[/quote:4d13e4ab75]

Opa, tô aprendendo :wink: rsrs
Vi isso no último Webdays, porém já sabia pq tinha vista com um colega aqui do fórum tempos atrás se não me engano.

Em relação a n-tier, tô particpando (não tanto assim) de uma boa lista de discussão que tem bastante material. Inclusive um dos colegas que ajuda nas idéias é o Bruno Lichot, mó barato. Já aprendi bastante.

nddv@yahoogrupos.com.br

Abraço


GOSTEI 0
Macario

Macario

20/10/2006

[quote:0696b9921f=´Adriano Santos´]
Em relação a n-tier, tô particpando (não tanto assim) de uma boa lista de discussão que tem bastante material. Inclusive um dos colegas que ajuda nas idéias é o Bruno Lichot, mó barato. Já aprendi bastante.

nddv@yahoogrupos.com.br

Abraço[/quote:0696b9921f]

Ola.

O Bruno Lichot foi palestrante na BorCon2006, o Mini-curso dele sobre n-tier foi [b:0696b9921f]´extreme´[/b:0696b9921f], ele divulgou esse grupo [b:0696b9921f]nddv[/b:0696b9921f].

So repassando uma dica do Bruno Lichot ele indica usar BSS (Borland SocketServer).

[]´s


GOSTEI 0
Adriano Santos

Adriano Santos

20/10/2006

É isso ai msm [b:695a426c07]Macario[/b:695a426c07], tenho contato com ele direto e o próprio havia me falado sobre a palestra; Ele manja pra cacilda de n-tier.
Queria ter ido no BorCon tb, mas a grana não ajudou.
Quem sabe o ano que vem e ´quem sabe como palestrante´, vai saber né?

Em relação ao BSS (Borland Socket Server), no Webdays e ele falou a respeito também. Malandro, fiz um teste acessando minha máquina de casa aqui do trampo e bagulho é bom msm. Instalei o no-ip (que ele deve ter falado, tb rsrs), peguei o exemploq que ele disponibilizou e acessei. Véio, é rápido, muito rápido o acesso. Impressionante.

Fui


GOSTEI 0
Mmoreira

Mmoreira

20/10/2006

Pessoal,
Estive acompanha este topico e achei muito interessante pois comecei um projeto onde pretendo trabalhar com N-Tier. Ja até vi uma video aula do Bruno onde ela mostra algumas técnicas.
Tenho uma duvida e gostaria da sugestao dos mais experientes no assunto ...

Estou pretendendo usar um Servidor SOAP para que seja trafegado XML como foi mostrado em uma video aula do Guinther, seria uma boa escolha? O que voces acham?

Adriano,
Voce poderia falar um pouco mais do BSS ... Esta tecnologia estaria disponivel para Delphi 7?

Bom as duvidas no início sao muitas ... vamo que vamo!!!


GOSTEI 0
Mahdak

Mahdak

20/10/2006

Estou pretendendo usar um Servidor SOAP para que seja trafegado XML como foi mostrado em uma video aula do Guinther, seria uma boa escolha? O que voces acham? Adriano, Voce poderia falar um pouco mais do BSS ... Esta tecnologia estaria disponivel para Delphi 7? Bom as duvidas no início sao muitas ... vamo que vamo!!!



amigo, ao que parece por tudo que tenho visto, a borland está investindo no SOAP (creio que isso se deve um pouco pela ´parceria´, que eles tem com a microsoft quanto aos frameWorks / IIS )

ja em relação ao BSS, ouvi falar muito bem dele, porem um amigo comentou comigo que o fato de ele nao estar presente no delphi 2006, e sim só até a versao 7 é por que nao é uma tecnologia tao estável como o SOAP.

bom isso tudo nao tenho certeza, apenas creio que seja assim pelo que tenho acompanhado. mas na pratica o que sinto em relação ao SOAP, uma vez que adotei ele, é a lentidão... minha maquina é o servidor e o cliente ao mesmo tempo meu processsador é um sempron 2800 tenho 512 de memoria ram, e mesmo assim, a velocidade com que o meu aplicativo cliente acessa o aplicativo servidor me parece que depende muito de como está o tráfego na rede, algumas vezes ficando lento de mais em um simples ApplyUpdates();

outro ponto negativo do SOAP ao meu ver é a dependencia do IIS. se um cliente meu do outro lado do pais nao tiver o IIS instalado na maquina dele como fica? ja procurei por tudo como embutir a instalação do iis na instalação do meu sistema para tentar diminuir essa dependencia, e nao encontrei nada a respeito. ja enviei email pra microsoft pra perguntar a respeito, eles me enrolaram de tudo quanto foi jeito e nao me dissseram se pudia fazer isso ou nao, e se pudia como era feito e tals...

esse é outro ponto a ser discutido...

no mais essa é a minha pequena, porem valida experiência prática com o SOAP...

Obs: mesmo assim ainda uso o soap

se falei besteira, por favor fiquem a vontade para me corrigir

um forte abraço!


GOSTEI 0
Mmoreira

Mmoreira

20/10/2006

mahdak,

Obrigado pela atenção brother!!

Referente ao que voce disse sobre uma certa lentidão no seu sistema o mesmo nao ocorre comigo tanto rodando direto na minha maquina ( Pentium IV HT 3.0 512 MB RAM ) quanto nos clientes que trabalham com meu sistema ( Servidor + Estações de trabalho ).
Na minha humilde opinião o SOAP atende super bem ... o que eu nao fiz ainda foi acessar o servidor atravez da internet ... Voce ja teve esta experiencia? Caso sim, o que acha? Roda legal?

Quanto a instalação do IIS é foda tem que ser tudo no braço mesmo.


GOSTEI 0
Mahdak

Mahdak

20/10/2006

pois eh...

nunca testei ele na internet. só localmente mesmo. tambem tenho vontade de saber como é o processo para o acesso ao sever via internet.


GOSTEI 0
Marcosalex

Marcosalex

20/10/2006

SOAP é um protocolo aberto, e é possível usar SOAP no Apache, IIS e fazer webservices em Java, .NET, Delphi ou qualquer linguagem. É o protocolo mais simples de ser implementado.

O BSS utiliza acesso via IP puro, bem mais rápido porque não precisa fazer a conversão para XML e nem utilizar os temíveis transformations desse. Em compensação, a conexão é persistente, o que não é legal em conexões remotas. E ficar conectando e desconectando um servidor BSS não é muito saudável.

Vai das necessidades.


GOSTEI 0
Mahdak

Mahdak

20/10/2006

SOAP é um protocolo aberto, e é possível usar SOAP no Apache...


voce quer dizer que nao precisa-se do IIS para rodar o servidor de aplicação? pode ser o APACHE???


GOSTEI 0
Mmoreira

Mmoreira

20/10/2006

mahdak

Até onde sei é perfeitamente possivel rodar SOAP tanto no IIS quando no Apache.

O que eu gostaria mesmo era de encontrar aqui no forum alguem que acesse um servidor SOAP atravez da Web, nao estou tendo tempo para fazer estes testes. Acho este um ponto muito importante.

Agora voltando ao assunto do inicio do tópico estou com uma duvida cruel, estou querendo colocar alguns modolus do meu sistema em BPL ou DLL minha duvida é se eu poderia colocar um SOAPConnection em cada um destes modulos ... minha preocupação é em ficar criando varias conexões do SOAPConnection ao servidor ... isso poderia provocar um queda de performance ??? Para tentar evitar este problema de varias conexoes por causa dos modulos estou estudando sobre como centralizar esta conexao em um BPL ou DLL e os mudulos fazerem a conexao atravez desta.

Outra coisa no meu servidor SOAP para deixar tudo mais organizado e facilitar a manutenção estou trabalhando com Multiplos ´SOAP Server Data Module´ por exemplo:

SSDmCliente -> onde concentro tudo relacionado ao cadastro de cliente
SSDmProduto -> tudo relacionado a produto
SSDmRelatorio -> onde tenho todas as consultas para relatorios

E por ai vai, o que os amigos acham desta técnicas ??? É valida ??? Ou eu posso estar preparando com isso minha ´cova´ ???

Fico no aguardo!!


GOSTEI 0
Mahdak

Mahdak

20/10/2006

mMoreira, fasso das suas duvidas as minhas tambem, e fico no aguardo de algum colega aqui do forum poder nos dar uma luz a respeito

abraços!


GOSTEI 0
Brunolspp

Brunolspp

20/10/2006

Salve Galera!

Saquem! SOAP foi desenvolvido e direcionado para ser interface entre sistemas, principalmente B2B e sistemas de consumo de BI, pela sua caracteristica de integrar sistemas hetereogeneos.

Ele não é um bom repositorio de servidor de aplicação e tem alguma slimitações de tamanho e performance que com certeza numa aplicação de medio porte jpá implicaria em perfromance, dificuldade de distribuição dor de cabeça e por ai vai.

Por outro lado, o Borland socket Server continua sendo distribuido nas versões de Delphi, não foi descontinuado, vem com o codigo fonte aberto e é mto mais rapido, seguro, escalavel e facild e distribuir que o SOAP e o COM+.

E vc tem td recurso de modularização que quiser, organização e implementação d qq tecnica de desenvolvimento que precisar.

Tds as minha aplicações comerciais são com BSS, inclusive as de alto risco e disponibilidade e já fazem 3 anos de sucesso absoluto em adaptabildiade, escalabilidade, velocidade e segurança. Claro que td com boas praticas de desenvolvimento de aplicações de alta performance.

Como mencionado aqui, estou mantendo uma lista somente sobre este assunto: a nddv@yahoogrupos.com.br

Mantenho um link de downloads no maior centro de materiais gratuitos sobre Delphi do mundo o code c entral. La vc tera videos, apostilas, exemplos e codigos fontes.

eis o link:
http://cc.codegear.com/Author.aspx?ID=795118

alem disso estou a disposição para o que precisarem

tenho tb todo treinamento on-line e presencial de que precisarem.

Sera um prazer ser util de alguma forma


GOSTEI 0
Pereiramarcos

Pereiramarcos

20/10/2006

Pelo que estou entendendo n-tier ou 3 camadas .....
Seria crair um DM ou um modulo onde estarias tudo relativo a persistencia e ou consulta e no clientes a penas os forma que acessariam esta MODULO ?

neste modulo alem do CRUD teria mais alguma coisa ? gostei e pretendo me aprofundar no assunto. algem pode me corrigir ?


GOSTEI 0
Mahdak

Mahdak

20/10/2006

pelo que tenho estudado, basicamente seria :

- Aplicativo Cliente (primeira camada), onde o mesmo envia e recebe parametros para a segunda camada

- Servidor de aplicação (segunda camada), onde o mesmo conversa em sql com a terceira camada(insert,update, select, delete, etc...), e envia parametros solicitados para a primeira camada

- Servidor de banco de dados (terceira camada), o banco de dados em sí, onde a segunda camada tambem possui o papel de definir com qual banco o sistema irá trabalhar, por meio de um conector. isso facilita u uso de mais de um banco ou até mesmo a troca de banco de dados...


GOSTEI 0
Brunolspp

Brunolspp

20/10/2006

e tb não influencia so isso..
tem questões de segurança(td aplicação de nternet banking é em n-tier)

portabilidade, escalabilidade adaptabildiade..alem de performance ser maior e vc ter mais opções de melhora e crescimento, com ate mesmo um custo menor de manutenção e hardware, sem falar de facilmente vc evoluir, distribuir e corrigir a aplicação como um todo..

realmente existem mtas riquezas e possibilidades para podermos trabalhar com ntier, principalemnte dentro do container do BSS, com Delphi e DataSnap


GOSTEI 0
Mahdak

Mahdak

20/10/2006

cara, eu ja to quase sendo convencido a mudar de SOAP para BSS....
vou estudar mais um pouco antes de fazer ou nao a mudança...


GOSTEI 0
Brunolspp

Brunolspp

20/10/2006

quais mais provas vc precisa para mudar?

vc não vai conseguir performance, velocidade e segurança como no BSS... hehehe

chama agente se precisar.. tem um grupo q mantenho hj somente disso nddv@yahoogrupos.com.br, vc tem aplicaç~eos maduras, pessoas desenvolvendo e usando em produção tds os dias..

tem meus downloads q sempre atualizo, tem treinamento e material..enfim... hehehe

tamus ai!


GOSTEI 0
Mmoreira

Mmoreira

20/10/2006

Caramba velho,
Estou no mesmo dilema que voce.
Estou dando uma estudada tambem nisso ai pois trabalho a bastante tempo desta maneira .. usando o SOAP sobre o IIS mas agora vou começar um projeto de ERP ou seja é um sistema mais complexo entao tenho medo de iniciar com SOAP e depois começar a ter problemas.

Que Deus me ilumine!!!


GOSTEI 0
Brunolspp

Brunolspp

20/10/2006

galera, já vivi varias vezes isso em consultorias, palestras e seminarios por este Brazil, pelo menos são duas por mês sobre migração e adpatção de aplicações para ambientes de alta perfromance e distribuição Geográfica.

o q vcs precisarem estou aki!


GOSTEI 0
POSTAR