Passa ai contenuti principali

WPF per Lob Application

La ricerca di pattern e procedure (pattern and practices, mm mi ricorda qualcosa) per sviluppare rapidamente e in modo robusto applicazioni orientate ai dati con Wpf.
  • L'architettura: M-V-VM
    risolvere: Bisogna arginare la proliferazione del codice attraverso gli strati.
  • Accesso ai dati: Entity Framework
  • DTO
    usare i data transfert object solo per comunicazione fra componenti dislocate fra i servizi o anche per la comunicazione fra uno strato e l'altro?
    Dto flat o strutturati? Poco o DTO?
  • DI: Unity
    per iniziare, forse più semplice di MEF (non è richiesta la risoluzione runtime delle dipendenze)
  • Pattern&Practices? coì a prima vista sembra un carrozzone di un sacco di codice difficilmente attaccabile, vederemo...

Dove cominciare?

Secondo me il tutorial fondamentale è questo di Karl Shifflett.
Il tutorial è disponibile come extension di VS2010, codice e tutorial integrati in un'unico progetto VisualStudio. In quattro iterazioni di uno stesso progetto si passa da un'applicazione WPF affrontata come si faceva con windows forms (ModelViewPresenter, comunque utile per capire come usare semplicemente i DataContext). Per poi integrare MVVM, databinding, command, unity, test, mock.

Una scorpacciata superficiale di tutto che però da un'idea della forma da dare alla propria applicazione.

Alcune cose da tenere d'occhio:
  • usare Relay Command
  • chiamre i messagebox tramite un servizio.

Ci si accorge poi che le idee chiave del tutorial (e quasi tutto il codice di infrastruttura) sono tutti presenti nel MVVM Litght Toolkit in Codeplex (direi che questo framework sarà di riferimento per il proseguo)

L'event aggregation è spiegato forse troppo sommariamente:
[il seguente post risponde alla domanda su come passare messaggi da una view all'altra]


Validazione e Composizione della UI?

Cosa mi manca ancora?
  • Validazione (l'applicazione è orientata ai dati)
  • Navigazione fra le "pagine" (o window?)
  • Composizione della UI (fermo restando che Prism è l'obiettivo a cui tendere un approccio più semplice/pragmatico potrebbe risolvere la questione in toto)
Questo articolo di John Smith: WFP Apps With The MVVM Design Pattern.
Come livello di complessità si torna un po' indietro rispetto agli esempi visti prima (d'altronde questo articolo è del 2009). Di Interessante si vede l'uso di IDataErrorInfo per la validazione e una soluzione semplice per caricare/sostituire sulla UI view differenti.

Da Tenere d'occhio
Fluent Validation!!!

Commenti

Post popolari in questo blog

Log.Net: Conflitto Con CrystalReport per Visual Studio 2010

Situazione: Web Application Asp.Net 4.0, Utilizzo delle librerie di Crystal Report per VS2010. Il progetto web utilizza Log.Net, scaricato dal sito ufficiale. Un problema simile si verifica con applicazioni Windows Form. Problema: Le due librerie vanno in conflitto sia in fase di compilazione ( 1550854 - "Could not load file or assembly 'log4net' or one of its dependencies" Error when building Visual Studio 2010 solution utilizing the Crystal Reports .NET Runtime ), sia una volta installata sulla macchiana target (L'inizializzatore di tipo di 'CrystalDecisions.Shared.SharedUtils' ha generato un'eccezione. Impossibile caricare il file o l'assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' o una delle relative dipendenze. La definizione di manifesto dell'assembly specificato non corrisponde al riferimento all'assembly.). Soluzione Spiegata: Il thread in cui ne parlano. A quanto ho ca

Richiesta di conferma Javascript sul Submit di una Form

Senza ricorrere ai plugin per visualizzare messageBox in jQuery. Il linguaggio Javascript già permette di usare la funzione confirm(), un analogo dell'alert che presenta all'utente la possibilità di scegliere fra Ok e cancel e ritorna il valore true/false di conseguenza. La funzione si può usare direttamente nell'html. input type="image" src="delete_16x16.gif" onclick="return confirm('Procedere con la cancellazione?');" title='Elimina'

SqlServer di Aruba - Entity Framework 4.0 - Problema dello Schema

Lo schema in MsSql è un elemento intermedio fra il database e le tabelle, lo schema predefinito è dbo e compare nel nome tabella come [dbo].[NomeTabella] .  In fase di generazione di un modello .edmx Entity Framework permette di impostare lo schema tramite la proprietà "Database Schema Name" dell'edmx.  Questo valore però non sarà modificabile a Runtime perchè cablato nei metadati. Il servizio SqlServer di aruba purtroopo crea le tabelle in uno schema che ha lo stesso nome dell'utente (per esempio MSSql123).  Quindi un edmx generato in locale a partire da tabelle definite nello schema dbo non fuzionerà. Vi sono due possibili Soluzioni: In locale definisco le tabelle di sviluppo nello stesso schema in cui saranno sul Sql di Aruba. CREATE SCHEMA  MSSql123 GO CREATE TABLE [MSSql123].NomeTabella] ( ... ......); Impongo che i metadati non vengano inseriti nella dll, ed edito a mano i tre file xml di metadati sostituendo dbo con lo schema in uso su aruba og