2010-11-17 11 views
50

La nostra squadra è divisa su questo e volevo ottenere pareri di terze parti.ASP.Net o WPF (C#)?

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

Idealmente vogliamo creare la versione iniziale del software il più velocemente possibile, quindi rallentare e prenderci del tempo per sviluppare le funzionalità/componenti aggiuntivi che vogliamo in seguito. Soprattutto vogliamo che il software sia veloce. Gli utenti passano i record tutto il giorno e i ritardi nel caricamento dei record o negli schermi di aggiornamento uccidono la loro produttività.

Dettagli applicazione:

  • sto valutando circa 100 diversi schermi per la versione iniziale, con i piani per un sacco di schermi aggiuntivi che viene aggiunto in un secondo momento dopo il rilascio iniziale.
  • stiamo cercando di utilizzare la comunicazione a due vie per i sistemi di sollecito e di eventi
  • ha attualmente per sostenere circa 100 utenti, anche se c'è stato detto per consentire la crescita fino a 500 utenti
  • abbiamo più sedi

elementi da prendere in considerazione (forse inizialmente non in alcuni casi, ma nelle versioni future):

  • camera di componenti aggiuntivi da aggiungere dopo il rilascio iniziale (ci sono un sacco di di questi ... perhap s lavoro qui rispetto alla domanda iniziale)
  • tastiera navigazione
  • performance è un must
  • Produzione Velocità di Versione iniziale
  • bassa manutenzione in testa
  • supporto Future
  • Softphone integrazione/Scanner

I nostri sviluppatori:

  • Abbiamo 1 programmatore che ha studiato WPF negli ultimi mesi ed è stato lui a suggerire di utilizzare WPF per questo.
  • Abbiamo un secondo programmatore che ha familiarità con ASP.Net e che potrebbe essere d'aiuto per il progetto in futuro, anche se non ci lavorerà molto fino alla versione iniziale da quando il suo tempo è trascorso a mantenere il nostro software attuale.
  • C'è io, che ha lavorato con entrambi e mi trovo a mio agio in
  • Abbiamo un'azienda esterna che gestisce il progetto e sono una società ASP.Net.
  • abbiamo intenzione di assumere altri 1-2, ma abbiamo bisogno di sapere quale direzione stiamo andando nella prima

Ambiente:

  • utenti generali sono su Windows Server 2003 con Servizi terminal.Si connettono utilizzando thin client WYSE su una connessione RDP. Il personale amministrativo ha i propri PC con XP o superiore. Agli utenti è consentito specificare la propria risoluzione sebbene siano limitati a utilizzare IE come browser web.
  • Altre località collega alla nostra rete tramite una connessione MPLS

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

Sono particolarmente interessato a sentire gli sviluppatori che hanno esperienza con ASP.Net e WPf.

+2

Che cosa succederà? Qualcosa come un sistema CRM? Potresti voler cercare prodotti esistenti e costruirli invece di costruire tutto da zero. – TeaDrivenDev

+2

Abbiamo esaminato i prodotti esistenti, ma non c'è nulla di adatto alle nostre esigenze aziendali. L'idea è di costruire qualcosa che combini il meglio di ciò che abbiamo visto e integri le nostre idee. – Rachel

+0

Questo verrà distribuito su una intranet aziendale o simile, dove ti senti a tuo agio a spingere nuove versioni? – cwap

risposta

39

Motivi per scegliere WPF:

  • Molto più veloce e più facile di sviluppo ASP.NET e jQuery
  • Molto più facile da implementare un rapido caricamento sfondo incrementale dei dati
  • Molto più facile da implementare la cache sul lato client di dati comunemente usati (importanti per gli uffici remoti)
  • Trasferimento dati più efficiente dal server (può utilizzare le funzionalità WCF avanzate non disponibili per il browser Web)
  • Keyboar navigazione d meglio, perché si può facilmente definire scorciatoie, ecc, e non essere limitato dal browser
  • Manutenzione in testa molto meglio usando il modello MVVM integrazione
  • Softphone facile

Motivi per scegliere ASP.NET e jQuery:

  • Nessuno che io possa vedere

In te Scenario Definirei sicuramente WPF.

+6

"Motivi per scegliere WPF: • Sviluppo molto più rapido e semplice di ASP.NET e jQuery" È necessario utilizzare una versione diversa di wpf rispetto a me. Prendi qualcosa di fondamentale come la convalida dell'input dove un campo dipende da un altro per vedere quanto è difficile ottenere in wpf – Daniel

+2

Effettuo regolarmente questo tipo di convalida dell'input. Cosa trovi difficile a riguardo? Più precisamente: da quanto tempo usi WPF contro ASP.NET e stai utilizzando MVVM per lo sviluppo di WPF? WPF è un codice molto meno completo e molto meno debugging, quindi è più veloce e più facile da sviluppare. –

+1

Ho fatto input/validazione di base sia in ASP.Net che in WPF e lo trovo più semplice in WPF. La convalida è facile da integrare nei modelli (o ViewModels se i dati provengono da più modelli) e l'interfaccia utente raccoglie automaticamente gli errori di convalida e visualizza il modello di errore di convalida. – Rachel

8

Prima di tutto, vorrei sedermi e scrivere i requisiti e le specifiche aziendali. Non importa quale tecnologia utilizzi: una pianificazione adeguata influirà sulla tempistica del tuo progetto più che sulla scelta della tecnologia. Ciò è particolarmente vero per un'app personalizzata in-house.

Per quanto riguarda lo sviluppo, vorrei prendere i requisiti e disporre le funzionalità del back-end. In realtà implementerei il backend in WCF, indipendentemente dalla tecnologia client, in questo modo potreste utilizzare il meglio di entrambi i mondi se necessario (ad esempio per l'integrazione del telefono, potreste scrivere un'app WPF autonoma). ASP.NET con jQuery può facilmente utilizzare i servizi WCF (versione JSON o XML) insieme al client desktop.

Per quanto riguarda lo sviluppo dei moduli client, ciò dipende in gran parte dall'esperienza degli sviluppatori e dai piani futuri. Non ho intenzione di addentrarmi in vantaggi/svantaggi nello sviluppo di software Web: ci sono un sacco di articoli negli ultimi 10 anni sul software cloud/web based (ad esempio salesforce). Preferirei concentrarmi sui risultati finali: qual è la tua squadra più a suo agio con oggi e in futuro. C'è un'enorme differenza tra WPF e lo sviluppo web, dal punto di vista dello sviluppo, e richiede un'esperienza completamente diversa.

+0

Sono d'accordo, ci dovrebbe essere quasi sempre un livello di servizio a cui possono connettersi diverse interfacce, in questo modo è possibile separare dati/logica da presentazione e interazione – Homde

2

Alcuni punti da effettuare per ASP.NET:

Il pool di sviluppatori ASP.NET è molto più grande poi la piscina di sviluppatori WPF. Ciò significa che è possibile trovare più facilmente gli sviluppatori ASP.NET qualificati.

ASP.NET è probabilmente più a prova di futuro, la possibilità che WPF ottenga grandi cambiamenti e che sia difficile portarla nelle versioni successive è probabilmente maggiore. Ricorda anche che l'attenzione di MS sembra essere su Silverlight, quindi potrebbe esserci un consolidamento lungo la strada che rende WPF obsoleto.

Un altro sistema eco maturo di ASP.NET offre ulteriori soluzioni pronte all'uso per risolvere i problemi.

Con più sedi, potresti saltare alcuni livelli e andare direttamente a un sito web?

+1

Sono d'accordo sul pool di sviluppatori, anche se non so quanto sia significativo in questa economia. Non sono d'accordo sulla prova del futuro. ASP.NET sta diventando vecchio, fragile e gonfio. WPF si sta spostando su dispositivi sotto forma di Silverlight. Prima o poi vedremo WPF/Silverlight targeting HTML5 e quindi ASP.NET sarà cronologia. –

+0

Ho pensato che sarebbe stato divertente aggiornare questo commento perché si trattava di prevedere il futuro. ASP.NET viene ora sostituito da ASP.NET Core per farlo funzionare su tutte le piattaforme ed essere meno gonfio. Silverlight ha tagliato lo sviluppo, ma WPF sta ancora ricevendo aggiornamenti, ma sono focalizzati sul desktop di Windows. – Adam

9

perché non considerare una soluzione ibrida - Silverlight

Con Silverlight si ottiene la maggior parte della bontà e statefullness di WPF (con quasi esattamente la stessa XAML e codice), più si ottengono le caratteristiche di implementazione di ASP.NET

Molte persone considerano Silverlight il prossimo passo dopo ASP.NET/AJAX e fornirebbe sicuramente tutti i vantaggi di WPF rilevanti per il proprio scenario.

+0

Abbiamo considerato Silverlight, ma preferiamo WPF perché ha una libreria di controllo più ampia e più funzioni di Silverlight. – Rachel

+2

@Rachel: dopo aver utilizzato WPF per creare applicazioni line-of-business simili per poco più di un anno, e dopo aver trascorso gli ultimi due mesi a creare un'applicazione line-of-business di Silverlight, sono d'accordo che per lo scenario WPF è superiore scelta per Silverlight per i motivi che hai indicato. –

+1

Silverlight è WPF su steroidi. 1) SL è la tecnologia web, quindi nessun problema con la distribuzione/aggiornamento. 2) SL è framework di presentazione, quindi l'architettura è per definizione multitier. 3) SL dispone già di una ricca serie di controlli (commerciali e gratuiti) 4) SL è più crossplatform di WPF. 5) SL utilizza quasi lo stesso XAML di WPF. 6) SL ha servizi Ria e servizi dati Wcf per far avanzare l'accesso all'entità web. 7) Softphone/Scanner possono essere implementati tramite COM-Interop. Quindi, se avete bisogno di una soluzione solo per Windows, andrei personalmente con WinForms, a causa di una base di controllo superiore. Se hai bisogno di web - SL se la strada da percorrere. –

