349 messaggi dal 08 febbraio 2009
Salve a tutti.

Mi chiedevo come sarebbe corretto "strutturare" un programma che ha la seguente struttura:

-) Servizio WCF che accede al DB
-) Client WPF che comunica col WCF per avere l'elenco dei dati

Il mio dubbio è: dove devo inserire le classi che estendono INotifyPropertyChange?

Di sicuro queste classi devono essere visibili dal WPF, altrimenti il gioco del binding non funziona.
Così ad occhio, leggendo anche un po' in giro, mi sembra che tale implementazione dovrebbe essere fatta all'interno di un eventuale ViewModel (in un pattern MVVM), lasciando così "libere" da tale implementazione tutte le classi che girano sul WCF.

Se così fosse (cosa che credo), come mi devo comportare se ho più client che devono avere videate diverse? Riesco ad avere un unico ViewModel? Oppure, in un'architettura simile sarebbe più corretto avere le INotify dentro alle classi presenti su WCF?


Grazie mille.
Se generi il proxy WCF con l'opzione svcutil /enableDataBinding agli oggetti viene automaticamente aggiunta l'implementazione di INotifyPropertyChanged. Da come l'hai raccontata mi sembra il modo più veloce e semplice di procedere.

Ciao,
m.
Modificato da Cradle il 06 maggio 2009 17.45 -
349 messaggi dal 08 febbraio 2009
Grazie.

Però, in questo caso, l'INotifyPropertyChange si scatena anche lato server?
Oppure, come più probabile, resta valida solo lato client?

PS: Sbaglio o in pratica io NON implemento alcuna INotifyPropertyChange nè lato server, nè lato client, però quando collego il WPF al WCF se la crea da sola? (in pratica nella funzione in cui crea le classi sul WCF)
Aspetta.. frena

Io ti sto parlando di proxy, quindi intendo le classi che vengono generate da svcutil.exe per invocare il servizio WCF; in poche parole sto parlando di client. L'opzione che ti ho segnalato fa sì che queste classi implementino INotifyPropertyChanged e che nei setter delle varie proprietà ci sia il codice necessario a sollevare l'evento.

Così su due piedi non ricordo se questa opzione sia selezionabile anche da Visual Studio sull'Add Service Reference o se ti tocca invocare svcutil da prompt.

Ciao,
m.
349 messaggi dal 08 febbraio 2009
Ok, almeno ora sono sicuro di aver capito bene (ovvero che "viene generato tutto dal comando" e "riguarda solo il client").

Ora però sto guardando l'esempio di MVVM fatto da Civera... Non l'ho ancora seguito bene (purtroppo sono libero solo la sera di farlo e spesso sono un po' cotto).

Così ad occhio mi sembrerebbe la soluzione ideale (MVVM), però se non è adatta, poi vedrò di provare come dici tu (se poi fa tutto il Visual Studio bene, altrimenti vedrò di imparare come funziona, in fin dei conti, più cose si sanno e meglio è, anche se a volte l'IDE maschera gran parte del lavoro)


Grazie comunque!

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.