Domanda

ho trovato un articolo su questo argomento da un dipendente Microsoft, ma qualcuno ha implementato un framework più robusto per questo?Esiste un framework leggero per WinForms che potrebbe essere facilmente portato?Mi piacerebbe aggiornarmi abbastanza rapidamente ed evitare di produrre un mio framework/libreria per gestirlo quando qualcuno più intelligente lo ha già fatto.

Non ho guardato il Fabbrica di software mobile dal gruppo P&P, ma sospetto che sia un po' pesante.Vale la pena dare un'occhiata?

Modificare:Non sto cercando informazioni sul progetto ASP.NET MVC.Sto chiedendo informazioni sull'implementazione del framework compatto "WinForms" e su come implementare MVC con esso.

È stato utile?

Soluzione

Personalmente penso che la Mobile Software Factory non rallegri molto CF.Ne utilizziamo ancora una parte (EventBroker) al lavoro e mi piacerebbe anche rimuovere quella parte se possibile (poiché non supporta eventi generici e devi inserire gli argomenti nei loro tipi forti da EventArgs).Un progetto gemello al lavoro lo ha utilizzato per parte della propria interfaccia utente, ma ha dovuto eliminarlo a causa di problemi di prestazioni (un altro grande progetto, anche se presenta anch'esso ulteriori problemi di prestazioni).

Il problema che riscontro con il framework MVP offerto dalla libreria P&P è che i moduli e i controlli POSSONO PROPRIETARE i relatori invece dei relatori/controller che possiedono i moduli (che non hanno letto "È solo una vista":Programmatore pragmatico?).Questo si adatta perfettamente al mantra di sviluppo rapido di applicazioni "Form First" di MS, ma fa schifo se si considera quanto costosi possono essere gli handle di Windows in CE (se ne hai molti).Al lavoro eseguiamo un'applicazione CF molto grande e abbiamo implementato il nostro framework MVC.Non è difficile crearne uno tuo, assicurati solo di separare tutto in controller, visualizzazioni, oggetti business e servizi e di avere un UIController che controlli le interazioni tra i controller.

In realtà facciamo un ulteriore passo avanti e riutilizziamo moduli/controlli utilizzando un modello Controller->Visualizza->Layout.Il controller è lo stesso del solito, la vista è l'oggetto che personalizza un layout in una vista particolare e il layout è l'effettivo UserControl.Quindi li scambiamo dentro e fuori da un singolo modulo.Ciò riduce drasticamente la quantità di controlli Windows che utilizziamo.Questa + inizializzazione di tutti i moduli all'avvio significa che eliminiamo la pausa evidente che si ottiene quando si creano nuovi controlli Windows "su richiesta".

Ovviamente conviene fare questo genere di cose solo se si sta lanciando un'applicazione di grandi dimensioni.Abbiamo circa 20+ diversi tipi di visualizzazione che utilizzano in totale circa 7 layout diversi.Ciò danneggia la nostra routine di inizializzazione (mentre carichiamo i moduli all'avvio) di circa 10 secondi, ma psicologicamente la maggior parte degli utenti è disposta ad accettare un tale colpo all'avvio invece di pause evidenti durante l'esecuzione.

Il problema principale con la libreria P&P nei miei libri è che si tratta di un port FF -> CF e a causa di alcune incompatibilità e differenze di prestazioni tra le due piattaforme si perdono molte funzionalità utili.

Comunque, Questo è di gran lunga l'articolo più completo che abbia mai letto su MVC/MVP.Per le applicazioni Windows (desktop o CE) consiglierei di utilizzare la versione Taligent Model-View-Presenter senza interazioni, comandi e selezioni (ad esempio, il controller/presentatore esegue tutto il lavoro).

Altri suggerimenti

Nessuno di voi (Davidg o Kevin Pang) ha prestato attenzione al fatto che lui sia interessato WinForms, non Moduli Web.Vuole un framework che supporti il ​​modello di progettazione Model-View-Controller (davidg, MVC non è solo il nome di un framework ASP.NET) in un progetto WinForms utilizzando .NET Compact Framework.Ha posto bene la sua domanda.

C'è anche il Quadro IoC OpenNETCF (che non credo esistesse quando è stata posta questa domanda) che è molto più leggero, ma simile nel modello a oggetti alla Mobile Software Factory di P&P.

@DavidG e @KevenPang

MVC non è limitato a una tecnologia web, infatti l'originale MVC smalltalk era per applicazioni desktop.

Funziona così:

  • Visualizza = Modulo cliente
  • Controller = racchiude gli eventi client ed esegue il marshalling tra vista e modello
  • Modello = dati dell'applicazione e logica aziendale

In Smalltalk MVC puro, la vista non si limita ad essere un modulo, ma può essere qualsiasi rappresentazione dei dati del modello... Ad esempio, se avessimo un modello che rappresentava un foglio di calcolo, potremmo avere le seguenti visualizzazioni:

  • Visualizzazione foglio di calcolo
  • Visualizzazione ottimizzata per la stampante
  • Visualizzazione delle icone

ecc., il Modello sarebbe lo stesso, ma la Vista creerebbe un oggetto di output diverso in ogni caso.

Detto questo non so se esiste un framework del genere per il framework .NET Compact, volevo solo precisare che MVC non significa WebApp.

Dare un'occhiata a MVC mobile di mFly.Non l'ho mai usato, ma è presentato come un framework MVC ragionevole per il CF.

@davidg:"Perché vorresti MVC su Compact Framework?"

Perché no?Non è riservato agli sviluppatori web, è uno schema.

Modificare:I poster sopra sono corretti.Ho visto MVC e ho subito pensato ai moduli web.Le mie scuse.Sentiti libero di ignorarlo.Lascerò il mio messaggio originale sul posto nel caso in cui qualcuno lo facesse È interessato ai moduli Web, MVC ha bisogno dei collegamenti.:-)

Esistono un paio di framework MVC, nessuno dei quali è molto "leggero", ma MVC rappresenta un cambiamento piuttosto grande rispetto ai moduli Web, quindi è previsto:

  • ASP.NET MVC - Questo è il tentativo di Microsoft di creare un framework MVC.È ancora in modalità di anteprima, quindi usalo a tua discrezione, ma molte persone lo stanno già utilizzando nelle loro applicazioni di produzione.Troverai un'ampia documentazione al riguardo con una semplice ricerca su Google poiché sta diventando molto popolare tra gli utenti .NET.
  • Monorotaia del castello - Il framework MonoRail è un framework MVC open source che esiste da un po' di tempo ed è utilizzato in diverse applicazioni di produzione.È decisamente più elaborato rispetto al framework ASP.NET MVC, ma considerando la quantità di sforzi che Microsoft sta dedicando alla propria offerta MVC, penso che cambierà relativamente presto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top