4

Hi
Penso The question at issue is Windows-application or Web application (WPF per win-app VS asp per il web-app), Quale è meglio per voi e il vostro progetto?. In questo caso la tua piattaforma è di rete e il tuo programma deve funzionare sulla rete. quindi per questo utilizzo Web-app è meglio, ma ci sono molti punti esistenti che possono prendere decisioni difficili. La piattaforma di rete ha una grande sfida (secondo la mia esperienza personale)

Lavorare con l'app web da asp.net è quasi difficile. devi provare a gestire molte cose per l'app web (tempo richiesto, gestione delle sessioni, anche scarsa interfaccia utente rispetto a WPF, j-query, ecc.). Ricorda che questo non è facile come un semplice sito web.

Ma win-app fa bene alla rete con questa condizione: "rete locale" (mpls è quasi la stessa). Sviluppare in modo vincente l'app vincente è più semplice della web-app ("Almeno numero di utenti esperti nello sviluppo di programmi in rete"). per questo caso WPF ha molte cose positive (interfaccia utente, comando, ecc.) ha anche molti punti di sfida (come il multi-threading e la mancanza di sviluppatori esperti in questo campo). I'm rather with wpf than asp but decisions is yours

E gesso punto da buona cosa Silverlight, ma se si desidera utilizzare questo dovete guardare quadro prisma: http://compositewpf.codeplex.com/
Recentemente ho sviluppato un progetto a parte con ASP e Silverlight (quadro prisma). lo sviluppo della versione silver-light è troppo difficile e richiede più tempo rispetto alla versione asp.net but at the end SL-ver have great look nothing else!

