Nuova app Silverlight. MVVM. Servizi RIA vs CSLA

3

Altri 2 giorni di lettura e visione di demo e eccoci qui.

Per la mia applicazione LoB Silverlight che userò:

  1. Prisma per aspetti dell'interfaccia utente e modularità.
  2. Pattern MVVM (usando Prism)
  3. ??? portare i dati e le convalide ...
  4. Entity Framework per l'accesso ai dati
  5. SQL Server per i dati

Ok, il dilemma principale è # 3. Se non userò nessun framework allora dovrò capire come fare tutte le cose CRUD da solo. Posso fare RESTful WCF, posso fare SAPONE. Tutto ciò == MANUALE di codifica.

Posso fare servizi RIA. Ho un po 'di vedere cosa fa ed è bello per la corrispondenza diretta con il mio livello di dati, ma non è così bello se ci sarà molta logica di business. Dove lo metterei? Nel mio ViewModel? Un'altra domanda è come hanno mantenuto quei servizi. Una volta generato, dovrei mantenerli manualmente se i dati cambiano?

Ho anche trovato CSLA che sembra essere bello da una parte ma riceve molte critiche .. CSLA mi permetterà di scrivere logica di business e oggetti di forma come mi serve e di poterlo passare "attraverso" ViewModel e tutto va bene .

Qualcosa mi dice che i servizi di RIA saranno molto più veloci da scrivere. Inoltre, mi piace il fatto che non debba includere dipendenze extra.

Dal 2010 non ci sono blog o menzioni sui servizi RIA. Sta andando sotto il tavolo? Non ampiamente accettato? Non si adatta bene alle grandi app?

Sto cercando di decidere su quale devo scommettere. CSLA o servizi RIA. O?

    
posta katit 12.08.2011 - 08:18
fonte

3 risposte

3

Recentemente ho lavorato su alcuni progetti Silverlight line-of-business. Per uno abbiamo usato direttamente WCF e fatto tutto il CRUD, il tracciamento dello stato, la relazione tra entità, ecc. Per il secondo progetto utilizziamo i Servizi RIA e ce l'ha gestita per noi.

Tuttavia, NON disponevamo di servizi RIA per generare direttamente servizi basati sul nostro modello ORM. Nel frattempo avevamo uno strato di interfacce e "oggetti stupidi". Quindi avevamo un livello dati distinto, un livello di logica aziendale e un livello di servizio. I servizi di RIA sono stati coinvolti solo al livello di servizio.

Se stai per utilizzare i Servizi RIA, ti consiglio di limitare la quantità di livelli della tua applicazione che ti lasciano influenzare. Ti costringe a scendere alcuni percorsi per quanto riguarda il design, quindi più lo conteni più flessibilità avrai. Questo consiglio è probabilmente valido anche per CSLA. Se stai per "scommettere" su un particolare quadro, siepi la scommessa il più possibile.

In sintesi, i Servizi RIA ti faranno sicuramente risparmiare tempo, ma limitano la tua flessibilità un po 'rispetto al WCF grezzo. E ha alcuni nodi e aree più deboli che hanno ancora bisogno di miglioramenti.

Non ho lavorato con CSLA, ma ho visto Rocky Lhotka parlare più volte, quindi conosco le basi. Sembra una struttura solida. Tuttavia, lo svantaggio principale che avrà rispetto ai Servizi RIA è che non è direttamente da Microsoft, quindi CSLA non si collegherà in modo così coeso con altri materiali MS quanto i Servizi RIA. Inoltre, a lungo termine, suppongo che sarà più facile trovare persone che conoscono i Servizi RIA contro persone che conoscono CSLA.

Se è d'aiuto, ho tenuto un discorso su RIA Services, puoi trovare la presentazione e alcuni esempi di codice sul mio blog.
link

    
risposta data 12.08.2011 - 14:13
fonte
4

Sto lavorando su un progetto WPF e Silverlight (due client separati) che fa un uso pesante di CSLA.NET Framework. Abbiamo avuto pochissimi problemi dal Framework CSLA.NET che è maturo, molto ben collaudato, ha un eccellente supporto da Rocky e dalla comunità e fornisce soluzioni a molti dei problemi che si stanno sviluppando nelle moderne applicazioni .NET (data-binding , accesso ai dati, convalida, autenticazione, solo per citarne alcuni).

CSLA.NET non è perfetto, forse perché non si adatta perfettamente alle architetture dei tipi di bus del messaggio; ma se il tuo obiettivo è un'applicazione line-of-business seduta in cima a un database, allora CSLA.NET è una scelta sensata. Forse un altro problema è la curva di apprendimento, ma il materiale educativo è completo e ben scritto.

    
risposta data 12.08.2011 - 15:02
fonte
0

Siamo circa 1,5 anni in un progetto triennale utilizzando CSLA, Prism, TSQL e Silverlight. Data la possibilità, lanciavo CSLA il più rapidamente possibile. Uno dei maggiori problemi che ho con CSLA è che cerca di fare tutto. Se osservi il discorso di Rich Hikey su Simple vs Easy (http://www.infoq.com/presentations/Simple-Made-Easy) noterai che parla di "complimenti". Cioè, codice entangling in modo che un singolo oggetto sia responsabile di più di una cosa.

CSLA viola questo principio (e quello di SOLID) a sinistra, a destra e al centro. In pratica, si finisce con una situazione in cui le regole aziendali sono negli oggetti di trasferimento dati. Finisci per utilizzare lo stesso oggetto che hai compilato con i dati DB (direttamente da EF o tramite DTO), e quello stesso oggetto esatto finisce sul client che viene associato all'interfaccia utente. Oppure puoi avvolgerli in Modelli di vista, se lo desideri, ma aggiunge semplicemente sempre più complessità.

Inoltre, stai bloccando il tuo software client in un linguaggio .NET. Se in futuro vuoi fornire feed di servizio o semplicemente accedere ai tuoi dati da JS e HTML, sei improvvisamente costretto a racchiudere centinaia di righe di codice da presentare a queste diverse piattaforme.

Semplifica ... il tuo server web sputa JSON ... hai client e server completamente disgiunti (condividi i file di codice se lo desideri, ma non li accoppi). Più semplice è il codice, più facile sarà risolvere bug, capire cosa sta succedendo e tenere tutto sotto controllo

    
risposta data 11.05.2012 - 17:45
fonte