Agora não há desculpa para não entender DDD  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
sergiotaborda
Forum Spammer
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3201
Offline

Emerson Macedo wrote:
sergiotaborda wrote:
E não ha essa diferença tão destinta entre tier e layer. Aliás, se ler o JEE Core Patterns vai entender que eles usam os dois termos meio que indestintamente.
A destinção não é tão rigida como faz pensar.

Acho que você deve ter lido o livro em português, onde a tradução como de costume péssima, chama tudo de camada, não fazendo distinção entre Layer e Tier.


Você acha demasiadas coisas de mim ...
Eu só leio livros tecnicos dessa importância em ingles.

This message was edited 2 times. Last update was at 20/06/2008 14:44:13


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 669
Localização: Rio de Janeiro - RJ
Offline

sergiotaborda wrote:
Você achas demasiadas coisas de mim ...
Eu só leio livros tecnicos dessa importância em ingles.

Então me desculpe, pois já que você leu em inglês, deve ter lido esse trecho do livro sobre o Pattern TO:

Core J2EE Patterns wrote:
Transfer Object


Problem
You want to transfer multiple data elements over a tier.

Forces
  • You want clients to access components in other tiers to retrieve and update data.

  • You want to reduce remote requests across the network.

  • You want to avoid network performance degradation coused by chattier applications that have high network traffic.

  • Solution
    Use a Transfer Object to carry multiple data elements across a tier.

    Mas como não adianta nada postar as referências, mesmo que completas, eu desisto de discutir isso com você.

    This message was edited 1 time. Last update was at 20/06/2008 15:02:29


    Emerson Macedo Leite
    PMP - Ping-pong Master Player
    CSM - Counter-Strile Manager
    http://codificando.com

    "Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27
    [Email] [WWW] [Yahoo!] [MSN] [ICQ]
    sergiotaborda
    Forum Spammer
    [Avatar]

    Membro desde: 22/03/2005 20:57:48
    Mensagens: 3201
    Offline

    Emerson Macedo wrote:
    Então me desculpe, pois já que você leu em inglês, deve ter lido esse trecho do livro sobre o Pattern TO:

    Core J2EE Patterns wrote:
    Transfer Object

    (...)
    Problem
    You want to transfer multiple data elements over a tier.



    Eu não tenho o livro agora comigo, então vou-lhe responder depois.
    Mas a sua resposta esclarece a dúvida do Paulo Silveira:

    Paulo Silveira wrote:
    De qualquer maneira, mesmo que voce concorde com isso, acho que ai o nome nao deveria chamar DTO, ja que esse padrao eh pra tier.


    Como se pode ver, o TO também é para tier.

    This message was edited 1 time. Last update was at 20/06/2008 15:12:40


    Criando sua própria API de Validação



    Blog do MiddleHeaven
    [WWW]
    sergiotaborda
    Forum Spammer
    [Avatar]

    Membro desde: 22/03/2005 20:57:48
    Mensagens: 3201
    Offline

    Emerson Macedo wrote:
    Então me desculpe, pois já que você leu em inglês, deve ter lido esse trecho do livro sobre o Pattern TO:


    Na falta do livro e só para não deixar cair a peteca no chão

    http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html wrote:
    TransferObject

    This represents a Transfer Object used as a data carrier. The DataAccessObject may use a Transfer Object to return data to the client. The DataAccessObject may also receive the data from the client in a Transfer Object to update the data in the data source.


    Esta referencia explica detalhadamente o que eu falei de usar DAO e TO.
    Segundo o Paulo Silveira isto seria um uso entre layers. Então, esta passagem mostra o mesmo padrão sendo usado para outra finalidade de que apenas transferir dados entre tiers.

    No exemplo 9.5 pode ser vista implementação de um TO implementando Serializable ( o que permite entender que vai acontecer uma trasnferencia entre nodos em algum momento, ou seja, ele vai viajar entre tiers.)

    Básicamente esta referencia resume o que eu já falei aqui em outras palavras.




    Criando sua própria API de Validação



    Blog do MiddleHeaven
    [WWW]
    sergiotaborda
    Forum Spammer
    [Avatar]

    Membro desde: 22/03/2005 20:57:48
    Mensagens: 3201
    Offline

    Então, pegando o fio da meada:

    sergiotaborda wrote:
    E não ha essa diferença tão destinta entre tier e layer. Aliás, se ler o JEE Core Patterns vai entender que eles usam os dois termos meio que indestintamente.
    A destinção não é tão rigida como faz pensar.


    O ponto é que o JEE Core Patterns ( que é uma referencia no assunto porque práticamente inventou o TO) usa o TO indescreminadamente para transportar informações entre layers e tiers ( ou em português, camadas, andares e nodos)

    O Emerson deu o exemplo entre tiers (nodos)

    Emerson Macedo wrote:

    Core J2EE Patterns wrote:
    Use a Transfer Object to carry multiple data elements across a tier.



    Na página 413 da segunda edição podemos ler :

    Core J2EE Patterns wrote:

    Transfer Object
    The Composite Entity creates a composite Transfer Object and returns it to the client. the Trasnfer Object is used oto carry data from de Composite Entity and its dependent objects.

    (Itálico no original)

    Aquele "client" ali não é outra máquina é o utilizador do objeto Composite Entity, ou seja , é outro objeto, em outro andar (tier). Ele poderá estar, eventualmente em outra máquina (tier) mas isso é um detalhe.

    O exemplo que passei antes que pode ser lido em mais detalhes na página 467 do livro mostra o TO sendo usado com o DAO e isso , por definição, é uma passagem entre layers ( camadas ).

    Quem quiser ler o livro todo esteja à vontade. O ponto é: o Core J2EE Patterns sim usa o TO indestintivamente entre layers e tiers ( em detalhes : camadas, andares e nodos) tal como eu havia dito.

    Eu não me importe de explicitar o obvio, mas é cansativo. Será que é pedir muito que primeiro leiam, ou releiam, as coisas antes de argumentar ? Poupa muito tempo.

    Será que da próxima vez ainda haverá alguém colocando em duvida o uso do TO ?

    Será que da próxima vez ainda haverá alguém colocando em duvida como se implementa um DAO ?

    This message was edited 1 time. Last update was at 20/06/2008 17:42:53


    Criando sua própria API de Validação



    Blog do MiddleHeaven
    [WWW]
    Marcio Duran
    Forum Spammer
    [Avatar]

    Membro desde: 23/01/2008 11:14:35
    Mensagens: 1905
    Offline

    Emerson Macedo wrote:
    sergiotaborda wrote:
    E não ha essa diferença tão destinta entre tier e layer. Aliás, se ler o JEE Core Patterns vai entender que eles usam os dois termos meio que indestintamente.
    A destinção não é tão rigida como faz pensar.

    Acho que você deve ter lido o livro em português, onde a tradução como de costume péssima, chama tudo de camada, não fazendo distinção entre Layer e Tier.



    Emerson, como você tem dificuldades sérias de entender as coisas, ainda bem que as pessoas aqui tem paciência com você ...


    Consultor Open Source
    Comunidade JavaLivros
    Twitter Comunidade JavaLivros
    Novo Blog do MiddleHeaven
    [WWW]
    Alessandro Lazarotti
    Virtual Machine Man
    [Avatar]

    Membro desde: 21/01/2004 14:12:54
    Mensagens: 618
    Offline

    Independente das discussões entre DTO e sua classificação entre Tiers e Layers, volto a discussão para a questão da independência do DAO frente aos Repositórios.

    De fato, é possível e simples possuir uma interface de um DAO independente do domínio da aplicação. A dependência pode estar no DataMapper mas totalmente isolada na API do DAO.

    Para aqueles que usam Hibernate puro como um "DAO" e um CRUD simples de forma simplificada:



    Essa classe (draft, por favor) não tem referência direta alguma a qualquer entidade do domínio. O método find tem um débito técnico que é receber como parâmetro String, mas que poderia ser solucionado recebendo um QueryObject com tradução para a HQL, por exemplo.

    Não é muito difícil, fazer uma implementação específica para OJB, Kodo API ou JPA por exemplo, com esta mesma interface.

    Um Repositório sem conhecer apis de infra de um DAO:



    O repositório faz o que se propõe a fazer e satisfaz sua motivação. O DAO continua na dele e isolado do domínio.

    This message was edited 3 times. Last update was at 20/06/2008 23:23:11


    ... Lezinho
    ------------------------
    twitter: @lazarotti
    http://alessandrolazarotti.wordpress.com/
    http://jbossbrasil.ning.com/

    [Email] [MSN]
    pcalcado
    Moderador
    [Avatar]

    Membro desde: 08/03/2004 17:19:35
    Mensagens: 5169
    Localização: Sydney - Australia
    Offline

    Antes que o assassinato de patterns continue, repetindo: Na época do Lançamento do POEAA a Sun chamava o TO de VO -basta checar a primeira edição do livro ou mesmo o wbsite da Sun que até hoje Não atualizou os diagramas. A referência do Fowler cita o que o VOd a Sun é o mesmo que o DTO dele e que VO para ele é uma outra coisa. Após este livro a Sun renomeou o padrão J2EE para TO.

    Logo, repetindo mais uma vez: Fowler não sabe a diferença entre TO e DTO. Que burro, dá zero pra ele.

    Como todas as outras referências (dos autores dos conceitos) continuam contrariando boa parte do que foi dito neste tópico elas continuam aí.

    Phillip Calçado "Shoes"
    http://fragmental.tw/
    http://blog.fragmental.com.br/
    "It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
    [Email] [WWW] [Yahoo!] [MSN]
    cmoscoso
    Virtual Machine Man

    Membro desde: 23/10/2007 10:08:29
    Mensagens: 684
    Offline

    sergiotaborda wrote:
    Ha uma variante que é um pouco mais diferente ( not really) que implica em comprimir a serialização. Isso sim é um DTO real. O nome DTO adveio dese padrão de compressão. Mas como num objeto so com atributos não ha o que comprimir o JEE COre Patterns passou a ideia de que o DTO era apenas um conjunto de atributos serializáveis e pronto. Não é apenas isso. O DTO original continha mecanismo de compressão (por exemplo, listas que nsó serializam os objetos realmente diferentes).


    hmm... alguma referencia sobre essa origem "nobre" dos DTOs? CORBA?

    É pena que toda discussao sobre domain -driven design descambe pra banco de dados...

    http://twitter.com/cmoscoso
    [Email]
    tnaires
    Forum Spammer
    [Avatar]

    Membro desde: 22/12/2003 08:05:58
    Mensagens: 1378
    Localização: Natal - RN
    Offline

    Lezinho wrote:

    Interessante. Nesse semestre na faculdade eu precisei fazer um projeto usando somente JSP, Servlets e JDBC. Meu DAO ficou da forma como você indicou, mas com uma diferença:

    Veja que este DAO ficou ligeiramente acoplado com JDBC (Object[] parameters, passado para o PreparedStatement). Não consegui remover essa dependência.
    De qualquer forma, em um semestre próximo vamos usar o mesmo projeto e modificar a persistência para Hibernate. Tudo o que eu vou precisar fazer é escrever novas implementações dos meus repositórios que utilizem um objeto Session do Hibernate.

    Tarso Nunes Aires

    Blog - http://cabritin.wordpress.com/
    Delicious - http://delicious.com/tnaires
    Twitter - @tnaires
    Alessandro Lazarotti
    Virtual Machine Man
    [Avatar]

    Membro desde: 21/01/2004 14:12:54
    Mensagens: 618
    Offline

    Como mencionei Tarso, é um draft e não uma implementação que descrevi. Com certeza teria para o "find" uma lista de parâmetros no código de produção além de outras coisas.

    Mas essa lista de parâmetros (ou como tbm mencionei, um QueryObject com diferentes traduções e argumentos), não tem nada específico de qualquer API... logo não é dependência.


    ... Lezinho
    ------------------------
    twitter: @lazarotti
    http://alessandrolazarotti.wordpress.com/
    http://jbossbrasil.ning.com/

    [Email] [MSN]
    tnaires
    Forum Spammer
    [Avatar]

    Membro desde: 22/12/2003 08:05:58
    Mensagens: 1378
    Localização: Natal - RN
    Offline

    Lezinho wrote:Como mencionei Tarso, é um draft e não uma implementação que descrevi. Com certeza teria para o "find" uma lista de parâmetros no código de produção além de outras coisas.

    Mas essa lista de parâmetros (ou como tbm mencionei, um QueryObject com diferentes traduções e argumentos), não tem nada específico de qualquer API... logo não é dependência.

    Entendo, mas não deixa de ser uma gambiarra, porque eu não usaria essa lista de parâmetros se não fosse com JDBC ( ia ter que passar um valor null ).
    Acho que o melhor a fazer é estudar mais o QueryObject.

    [EDIT]
    Ahhhh... O método find do DAO que eu mostrei tá errado... Ele deve retornar um List<T>.
    [/EDIT]

    This message was edited 1 time. Last update was at 21/06/2008 21:14:43


    Tarso Nunes Aires

    Blog - http://cabritin.wordpress.com/
    Delicious - http://delicious.com/tnaires
    Twitter - @tnaires
    rodrigoy
    Virtual Machine Man
    [Avatar]

    Membro desde: 18/04/2006 01:06:28
    Mensagens: 748
    Localização: São Paulo
    Offline

    Eu já nem entro mais nessas discussões.... não adianta... quando será que vocês vão compreender que DDD não é sobre padrões? O nível de cerimônia e de débito técnico pode variar entre as aplicações. Não dá pra pegar a literatura e aplicar "as-is" como uma cartilha.

    Vou falar uma coisa aqui que posso até ser crucificado por vocês: uma aplicação com domínio anêmico na implementação pode ser desenvolvida usando DDD. Depende do domínio.

    Um Active Record do Ruby é manifestado declarando claramente dependência de infra:



    Creio que na opinião de vocês não dá pra desenvolver nada em DDD no Rails. Só no mundinho hermético onde temos Entities, Hibernate, DAOs, Camadas é que podemos ter DDD, certo?

    Vamos imaginar que eu consiga manifestar um conceito de domínio na "YoshiLanguage" da seguinte maneira:



    Vocês poderiam dizer que nessa listagem não estamos usando DDD por que os padrões não estão claros como na literatura ou porque tenho dependências de conceitos da minha implementação?


    Rodrigo Yoshima
    www.ASPERCOM.com.br

    Próximas Turmas:
    São Paulo: Scrum 27/fev | Requisitos 02/mar | CSM 22/mar | OOAD-UML 05/abr

    Goiânia: Scrum 05/mar | DDD 07/mar

    Débito Técnico Blog: blog.aspercom.com.br
    [WWW]
    pcalcado
    Moderador
    [Avatar]

    Membro desde: 08/03/2004 17:19:35
    Mensagens: 5169
    Localização: Sydney - Australia
    Offline

    rodrigoy wrote:Eu já nem entro mais nessas discussões.... não adianta... quando será que vocês vão compreender que DDD não é sobre padrões? O nível de cerimônia e de débito técnico pode variar entre as aplicações. Não dá pra pegar a literatura e aplicar "as-is" como uma cartilha.


    Acho que você viajou aqui, Rodrigo. Ninguém, até onde eu lembro, está comentando sobre Domain-Driven Design em si e sim sobre os padrões de apoio.

    rodrigoy wrote:
    Vou falar uma coisa aqui que posso até ser crucificado por vocês: uma aplicação com domínio anêmico na implementação pode ser desenvolvida usando DDD. Depende do domínio.


    Falar isso sem dar um exemplo ou embasamento é uma afirmação vazia.

    rodrigoy wrote:
    Um Active Record do Ruby é manifestado declarando claramente dependência de infra:



    Creio que na opinião de vocês não dá pra desenvolver nada em DDD no Rails. Só no mundinho hermético onde temos Entities, Hibernate, DAOs, Camadas é que podemos ter DDD, certo?


    Além de você estar colocando palavras no texto de todos aqui (estamos discutindo sobre padrões, não sobre aplicação de DDD em si) essa afirmação é meio sem-sentido. Repository não fala sobre a implementação de persistência, por exemplo, e nada impede de usar AR e Repository, apesar de que você provavelmente vai fundir Entity e Repository no mesmo objeto -se isto é bom ou não é outra história. Ainda assim não existe qualquer obrigação em Rails de se seguir DDD, aliás a maioria dos projetos Rails que vi não seguem, então qual seu ponto?

    rodrigoy wrote:
    Vamos imaginar que eu consiga manifestar um conceito de domínio na "YoshiLanguage" da seguinte maneira:
    [...]
    Vocês poderiam dizer que nessa listagem não estamos usando DDD por que os padrões não estão claros como na literatura ou porque tenho dependências de conceitos da minha implementação?


    Novamente: você está confundindo uma discussão sobre padrões com uma discussão sobre Domain-Driven Design. Não é porque eu não preciso dos padrões clássicos para ter DDD que eu não posso discutir sobre implementações dos padrões.

    Phillip Calçado "Shoes"
    http://fragmental.tw/
    http://blog.fragmental.com.br/
    "It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
    [Email] [WWW] [Yahoo!] [MSN]
    Alessandro Lazarotti
    Virtual Machine Man
    [Avatar]

    Membro desde: 21/01/2004 14:12:54
    Mensagens: 618
    Offline

    tnaires wrote:
    Entendo, mas não deixa de ser uma gambiarra, porque eu não usaria essa lista de parâmetros se não fosse com JDBC ( ia ter que passar um valor null ).


    Dicordo Tarso. Se você vai fazer uma query parametrizada com HQL ela tbm vaio ter os parâmetros, assim como uma EJBQL ou até mesmo uma QueryByExample de sua implementação de QueryObjects. Se você fosse fazer uma pesquisa em uma árvore LDAP, você tbm pode utilizar esta lista de parâmetro cromo critérios da pesquisa.

    This message was edited 1 time. Last update was at 22/06/2008 16:53:04


    ... Lezinho
    ------------------------
    twitter: @lazarotti
    http://alessandrolazarotti.wordpress.com/
    http://jbossbrasil.ning.com/

    [Email] [MSN]
     
    Índice dos Fóruns » Arquitetura de Sistemas
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team