Burns indicava problemi relativi a wpf. considerare anche post di Artemiy. le condizioni ambientali sono le stesse per entrambi. WPF/ASP può funzionare con scanner e softphone cuz the base of both is on C# and .net library
Infine, qualunque sia la tua decisione, devi assumere uno sviluppatore avanzato, almeno sviluppare un'app business per la piattaforma di rete.

+1

Lo sviluppo della versione asp.net è troppo difficile e richiede più tempo, a causa di jax, jquery, javascript, fine tuning del browser ecc. Lo sviluppo della versione di Silverlight è molto più semplice, grazie a C#. Librerie NET, XAML, codice condiviso (tra server e client) e storia di debug incomparabile. –

+0

@Lex: totalmente d'accordo. +1 per menzionare la storia del debugging. –

+0

@Lex il mio mezzo di sviluppo della luce argentata con il modello del prisma non semplice luce argentata. conosci il presentatore, l'interfaccia, il controller, il servizio, ecc. Sviluppa sia lo sviluppo che il debug. – Rev

5

WPF è la strada da percorrere, senza dubbio. Sono d'accordo con tutto ciò che ha detto @Ray Burns.

Perché:

  • Si otterrà una più ricca, lisciante, applicazione più veloce.
  • Sarà più semplice creare .
  • L'integrazione Softphone/Scanner (cioè hardware) richiede i plug-in del browser ecc. E questo può essere un incubo con un'applicazione basata su browser.
  • La navigazione tramite tastiera è ancora migliore con le applicazioni native.
  • IME La manutenzione è più semplice con le applicazioni WPF.

