Benvenuto/a Entra | Registrati | Aiuto
in Cerca

[MVP] DTo multi-entities

Ultimo post 20-07-2008, 17:47 da parte di LudovicoVan. 11 risposte.
Ordina i post: Precedente Successivo
  •  14-07-2008, 21:49 1933

    [MVP] DTo multi-entities

    Ciao a tutti, finalmente dopo un po' di tempo riesco a tornare su questo succosissimo forum a parlare di metodologie.

    Quel che vorrei sapere e' riguardo il DTO e il passaggio di informazioni sfruttato nel Presenter.

    Normalmente la logica e' quella di  avere:

    • Entity che rappresenta le informazioni che devo persistere, nel mio caso non ho persistenza ma solo lazy
    • Il DTO che serve per avere accesso alla mia entity
    • Il presenter per sfruttare ed interfacciare il DTO con la UI

     L' unico mio problema e' che per alcune widget (non uso windows form ma dei custom control che mi sono costruito ad hoc) devo visualizzare diverse entities magari legate tra loro tipo da un una sorta di Join.

    Voi cosa mi consigliate? Dichiare diverse entities nel DTO e nel Presenter e lavorare i questo modo?


    Application Developer
    ... magari un giorno aspirante architect?
  •  15-07-2008, 9:59 1936 in risposta a 1933

    Re: [MVP] DTo multi-entities

    mmmm non ho forse capito bene il succo della domanda, ma in generale mi sentirei di dire questo. I DTO servono appunto per passare i dati dal dominio ai consumatori (come ad esempio la view o il presenter)

    Se nella vista hai necessità di visualizzare dati che sono presi da più entità, la cosa migliore è creare un DTO che contiene tutti i dati necessari, come fai in un database dove magari crei una vista su più tabelle. In questo modo l'interfaccia non ha problemi e puoi gestire anche meglio il binding. Ad esmepio se non lavori in WPF non puoi fare binding traversando l'albero degli oggetti, per cui ad esempio se hai la onnipresente struttura customer con la collection di orders e devi visualizzare il nome cliente, nome prodotto e quantità fai un DTO che ha queste proprietà e poi lo riempi con i dati che sono presenti negli oggetti di dominio.

    In questo modo hai i DTO che non sono altro che dei POCO (Plain old Clr Objects), semplici contenitori di proprietà che puoi usare semplicemente nella vista, modificarli, e restituirli al modello che provvederà ad aggiornare di conseguenza gli oggetti di dominio.

    alk.
     


    --
    Non esiste vento favorevole per il marinaio che non sa dove andare. (Seneca)

    blog: Alkampfer's place

    [Eng] Alkampfer's place
  •  15-07-2008, 13:34 1940 in risposta a 1936

    Re: [MVP] DTo multi-entities

    Esatto era quello che volevo sapere. Quindi nel mio DTO dichiaro le entita' che devo usare e poi chiaramente nel Presenter mi comporto di conseguenza.

    Adesso mi e' anche chiara la definizione di POCO.

    Grazie.


    Application Developer
    ... magari un giorno aspirante architect?
  •  15-07-2008, 14:50 1941 in risposta a 1940

    Re: [MVP] DTo multi-entities

    I DTO sono sicuramente "pallosi" perchè non hanno in se nulla di interessante, ma in realtà sono utilissimi perchè evitano al layer di presentazione ma più in generale ai layer al di fuori del dominio di doversi preoccupare di come sono fatti gli oggetti del dominio stesso.

    Un esempio su tutti, se io ho un oggetto con 10 proprietà e ne voglio recuperare solo 3 per mostrare ad un utente una lista, se io sparo dal dominio al chiamante direttametne l'oggetto di dominio non ho altra soluzione che reidratarlo tutto, se invece ho un DTO con le sole 3 proprietà che mi servono posso fare una projection ed essere più efficiente. Con LINQ to Nhibernate e con LINQ in generale fare una proiezione dentro un DTO poi diventa cosi semplice che non se ne può proprio più fare a meno :D

    alk.
     


    --
    Non esiste vento favorevole per il marinaio che non sa dove andare. (Seneca)

    blog: Alkampfer's place

    [Eng] Alkampfer's place
  •  15-07-2008, 15:02 1942 in risposta a 1941

    Re: [MVP] DTo multi-entities

    Ma quindi nel mio DTO non devo necessariamente dichiare la mia entity Cliente, ma posso semplicemente usare le proprieta' NomeCliente e PartitaIVA, e' questo che stai dicendo?

    Ma a questo punto il DTO non sta <rubando> il lavoro al Presenter, dovrebbe essere lui a presentare alcune informazioni della entita' o sbaglio?
    Altrimenti mi vien da pensare di dover costruire per il DTO un oggetto AdHoc che presenta solamente alcune delle informazioni delle entita' che sto reidratando.

    (Scrumble ...)


    Application Developer
    ... magari un giorno aspirante architect?
  •  16-07-2008, 9:06 1945 in risposta a 1942

    Re: [MVP] DTo multi-entities

    Il fatto è che i DTO hanno lo scopo di trasportare dati dal dominio al di fuori di esso. Spesso i DTO servono a minimizzare le chiamate, soprattutto nelle architetture a servizi. Immaginiamo infatti di dover fare un ordine in questo modo.

    Chiami il metodo CreateOrder ti ritorna un Order e poi per ogni linea d'ordine chiami un metodo AddOrderLineToOrder. Se hai un servizio remoto la latenza di rete rende questa operazione lenta. Questo perchè le interfacce dei domini sono solitamente fine grained, ovvero molti piccoli metodi per fare piccole cose.

    In un ottica di comunicazione remota sono meglio le Coarse Grained Interfaces, ovvero meno metodi che svolgono operazioni più complesse. Nel caso precedente avresti un CreateOrder che accetta un unico DTO che contiene tutte le informazioni necessarie, ovvero anche tutte le linee d'ordine.

    Il compito del presenter è si quello di mostrare le info tramite interfaccia, sempre nel caso analogo, se io volessi visualizzare un ordine chiamerei un metodo GetOrder, che torna un DTO con dentro tutte le info necessarie, ed è da li che il presenter decide cosa visualizzare. Anche in questo caso se ho un servizio remoto, bisogna capire se creare un DTO ad hoc con solo le informazioni disponibili è vantaggioso, anche perchè altrimenti mandi in giro per la rete informazioni inutili.

    alk.
     


    --
    Non esiste vento favorevole per il marinaio che non sa dove andare. (Seneca)

    blog: Alkampfer's place

    [Eng] Alkampfer's place
  •  16-07-2008, 14:00 1947 in risposta a 1945

    Re: [MVP] DTo multi-entities

    Ok quindi in questo caso avro' il servizio che mi aiuta ad eseguire le operazioni, il DTO che <contiene> le mie entita' e il Presenter che mi serve esclusivamente per inviare le informazioni alla UI o ad effettuare le chiamate verso il servizio.

    Provo in questa maniera.

    Grazie.


    Application Developer
    ... magari un giorno aspirante architect?
  •  20-07-2008, 17:00 1953 in risposta a 1947

    Re: [MVP] DTo multi-entities

    raffaeu:
    Provo in questa maniera.

    Prova a smettere di postare su METODOLOGIE, sarebbe gia' una grande conquista. (Perche' non vi sentite direttamente via email? Si' lo so perche': per affondare GUISA e il sottoscritto. A buon rendere, come dicono dalle vostre parti.)

    -LV


    Julio Di Egidio
    Analyst Programmer
    http://julio.diegidio.name

    (Peace X Love] = [++1)
  •  20-07-2008, 17:09 1954 in risposta a 1953

    Re: [MVP] DTo multi-entities

    Dalle mie parti dicono:

    Sei proprio un idiota!! :-D


    Application Developer
    ... magari un giorno aspirante architect?
  •  20-07-2008, 17:35 1957 in risposta a 1954

    Re: [MVP] DTo multi-entities

    raffaeu:

    Dalle mie parti dicono:

    Sei proprio un idiota!! :-D

    Mi fa piacere che finalmente si parli chiaro: siete un branco di imbecilli, proprio il branco di imbecilli che convincono uno ad emigrare.

    -LV


    Julio Di Egidio
    Analyst Programmer
    http://julio.diegidio.name

    (Peace X Love] = [++1)
  •  20-07-2008, 17:43 1958 in risposta a 1933

    Re:[MVP] DTo multi-entities

    Intressante io sono in America quindi avro' l' onore di conoscerti se mai qualcuno ti fara' la GreenCard ...

    Con il tuo modo di fare ne dubito ma puoi sempre provare.


    Application Developer
    ... magari un giorno aspirante architect?
  •  20-07-2008, 17:47 1959 in risposta a 1958

    Re: Re:[MVP] DTo multi-entities

    raffaeu:

    Intressante io sono in America quindi avro' l' onore di conoscerti se mai qualcuno ti fara' la GreenCard ...

    Con il tuo modo di fare ne dubito ma puoi sempre provare.

    Sei semplicemente OT, lo sei dal giorno uno, e nonostante tu lo sappia perfettamente, continui imperterrito.

    Perche' semplicemente non la finisci di blaterare e non iniziamo a fare sul serio?

    -LV


    Julio Di Egidio
    Analyst Programmer
    http://julio.diegidio.name

    (Peace X Love] = [++1)
Visualizza un feed RSS in XML
Powered by Community Server [Telligent Systems]