Olá galera Não acredito que o uso de TDataset seja ruim assim como citado, nem o uso de componentes DB-aware. Esse componentes são usados com muito sucesso aqui na empresa e ao mesmo tempo conseguimos manter a aplicação com as três camadas (persistência, regra de negócios e apresentação) muito bem separadas. Eu já tive alguns problemas com db-aware, mas quando eu necessitava de alguma funcionalidade um pouco "diferente" na interface, dai então carregava o componente com dados via código. Mas fora isso, o datasource nos dá um ganho de produtividade muito alto. Quanto ao uso de objetos de negócio ao invés de Tdataset, como citado anteriormente, não vejo vantagens na abordagem, já que necessita um duplo trabalho ao trazer os dados do banco em Datasets (ou existe outra forma de fazer) e depois popular objetos, tarefa essa realizada pelo OPF, e que poderia ser feita em um passo apenas. Além disso, existem funcionalidades de performance dos Datasets e Datasources como trazer os dados sobre demanda, sem contar o sistema de clientdataset e providers que estão prontos e que teriam que ser reimplementados pelo MVC.
Usamos uma abordagem ao desenvolver a SpeedCASE onde o padrão Adapter faz com que as propriedades das classes de regras de negócio sejam mapedas para os campos das tablelas de forma transparente pelo nosso framework de regras de negócio, sem que se conheça qualquer detalhe da persistência, mas sem perder funções importantes de Tdatasets, como Edit, Post e Apply e com a possibilidade de usar db-aware, pois cada classe possui um dataset interno. Bom, espero não ter me alongado muito e mostrado a abordagem que utilizamos por aqui. Abraço a todos On 11/30/06, Joao Morais <[EMAIL PROTECTED]> wrote: > > Andreano Lanusse wrote: > > > Pessoal, > > > > após diversas opiniões... > > > > Qualquer desenvolvimento é mais produtivo com os componentes DBWare, mas > para trabalhar com eles é bom que se entenda como funciona os eventos e os > componentes DataSet e DataSource. > > > > Ao longo de todos os softwares que desenvolvi nunca tive problemas com > os componentes, se algum comportamento dos componentes não estivesse de > acordo com a minha necessidade, bastava herdar e alterar o comportamente do > mesmo. > > > > Avaliem a necessidade, estude os componentes, agora ter uma aplicação > sem nada de data ware por achar que não deve ter é uma decisão equivocada. > > Andreano, não é achar que não deve ter, é ter certeza que não precisa ter. > > É sempre questão de preferência. Falo por mim, estou apenas expondo > vantagens de um modelo orientado a objetos perante o RAD (com exceção de > usar TDataset como objeto de negócio - isso é roda quadrada). > > Vou aproventar sua mensagem para citar uma vantagem de cada lado (de OPF > e de MVP, lógico). > > TDataset é orientado a tabela, OPF é orientado a objetos do domínio do > problema. > > ==TDataset== > TabCliente.Open; // ou .Query := 'xx'; > TabCliente.Locate(); // ou TabCliente.Open; > TabCliente.Edit > TabClienteNOME := 'Outro'; > TabCliente.Post; > e se tiver Cached updates... transação... > > ==OPF== > Cliente := TCliente.Retrieve(ID); <<-- monta query, pesquisa, etc. > Cliente.Nome := 'Outro Nome'; > Cliente.Save; <<-- cache, controle transacional, tudo aqui dentro. > > E olha que eu escolhi um modelo de dados sem herança, pra ficar mumu pra > TDataset. > > ==DBAware== > > DBAware é orientado a TDataset (win32) e ainda assim fica pendurado em > um componente (DB*) e a um datasource. Se você quer um componente > 'Combo' mais envenenado, ele tem que entender DBAware. Se o seu Dataset > estiver em um DataModule e por desencargo do destino a ligação quebrar > (nisso o Delphi melhorou um bocado), você tem que reabrir o form e > refazer a bendita. > > ==MVP== > > MVP é totalmente desacoplado, é o framework que entende o componente, e > não o contrário. O formulário que usa o padrão MVP *não tem código*, > você pode mandar os .pas e os .dfm para uma empresa de design, entregar > uma licença de Delphi pra eles, eles usam qualquer componente que eles > quiserem, você tras os novos formulários para o seu projeto e recompila. > A única exigência é que os componentes continuem com o mesmo nome, > porque MVP pode ser bom, mas não é feiticeiro. > > Teria mais um monte pra falar, mas encerro aqui minha participação nessa > thread com esse mini-artigo (a menos que os colegas tenham dúvidas). > > -- > João Morais > > > -- ---------------------------------------------- Flávio G. Maltempe Publisoft Informática Maringá - PR http://www.publisoft.com.br http://www.speedcase.com.br ---------------------------------------------- [As partes desta mensagem que não continham texto foram removidas]