ASP.Net o WPF (C #)? [chiuso]


31

Il nostro team è diviso su questo e volevo ottenere alcune opinioni di terze parti.

Stiamo costruendo un'applicazione e non possiamo decidere se vogliamo utilizzare l'applicazione desktop .Net WPF con un server WCF o l'app Web ASP.Net utilizzando jQuery. Ho pensato di porre la domanda qui, con alcune specifiche, e vedere quali sarebbero i pro / contro dell'utilizzo di entrambe le parti. Ho il mio preferito e mi sento di parte.

Idealmente, vogliamo creare la versione iniziale del software il più velocemente possibile, quindi rallentare e impiegare del tempo per integrare le funzionalità / i componenti aggiuntivi che desideriamo in seguito. Soprattutto vogliamo che il software sia veloce. Gli utenti esaminano i record tutto il giorno e i ritardi nel caricamento dei record o nelle schermate di aggiornamento ne riducono la produttività.

Dettagli dell'applicazione:

  • Sto stimando circa 100 schermate diverse per la versione iniziale, con piani per molte schermate aggiuntive che verranno aggiunte in seguito dopo il rilascio iniziale.
  • Stiamo cercando di utilizzare la comunicazione bidirezionale per i sistemi di promemoria ed eventi
  • Attualmente deve supportare circa 100 utenti, sebbene ci sia stato detto di consentire una crescita fino a 500 utenti
  • Abbiamo più sedi

Elementi da considerare (forse non inizialmente in alcuni casi ma nelle versioni future):

  • Spazio per ulteriori componenti da aggiungere dopo il rilascio iniziale (ce ne sono molti di questi ... forse funzionano qui rispetto all'applicazione iniziale)
  • Navigazione da tastiera
  • Le prestazioni sono un must
  • Velocità di produzione alla versione iniziale
  • Spese generali di manutenzione ridotte
  • Supporto futuro
  • Integrazione softphone / scanner

I nostri sviluppatori:

  • Abbiamo 1 programmatore che ha imparato WPF negli ultimi mesi ed è stato lui a suggerire di usare WPF per questo.
  • Abbiamo un secondo programmatore che ha familiarità con ASP.Net e che potrebbe aiutare il progetto in futuro, anche se non ci lavorerà molto fino alla versione iniziale poiché il suo tempo è trascorso a mantenere il nostro software attuale.
  • Ci sono io, che ho lavorato con entrambi e mi sento a mio agio in entrambi
  • Abbiamo una società esterna che gestisce il progetto e sono una società ASP.Net.
  • Abbiamo in programma di assumere 1-2 altri, tuttavia dobbiamo sapere in quale direzione stiamo andando per primi

Ambiente:

  • Gli utenti generici si trovano sul server Windows 2003 con Servizi terminal. Si connettono utilizzando thin client WYSE su una connessione RDP. Il personale amministrativo ha i propri PC con XP o versioni successive. Gli utenti sono autorizzati a specificare la propria risoluzione anche se si limitano a utilizzare IE come browser web.
  • Altre posizioni si connettono alla nostra rete tramite una connessione MPLS

Sulla base di ciò, cosa sceglieresti e perché?


Adoro tutti i voti, ma mi piacerebbe davvero sentire altre opinioni su questo :)
Rachel,

3
cosa stai facendo che richiede inizialmente 100 schermi ?
Steven A. Lowe,

Tale stima include molti schermi parziali. Ad esempio, la schermata principale è suddivisa in un gruppo di "pezzi" che possono essere aggiunti / rimossi / spostati / ridimensionati in base alle esigenze dell'utente. Ognuno ha il proprio set di dati, la propria vista di modifica e il proprio set di azioni che possono essere eseguite. Sto contando questi come separati anziché come un singolo schermo poiché ognuno è molto diverso.
Rachel,

Usa .NET MVC 3, JQuery e HTML5
Oliver Picton

1
Ciao @kmote, siamo finiti con WPF ed eravamo abbastanza contenti della decisione. Ha permesso molta più flessibilità nella costruzione dell'interfaccia utente e ho scoperto che era abbastanza veloce da costruire rispetto a una soluzione basata sul web. Purtroppo, il progetto è stato annullato dopo un anno a causa di altre priorità, tuttavia se mi fosse presentata nuovamente la stessa scelta prenderei la stessa decisione.
Rachel,

Risposte:


17

Mi sembra certamente un'app WPF, con molte interazioni dell'utente e potenzialmente con l'hardware. Puoi distribuire l'app tramite Click-Once, quindi la distribuzione è principalmente un problema. La tua app WPF può accedere a un servizio WCF e fornire i dati come binari, quindi le prestazioni saranno eccellenti. Vorrei iniziare a leggere su WPF e conoscerlo il prima possibile.


+1 Inoltre, con TUTTE quelle schermate, probabilmente vorrai creare il maggior riutilizzo possibile nella tua app (sia codice che GUI)
Jon Onstott,

+1 Immagino che con "Integrazione softphone / scanner" richiesta, suppongo che l'unico modo sia WPF. O forse è possibile usare Silverlight
Jiew Meng il

15

Risposta frangia lunatica: entrambi. Ottieni il livello di servizio giusto, è facile avere un client di spessore che fa tutto (WPF) e un client Web rapido per fare le cose più comuni (ASP.NET). Lascia la porta aperta al client mobile, ecc., Lungo la strada.


Questo è quello che stiamo pensando di fare .... Applicazione client WPF per la maggior parte degli usi con una versione web leggera per report o accesso limitato.
Rachel,

2
+1 a questo, scrivi le budella di non presentazione in qualsiasi linguaggio .NET tu sia a tuo agio - quindi usa lo strumento migliore per ogni attività di presentazione (es: app Web usa l'interfaccia ASP.NET per questa applicazione, desktop usa WPF / Winforms / eccetera).
Heretik,

Inizialmente gli utenti potrebbero trovare ASP.NET "abbastanza buono" soprattutto se ciò significa ottenere più parti dell'app prima.
JeffO,

8

Se hai solo un programmatore che sta imparando il WPF e stai pensando di far fare il salto al tuo team al WPF, allora perché non usare Silverlight? Ottieni molti dei vantaggi di WPF ma mantieni comunque la possibilità di lasciare il tuo progetto come app web. Dal momento che stai cercando di avere un grande progetto modulare, avrebbe senso usare PRISM con WPF o Silverlight per semplificare MVVM.

Il mio team ha recentemente scelto di utilizzare Silverlight su asp.net. È stata una scelta fantastica per noi. Inizialmente avevamo un solo sviluppatore che conosceva Silverlight. Poi abbiamo preso tutti una settimana di corso di formazione che era quasi inutile, ma almeno ci siamo bagnati i piedi. Alla fine abbiamo dovuto assumere due appaltatori per aiutarci con la creazione della maggior parte del nostro framework UI. La maggior parte del nostro team non è ancora fiduciosa nelle proprie capacità di Silverlight. Io stesso, il membro iniziale del team con conoscenza di Silverlight e i due appaltatori sono quelli che fanno la maggior parte dello sviluppo di SL. Successivamente, abbiamo due membri back-end dedicati. Direi che ci sono voluti circa 2 mesi dopo aver preso la decisione di trasferirci a Silverlight che avevamo davvero messo insieme qualcosa di concreto. Tuttavia, ora abbiamo un prodotto meraviglioso che sembra molto simile a un'applicazione lato client che è in esecuzione all'interno di un browser Web e non può essere installato su nessuna macchina localmente. Lo sviluppo è stato in totale meno di un anno e siamo quasi pronti per il rilascio o il candidato alla prima uscita.

Alcune cose da considerare:

  • WPF o silverlight, qualunque cosa tu scelga, ci sarà una buona dose che i tuoi sviluppatori dovranno imparare.

  • Silverlight può rimanere senza browser se necessario. Se lo fai, è abbastanza facile configurarlo in modo tale che se mai lanci una nuova versione, il programma SL fuori dal browser installato si aggiornerà automaticamente.

  • Silverlight non include tutti i controlli di WPF.

La mia ultima nota è che se vuoi sfornare il codice il più velocemente possibile, allora è abbastanza ovvio che dovresti andare con ASP.NET. Il mio principale problema con ASP è che se non si disciplina il proprio team è facile che un progetto ASP.NET diventi disordinato e disordinato. Se pensi di essere in grado di affrontare il sovraccarico iniziale di essere al passo con le tecnologie, Silverlight o WPF ti offriranno molte meravigliose possibilità.


Siamo in una situazione molto simile e ho trovato interessante ascoltare la tua storia, grazie. Prenderò in considerazione Silverlight, sebbene fino ad ora ho usato solo WPF. Se andiamo con WPF abbiamo programmato di fare la nostra sezione sui rapporti in Silverlight, quindi avevo programmato di impararlo alla fine
Rachel

Sono nel mezzo della conversione (lettura della riscrittura) di un'applicazione ASP.NET in Silverlight, fondamentalmente perché ASP.NET non si adatta a ciò che vogliamo.
ChrisF

1
Cordiali saluti: ricorda che Silverlight non sarà un prodotto importante della SM e, in alcuni casi, la gente dice che potrebbe essere sconsiderato. Sono d'accordo che sarebbe bene considerare, basta aggiungere queste informazioni al tuo elenco di possibili contro.
Paige Watson,

1
Considererei fortemente WPF su Silverlight per questo tipo di app. WPF può essere facilmente distribuito come XBAP (applicazione browser xaml), di solito con solo un paio di modifiche al codice nel file di configurazione. WPF ha tutto ciò che Silverlight fa e altro, inoltre WPF ottiene molto più supporto. L'unico aspetto negativo è che mentre Silverlight può potenzialmente essere distribuito su più sistemi operativi (anche Linux con il progetto Moonlight), WPF richiede .Net sul client, quindi è strettamente Windows.
Morgan Herlocker,

2
Non so se Silverlight verrà sospeso, ma qualcosa di correlato è l'articolo Mashable Microsoft Passa da Silverlight a HTML5 . Personalmente,
prenderò in

7

Questa parte riguarda piuttosto:

Gli utenti generici si trovano sul server Windows 2003 con Servizi terminal. Si connettono utilizzando thin client WYSE su una connessione RDP. Il personale amministrativo ha i propri PC con XP o versioni successive. Gli utenti sono autorizzati a specificare la propria risoluzione anche se si limitano a utilizzare IE come browser web.

WPF non è eccezionale sulle connessioni Desktop remoto / Thin client. Le animazioni non saranno uniformi e qualsiasi immagine complessa (anche gradienti) rallenterà la risposta dell'interfaccia utente fino a una scansione. Molto probabilmente anche il personale amministrativo con tipiche macchine XP retrò avrà problemi di prestazioni con complesse applicazioni WPF (a causa di piccole quantità di RAM e GPU difettose).

Se segui la strada del WPF per una grafica ricca, preparati agli hack delle prestazioni dell'ultimo minuto quando scopri che le macchine target hanno dieci anni. Attenersi alle schermate statiche e utilizzare .NET 4.0 poiché le prestazioni di WPF sono notevolmente migliorate dal 3.5.


Grazie ... questa è in realtà una grande preoccupazione per me, anche se finora sembra che possiamo ridimensionare la grafica se l'utente si trova su una connessione RDP e i test hanno funzionato bene.
Rachel,

2

Tecnicamente, credo che la combinazione WPF / WCF sia la soluzione migliore.

Tuttavia, non sono convinto che il tuo programmatore WPF esistente abbia davvero l'esperienza per questo progetto. WPF è piuttosto un cambiamento nel programmare i processi di pensiero dalla programmazione di Winform e quindi dovrai pensare a lungo e duramente, hai davvero sufficienti competenze nel team per realizzare questa strada.


1
+1 "L'apprendimento per un paio di mesi" potrebbe significare qualsiasi cosa: preparati a una curva di apprendimento ripida.
Kirk Broadhurst

1

Interessante. Sembra straordinariamente familiare a un'app che abbiamo appena avviato presso la mia azienda (sorseggia l'integrazione dello smartphone e del telefono e tutto il resto).

Abbiamo scelto Silverlight con particolare attenzione alla SOA in modo che un'app WPF potesse essere realizzata in seguito in caso di necessità.

Spazio per ulteriori componenti da aggiungere dopo il rilascio iniziale (ce ne sono molti di questi ... forse funzionano qui rispetto all'applicazione iniziale)

Stiamo utilizzando MEF nel livello di servizio e stiamo costruendo punti di estensione (interfacce di plugin che descrivono determinati punti in cui pianifichiamo l'estensibilità o l'integrazione con altri sistemi)

Navigazione da tastiera

Non è un problema.

Le prestazioni sono un must

Che tipo di esibizione? Performance percepita (snappy-ness) o performance crunching dei numeri? Quest'ultimo potrebbe essere un problema con un'app web / silverlight. Per il primo, la nostra app passa attraverso molti record, come il tuo, ma siamo in grado di prevederli e pre-recuperare i record mentre gli utenti stanno lavorando su quelli attuali. I tempi di "caricamento" sono zero per quella sezione della nostra app.

Velocità di produzione alla versione iniziale

Dipende dallo skillset. Ma realisticamente, tutti vogliono sempre arrivare sul mercato il più velocemente possibile, quindi non è un argomento.

Spese generali di manutenzione ridotte

Come la velocità di produzione, è anche un non argomento e scenderà alle pratiche di progettazione e codifica. Se stai parlando in termini di manutenzione dell'hardware, potresti voler andare con un'app cloud.

Supporto futuro

Non sono sicuro di cosa significhi.

Integrazione softphone / scanner

Silverlight 4 ora consente l'accesso a webcam / microfono (speriamo di fare videoconferenze tra applicazioni e integrazione sip), quindi se stai utilizzando un server telefonico, puoi scriverne uno tu stesso. Non ne conosco altri esistenti, ma questo potrebbe aiutare.

Altrimenti, potresti dover fare un brutto hacking (non hai più un riferimento all'articolo / i, scusa) o non hai altra scelta che avere un'app WPF in grado di interagire con il file system. SL4 può uscire dal browser, ma può accedere solo ad alcune parti del file system. Nessuno di loro sarà probabilmente la parte che devi interagire con un sip phone.

Intendi scanner di documenti? Non ne sono sicuro. Stiamo utilizzando scanner manuali / di codici a barre, che funzionano esattamente come qualsiasi altro dispositivo di input e non rappresentano un problema.


1

hai bisogno di un'applicazione altamente reattiva che le persone possano usare tutto il giorno? usa WPF; troverai più facile riutilizzare anche i componenti della GUI in WPF su ASP / MVC (IMHO)

sì, jquery et al. sono fantastici, Silverlight è fantastico, ma le app desktop sono ancora più efficienti

per il back-end, WCF va bene


0

Dovrò raccomandarti di usare WCF per il tuo livello di servizio a causa della scalabilità e della sicurezza. Per il livello di presentazione puoi usare Silverlight o ASP.NET, Silverlight è come Flash, ma è difficile da capire e all'inizio ha un'alta curva di apprendimento, soprattutto quando si lavora con i dati. ASP.NET è più facile da usare ma avrai bisogno di molte modifiche e javascript per usarlo in modo efficiente.


1
Il piano è di avere un livello di servizio WCF indipendentemente da ciò che scegliamo di fare per il livello UI. Stiamo provando a decidere se vogliamo WPF / Desktop o ASP / Web per l'applicazione client. Anche se utilizziamo un'app desktop, è molto probabile che avremo un portale Web per accedere a un sottoinsieme di elementi come i report.
Rachel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.