Utilizzare definitivamente WCF per fornire il back-end tramite Entity Framework, vedere The Entity Framework In Layered Architectures. Puoi avere una migliore integrazione con il back-end in un'applicazione nativa perché può essere chiamata in linea, senza bisogno di callback o ajax. Ho sviluppato componenti per WPF collegati tramite EF alla logica di business per fornire controlli consapevoli per cose semplici come la convalida. È straordinariamente bello rilasciare un campo del nome cliente su un modulo e funziona.

Per aggiungere componenti aggiuntivi è necessario crearlo con un'architettura di plugin ben congegnata. Questo è lo stesso in entrambi gli ambienti. Ho alcune considerazioni su questo ho annotato nel mio diario dal titolo Designing a plugin architecture for an application

Quando si costruisce un'applicazione WPF, si scriverà in una lingua (ad es. C#) + markup (XAML). Quando si costruisce asp.net si finisce con due lingue + markup, dato che devi sempre codificare alcuni Javascript.

Quindi, in base alle proprie esigenze, deve essere WPF/WCF (EF). Un'applicazione basata sul Web richiede molto più lavoro, più complessità e non è così bella.

Circa 12 mesi fa ho avuto la fortuna di ricevere una mano libera per scegliere la tecnologia per una nuova applicazione. Ho passato quasi un mese a valutare tutte le opzioni e sono arrivato allo conclusion che doveva essere C#, WPF, Entity Framework. Dopo aver scritto l'applicazione posso confermare che è stata la scelta giusta ...


. Sarà ancora più facile anche se i tuoi programmatori devono prima imparare WPF. WPF è molto meglio pensato, grande e bello. adorabile. Funziona bene

+1

@Plugin Architecture, per i futuri visitatori: MEF è abbastanza facile da usare e da imparare. – Zack

3

La tua app è un'app desktop o web.

Se il desktop wpf è il migliore. Se il web asp.net è il migliore.

Non caricare frontalmente lo sviluppo con lo scenario rapido. Non funziona mai bene e si traduce in un'implementazione sciatta. Prenditi tutto il tempo necessario, completa tutti i passaggi (Requisiti aziendali, Progettazione del sistema, Progettazione del programma, Codice, TEST e TEST ancora, Distribuzione)

+0

... questo è il mio quesito - "Stiamo costruendo un'applicazione e non possiamo decidere se vogliamo utilizzare. WPF ** Net Desktop ** con un server WCF, o ASP.Net ** web app ** usando jQuery" . Grazie comunque :) – Rachel