3 messaggi dal 09 agosto 2009
Ciao,

Tra i tutorial ho trovato il programm pubs, il quale mi sembra un ottimo modo per vedere come impostare un'architettura multi layer.
C'e' per caso qualche tutorial che spieghi piu' in dettaglio come e' fatto? (faccio riferimento alla versione con le Entita').

Ho provato a dare un occhiata al codice, ma senza un mappatura UML delle varie classi e poche spiegazioni ho serie difficolta' a capire il codice.

Grazie

Pierpaolo
arguros wrote:
Ho provato a dare un occhiata al codice, ma senza un mappatura UML delle varie classi e poche spiegazioni ho serie difficolta' a capire il codice.

di cosa parli esattamente? potresti essere più chiaro qual è il "programma pubs" a cui ti riferisci? grazie.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
3 messaggi dal 09 agosto 2009
Ciao Daniele,

Grazie per avermi risposto.
Faccio riferimento al programma scritto da Riccardo Golia e disponibile come allegato in Tutorial -> Architettura -> Archidettura del Software: Le applicazioni web a tre livelli.

Ieri notte sono riuscito a fare una mappatura UML del programma (ci ho messo 4 ore) e ho un'idea molto piu' chiara di come funzioni. Se vuoi posso spedirti il file a un indirizzo di posta elettronica se puo' aiutarti a capire la struttura dello stesso.

Premettendo che sono un principiante, mi sorgono alcune domande sull'architettura proposta.

Riccardo definisce un interfaccia

interface IEntityService<T> where T : Entity

T ReadSingle(string EntityID)
Collection<T> ReadAll()

Entity e' la classe base da cui le Entity Author, Book, Publisher derivano

Dopo di che definische i seguenti servizi, per accedere al DAL

BookService : IEntityService<Book>
AuthorSerive : IEntityService<Author>
Publisherservice : IEntityService<Publisher>


e poi crea una classe con dei FactoryMethods per istanziare queste classi.

Infine ci sono i Businees Objects Books, Authors, e Publishers che utilizzano i Service per otterne i dati che necessitano. (Tutto e' molto piu chiaro dal diagramma UML che ho fatto).

Books chiama BookSerive che chiama il DAL per otterere i dati.

Mi piace molto il fatto che Books, Authors e Publishers sono codificate contro le interfaccie IEntityService<T>, il che crea coorenza tra i vari sercice e semplicita'. Ma la prima cosa che mi sono chiesto e'

1) Ma se voglio implementare metodi piu' specifici, cosa devo fare?
Estendere L'interfaccia IService<T> e definirne un altra del tipo IBookSerive<T> where T : Book? Introdurli nel BookService direttamente senza metterli nell interfaccia? o implementarli direttamente nel oggetto Books?

Esempio: GetBooksByPublisher(PublisherID)
RateBook(int Rate)
GetBooksByDate(..)

2) L'Autore implementa alcuni Filtri sulla CollezioneBooks.
Ma per funzionare fa una cosa del tipo
BookService.ReadAll().FilterByPublisher.

Se abbiamo un milione di libri in memoria, non mi sempra ottimale caricarli tutti in memoria per poi filtrali.

3) Qual'e' l'idea di base che IService<T>?

Ti ringrazio per l'aiuto.

Pierpaolo
arguros wrote:
Grazie per avermi risposto.
Faccio riferimento al programma scritto da Riccardo Golia e disponibile come allegato in Tutorial -> Architettura -> Archidettura del Software: Le applicazioni web a tre livelli.

ok, quindi ASP.NET e non ASP. sposto la discussione nel forum corretto.
Ieri notte sono riuscito a fare una mappatura UML del programma (ci ho messo 4 ore) e ho un'idea molto piu' chiara di come funzioni. Se vuoi posso spedirti il file a un indirizzo di posta elettronica se puo' aiutarti a capire la struttura dello stesso.

contatta direttamente Riccardo, anche se in questo periodo è in ferie  al ritorno ti risponderà.

1) Ma se voglio implementare metodi piu' specifici, cosa devo fare? Estendere L'interfaccia IService<T> e definirne un altra del tipo IBookSerive<T> where T : Book? Introdurli nel BookService direttamente senza metterli nell interfaccia? o implementarli direttamente nel oggetto Books?

dipende, come sempre in questi casi. io opterei per un'interfaccia specializzata, così da poter controllarne meglio il contratto, ma tutte le altre ipotesi che fai sono lecite. bisogna vedere se ti interessa tenere un forte disaccoppiamento o meno.

2) L'Autore implementa alcuni Filtri sulla CollezioneBooks. Ma per funzionare fa una cosa del tipo
BookService.ReadAll().FilterByPublisher.

Se abbiamo un milione di libri in memoria, non mi sempra ottimale caricarli tutti in memoria per poi filtrali.

ovviamente questo è un esempio di come deve essere fatta l'architettura, non l'implementazione. in uno scenario reale quei filtri lavorano direttamente con il servizio/data layer per farsi dare esattamente i dati che servono. a meno che di mezzo non ci sia un sistema di cache distribuita, ad esempio
insomma, questi sono dettagli implementativi che variano in base allo scenario applicativo in cui ti trovi. e questo è un esempio di come strutturare l'applicazione.

3) Qual'e' l'idea di base che IService<T>?

quella di offrire una interfaccia comune ai servizi.

Ti ringrazio per l'aiuto.

prego.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.