Ho bisogno di aiuto per decidere tra silverlight / silverlight out-of-browser / wpf

10

Sono nella fase di pianificazione iniziale di un progetto di riscrittura e sto decidendo tra silverlight / silverlight oob / wpf. TL; DR alla fine.

È un'app LOB che gestisce calendari clienti / appuntamenti / clienti. Non troppo complicato Sto cercando in modo indipendente queste opzioni altrove, ma ho pensato di chiedere in giro. Alcuni requisiti iniziali approssimativi / problemi prevedibili sono:

Devo essere in grado di chiamare un exe sul sistema con commandline args (sip phone).

Makes SL a problem

La base utenti è distribuita e voglio limitare il traffico che va oltre il filo il più possibile ed evitare alcuni problemi di concorrenza sgradevoli

I can see this being a problem using WPF

L'implementazione / aggiornamento del software deve essere dead simple . Alcuni utenti sono altamente non tecnici (vedi: 70 anni, su un computer per la prima volta)

This isn't a huge problem now with the ClickOnce app we are replacing, and I have control over the machines that it gets used on. However, it's simpler for users if they don't even have to click the clickonce "Install" button. I don't know how this is handled with Silverlight OOB.

L'azienda sta pianificando una strong espansione in 12 mesi, quindi l'implementazione dell'hardware dovrebbe essere veloce / facile. L'idea è di ottenere una connessione Internet in una nuova posizione, collegare alcuni computer ed essere in grado di lavorare senza la necessità di personale IT dedicato o configurazione del server.

Makes SL appealing

L'integrazione con altri servizi (software finanziario, server asterix) non è un obiettivo immediato, ma è un obiettivo finale essere parte del sistema. Questo è reso molto più semplice / più efficiente se un singolo servizio è configurato per integrarsi con quei servizi secondari e non deve trasferire tutti questi dati sul filo

Makes SL appealing

Fare più "versioni" è fuori dalla finestra. Non so come sia mantenere una versione Silverlight + Silverlight oob (se c'è qualche problema)

Might make WPF a better option.

TL; DR: Dal mio punto di vista, un'app silverlight ha il significato migliore per il 90% degli utenti - l'altro 10% non può usarlo perché devono eseguire un exe. Silverlight OOB potrebbe essere una via di mezzo felice, ma al momento non so per quale modello di esecuzione si tratti (c'è ancora un concetto di codice lato server? Se è così, potrebbe essere l'ideale) e io no sapere come funziona la distribuzione / l'aggiornamento.

    
posta Steven Evers 27.10.2010 - 23:59
fonte

3 risposte

6

Ben - problema interessante. Hai dimenticato di menzionare che puoi avere un'applicazione di trust completa Silverlight a partire da SL4, quindi se stai pensando a WPF potresti invece prenderlo in considerazione. Avrebbe bisogno di installare (ClickOnce), ma sembra che tu ti stia allontanando da quello.

Non ho ancora fatto nulla con OOB, ma sono abbastanza sicuro che lo stesso binario può essere usato sia in broswer che fuori dal browser in quanto si tratta di un'impostazione di progetto piuttosto che di un target di build separato.

"Enable running application out of the browser"

nella scheda Silverlight del progetto Silverlight.

Quindi non ci sarebbero problemi di manutenzione separati lì.

È possibile creare una buona quantità di codice nell'applicazione Web che ospita l'app Silverlight e comunicare utilizzando i servizi RIA WCF: ancora una volta dovresti andare con .NET 4 e SL 4 per ottenere la versione 1.0 di questo. .NET 3.5 e SL 4 supportano solo i servizi WCF RIA beta. Ciò ridurrebbe a) la dimensione del download eb) la quantità di codice che sarebbe necessario eseguire sul client ma aumenterebbe il traffico di rete.

Su questo punteggio puoi dividere il tuo codice Silverlight in diversi assiemi e usare qualcosa come Prism impostarli per il caricamento su richiesta. Ciò significa che l'utente scarica solo le parti dell'applicazione che sta effettivamente utilizzando. Puoi ridurre ulteriormente l'importo scaricato controllando

"Reduce XAP size by using application library caching"

opzione.

Se si dispone di un file "extmap" da utilizzare con qualsiasi DLL esterna (di terze parti o .NET), ciò significa che vengono raggruppati in un file zip e scaricati separatamente per essere condivisi tra tutti i file xap nel progetto. Ciò mantiene i singoli file xap alle loro dimensioni minime e garantisce di avere solo una copia di queste altre DLL sul computer client.

    
risposta data 28.10.2010 - 01:14
fonte
2

La tua analisi è molto buona.

L'unica altra cosa che vorrei menzionare è che non tutto il framework è disponibile per te in un'applicazione Silverlight. Questa restrizione PU MAY inclinare la tua scelta verso WPF, ma dovrai vedere come questa restrizione si applica o meno alle tue esigenze di applicazione.

    
risposta data 28.10.2010 - 00:16
fonte
2

Solo un paio di cose veloci:

Distribuzione e "codice lato server": un'app Silverlight è un'app client, semplice e semplice. Non lasciare che il semplice fatto che sia consegnato tramite il browser ti confonda: quando esegui un'applicazione SL in-browser, stai scaricando gli assembly per quell'app in un pacchetto zippato, estraendoli e eseguendoli tramite il plug-in. Silverlight da solo non ha alcuna nozione di "codice lato server" - se vuoi che il codice venga eseguito su un server remoto, scrivi un servizio WCF.

Aggiornamento dell'app: questo è uno scenario comune per le app OOB e SL ha il supporto integrato. Google in giro per CheckAndDownloadUpdateAsync.

Modifica: ho dimenticato di menzionare che l'installazione dell'applicazione avviene dall'interno dell'applicazione. Per impostazione predefinita, un'app SL installabile avrà un'azione di menu contestuale per installarla. Tuttavia, l'installazione può anche essere eseguita a livello di codice in risposta all'utente facendo clic su un pulsante. Lo stato di installazione può anche essere rilevato a livello di codice, quindi quello che ho visto alcune app SL che sono destinate solo a eseguire OOB do è prima rilevare se sono installati. In tal caso, esegui l'app. In caso contrario, mostra semplicemente una schermata iniziale con un pulsante che installa l'app.

    
risposta data 28.10.2010 - 01:44
fonte

Leggi altre domande sui tag