ASP.Net oder WPF (C #)? [geschlossen]

31

Unser Team ist diesbezüglich gespalten und ich wollte einige Meinungen von Dritten einholen.

Wir erstellen eine Anwendung und können nicht entscheiden, ob wir .Net WPF Desktop Application mit einem WCF-Server oder einer ASP.Net-Webanwendung mit jQuery verwenden möchten. Ich dachte, ich würde die Frage hier mit einigen Spezifikationen stellen und sehen, was die Vor- / Nachteile der Verwendung beider Seiten wären. Ich habe meinen eigenen Favoriten und fühle mich voreingenommen.

Idealerweise möchten wir die erste Version der Software so schnell wie möglich erstellen, dann verlangsamen und uns Zeit nehmen, um die zusätzlichen Funktionen / Komponenten einzubauen, die wir später benötigen. Wir möchten vor allem, dass die Software schnell ist. Benutzer durchlaufen den ganzen Tag Aufzeichnungen und Verzögerungen beim Laden von Aufzeichnungen oder beim Aktualisieren von Bildschirmen beeinträchtigen ihre Produktivität.

Anwendungsdetails:

  • Ich schätze ungefähr 100 verschiedene Bildschirme für die Erstversion, und es ist geplant, später nach der Erstveröffentlichung viele weitere Bildschirme hinzuzufügen.
  • Wir möchten die bidirektionale Kommunikation für Erinnerungs- und Ereignissysteme verwenden
  • Derzeit müssen rund 100 Benutzer unterstützt werden, obwohl uns mitgeteilt wurde, dass wir ein Wachstum von bis zu 500 Benutzern zulassen sollen
  • Wir haben mehrere Standorte

Zu berücksichtigende Punkte (möglicherweise zunächst nicht, aber in zukünftigen Versionen):

  • Platz für zusätzliche Komponenten, die nach der Erstveröffentlichung hinzugefügt werden können (es gibt viele davon ... möglicherweise funktionieren sie hier besser als bei der Erstanwendung)
  • Tastaturnavigation
  • Leistung ist ein Muss
  • Produktionsgeschwindigkeit bis zur ersten Version
  • Geringer Wartungsaufwand
  • Zukünftige Unterstützung
  • Softphone / Scanner-Integration

Unsere Entwickler:

  • Wir haben einen Programmierer, der in den letzten Monaten WPF gelernt hat und der uns vorgeschlagen hat, WPF dafür zu verwenden.
  • Wir haben einen zweiten Programmierer, der mit ASP.Net vertraut ist und der möglicherweise in Zukunft bei dem Projekt hilft, obwohl er bis zur ersten Veröffentlichung nicht viel daran arbeiten wird, da seine Zeit für die Pflege unserer aktuellen Software aufgewendet wird.
  • Es gibt mich, der mit beiden gearbeitet hat und sich in beiden wohl fühlt
  • Wir haben eine externe Firma, die das Projektmanagement übernimmt, und sie sind eine ASP.Net-Firma.
  • Wir planen 1-2 weitere einzustellen, müssen jedoch zuerst wissen, in welche Richtung wir gehen

Umgebung:

  • Allgemeine Benutzer befinden sich auf einem Windows 2003-Server mit Terminaldiensten. Sie stellen über WYSE-Thin-Clients eine Verbindung über eine RDP-Verbindung her. Verwaltungsmitarbeiter haben ihre eigenen PCs mit XP oder höher. Benutzer können ihre eigene Auflösung angeben, obwohl sie nur den IE als Webbrowser verwenden dürfen.
  • Andere Standorte stellen über eine MPLS-Verbindung eine Verbindung zu unserem Netzwerk her

Was würden Sie auf dieser Grundlage wählen und warum?

Rachel
quelle
Ich liebe alle Abstimmungen, würde aber gerne weitere Meinungen dazu hören :)
Rachel
3
Was machst du, das anfänglich 100 Bildschirme erfordert ?
Steven A. Lowe
Diese Schätzung enthält viele Teilbilder. Beispielsweise ist der Hauptbildschirm in eine Reihe von "Teilen" unterteilt, die je nach den Bedürfnissen des Benutzers hinzugefügt, entfernt, verschoben oder in der Größe geändert werden können. Jeder hat seinen eigenen Datensatz, eine eigene Bearbeitungsansicht und einen eigenen Satz von Aktionen, die ausgeführt werden können. Ich zähle diese als getrennt anstelle eines einzelnen Bildschirms, da jeder sehr unterschiedlich ist.
Rachel
Verwenden Sie .NET MVC 3, JQuery und HTML5
Oliver Picton
1
Hi @kmote, wir sind mit WPF gelandet und waren sehr zufrieden mit der Entscheidung. Es ermöglichte eine viel größere Flexibilität beim Erstellen der Benutzeroberfläche, und ich fand, dass die Erstellung im Vergleich zu einer webbasierten Lösung ziemlich schnell war. Leider wurde das Projekt nach einem Jahr aufgrund anderer Prioritäten abgebrochen, aber wenn mir die gleiche Wahl erneut präsentiert würde, würde ich die gleiche Entscheidung treffen.
Rachel

Antworten:

17

Es klingt für mich wie eine WPF-App mit viel Benutzerinteraktion und potenzieller Interaktion mit Hardware. Sie können die App über Click-Once bereitstellen, sodass die Bereitstellung meist kein Problem darstellt. Ihre WPF-App kann auf einen WCF-Dienst zugreifen und die Daten als Binärdaten bereitstellen, sodass eine hervorragende Leistung erzielt wird. Ich würde anfangen, WPF zu lesen und mich so schnell wie möglich damit vertraut zu machen.

Walter
quelle
+1 Mit ALLEN diesen Bildschirmen möchten Sie wahrscheinlich so viel Wiederverwendung wie möglich in Ihre App integrieren (sowohl Code als auch GUI)
Jon Onstott,
+1 Ich denke, mit "Softphone / Scanner-Integration" erforderlich, ich denke, der einzige Weg ist WPF. Oder vielleicht ist es möglich, Silverlight
Jiew Meng
15

Wahnsinnige Randantwort: beides. Wenn Sie die Service-Schicht richtig einstellen, ist es einfach, einen Thick-Client zu haben, der alles erledigt (WPF), und einen schnellen Web-Client, der die häufigsten Aufgaben erledigt (ASP.NET). Lässt die Tür für mobile Clients usw. offen.

Wyatt Barnett
quelle
Genau das möchten wir tun ... WPF-Clientanwendung für die meisten Zwecke mit einer kompakten Webversion für Berichte oder eingeschränkten Zugriff.
Rachel
2
+1 dazu, schreiben Sie die Nicht-Präsentations-Eingeweide in der von Ihnen gewünschten .NET-Sprache - und verwenden Sie dann das beste Tool für jede Präsentationsaufgabe (z. B .: Web-App verwendet ASP.NET-Schnittstelle zu dieser Anwendung, Desktop verwendet WPF / Winforms / etc).
Heretik
Anfänglich ist ASP.NET für Benutzer möglicherweise "gut genug", insbesondere dann, wenn mehr Teile der App früher abgerufen werden sollen.
JeffO
8

Wenn Sie nur einen Programmierer haben, der WPF gelernt hat, und Sie überlegen, Ihr Team auf WPF umsteigen zu lassen, warum nicht stattdessen Silverlight verwenden? Sie erhalten viele der Vorteile von WPF und können Ihr Projekt dennoch als Web-App verlassen. Da Sie ein großes modulares Projekt planen, ist es sinnvoll, PRISM mit WPF oder Silverlight zu verwenden, um MVVM einfacher zu gestalten.

Mein Team hat kürzlich die Entscheidung getroffen, Silverlight über asp.net zu verwenden. Es war eine fantastische Wahl für uns. Wir hatten anfangs nur einen einzigen Entwickler, der Silverlight kannte. Dann haben wir alle eine Woche lang trainiert, was meistens nutzlos war, aber zumindest unsere Füße nass gemacht hat. Am Ende mussten wir zwei Auftragnehmer einstellen, die uns bei der Erstellung des Großteils unseres UI-Frameworks halfen. Die Mehrheit unseres Teams ist nach wie vor nicht zuversichtlich, was Silverlight angeht. Ich selbst, das erste Teammitglied mit Kenntnissen über Silverlight, und die beiden Auftragnehmer sind diejenigen, die den Großteil der SL-Entwicklung durchführen. Danach haben wir zwei engagierte Backend-Mitglieder. Ich würde sagen, wir haben ungefähr 2 Monate gebraucht, nachdem wir uns für Silverlight entschieden hatten, dass wir wirklich etwas Konkretes zusammengestellt hatten. Jedoch, Jetzt haben wir ein wundervolles Produkt, das sich sehr nach einer clientseitigen Anwendung anfühlt, die in einem Webbrowser ausgeführt wird und nicht lokal auf einem Computer installiert wird. Die Entwicklung dauerte insgesamt weniger als ein Jahr und wir stehen kurz vor der Veröffentlichung oder dem ersten Release-Kandidaten.

Einige Dinge zu beachten:

  • WPF oder Silverlight, je nachdem, für was Sie sich entscheiden, wird es eine angemessene Menge geben, die Ihre Entwickler lernen müssen.

  • Silverlight kann bei Bedarf nicht mehr über einen Browser verfügen. Wenn Sie dies tun, ist es ziemlich einfach, es so einzurichten, dass sich das aus dem Browser SL installierte Programm automatisch aktualisiert, wenn Sie jemals eine neue Version herausbringen.

  • Silverlight enthält nicht alle Steuerelemente, über die WPF verfügt.

Meine letzte Bemerkung ist, dass Sie sich für ASP.NET entscheiden sollten, wenn Sie Code so schnell wie möglich ausgeben möchten. Meine größten Bedenken bei ASP sind, dass ein ASP.NET-Projekt unübersichtlich und chaotisch werden kann, wenn Sie Ihr Team nicht disziplinieren. Wenn Sie der Meinung sind, dass Sie den anfänglichen Aufwand bewältigen können, um sich mit den Technologien vertraut zu machen, bieten Silverlight oder WPF viele wunderbare Möglichkeiten.

Kavet Kerek
quelle
Wir sind in einer sehr ähnlichen Situation und ich fand es interessant, Ihre Geschichte zu hören, danke. Ich werde Silverlight in Betracht ziehen, obwohl ich bisher nur WPF verwendet habe. Wenn wir mit WPF arbeiten, haben wir geplant, unseren Berichterstellungsabschnitt in Silverlight
Rachel,
Ich bin gerade dabei, eine ASP.NET-Anwendung in Silverlight zu konvertieren (Leseumschreibung) - im Grunde, weil ASP.NET nicht auf das skaliert, was wir wollen.
ChrisF
1
Nur zu Ihrer Information: Denken Sie daran, dass Silverlight kein Hauptprodukt von MS sein wird, und in einigen Fällen sagen die Leute, dass es möglicherweise eingestellt wird. Ich bin damit einverstanden, dass es gut wäre, diese Informationen zu Ihrer Liste der möglichen Nachteile hinzuzufügen.
Paige Watson
1
Ich würde WPF über Silverlight für diese Art von App nachdrücklich in Betracht ziehen. WPF kann einfach als XBAP (XAML-Browseranwendung) bereitgestellt werden, normalerweise mit nur wenigen Codeänderungen an der Konfigurationsdatei. WPF bietet alles, was Silverlight leistet, und noch viel mehr Unterstützung. Der einzige Nachteil ist, dass Silverlight möglicherweise auf mehreren Betriebssystemen (sogar Linux mit dem Moonlight-Projekt) bereitgestellt werden kann, während WPF .Net auf dem Client benötigt, also ausschließlich Windows.
Morgan Herlocker
2
Ich weiß nicht, ob Silverlight eingestellt wird, aber es gibt einen verwandten Artikel: Microsoft Shifts From Silverlight to HTML5 . Persönlich werde ich Pure Web Apps ernsthaft in Betracht ziehen, wenn dies über Desktop- oder proprietäre Plugins möglich ist
Jiew Meng,
7

Dieser Teil beschäftigt sich mit:

Allgemeine Benutzer befinden sich auf einem Windows 2003-Server mit Terminaldiensten. Sie stellen über WYSE-Thin-Clients eine Verbindung über eine RDP-Verbindung her. Verwaltungsmitarbeiter haben ihre eigenen PCs mit XP oder höher. Benutzer können ihre eigene Auflösung angeben, obwohl sie nur den IE als Webbrowser verwenden dürfen.

WPF eignet sich nicht für Remotedesktop- / Thin Client-Verbindungen. Animationen werden nicht flüssig und komplexe Bilder (auch Farbverläufe) verlangsamen die Reaktion der Benutzeroberfläche auf einen Crawl. Verwaltungsmitarbeiter mit typischen Retro-XP-Computern haben höchstwahrscheinlich auch Leistungsprobleme mit komplexen WPF-Anwendungen (wegen der geringen Menge an RAM und fehlerhaften GPUs).

Wenn Sie die WPF-Route für umfangreiche Grafiken wählen, sollten Sie auf Performance-Hacks in letzter Minute vorbereitet sein, wenn Sie feststellen, dass die Zielcomputer zehn Jahre alt sind. Halten Sie sich an statische Bildschirme und verwenden Sie .NET 4.0, da sich die WPF-Leistung seit 3.5 dramatisch verbessert hat.

Ed Andersen
quelle
Danke ... das ist eigentlich ein großes Anliegen für mich, obwohl es bisher so aussieht, als könnten wir Grafiken verkleinern, wenn der Benutzer eine RDP-Verbindung hat und die Tests gut verlaufen sind.
Rachel
2

Technisch halte ich die WPF / WCF-Kombination für die bessere Lösung.

Ich bin jedoch nicht davon überzeugt, dass Ihr bestehender WPF-Programmierer wirklich die Erfahrung für dieses Projekt hat. WPF ist eine ziemliche Verschiebung in der Programmierung von Denkprozessen gegenüber der Winform-Programmierung. Sie müssen also lange und gründlich darüber nachdenken, ob Sie wirklich über ausreichende Fähigkeiten im Team verfügen, um diese Route zu erstellen.

Michael Shaw
quelle
1
+1 "Lernen für ein paar Monate" könnte alles bedeuten - seien Sie auf eine steile Lernkurve vorbereitet.
Kirk Broadhurst
1

Interessant. Das kommt einer App, die wir gerade in meinem Unternehmen gestartet haben, auffallend bekannt vor (SIP-Telefon- und Scanner-Integration und alles).

Wir haben uns für Silverlight mit dem Schwerpunkt SOA entschieden, damit im Bedarfsfall eine WPF-App erstellt werden kann.

Platz für zusätzliche Komponenten, die nach der Erstveröffentlichung hinzugefügt werden können (es gibt viele davon ... möglicherweise funktionieren sie hier besser als bei der Erstanwendung)

Wir verwenden MEF in der Service-Schicht und konstruieren Erweiterungspunkte (Plugin-Schnittstellen, die bestimmte Punkte beschreiben, an denen wir die Erweiterbarkeit oder Integration mit anderen Systemen planen).

Tastaturnavigation

Kein Problem.

Leistung ist ein Muss

Was für eine Aufführung? Perceived Performance (Snappy-Ness) oder Number Crunching Performance? Letzteres kann ein Problem mit einer Web- / Silverlight-App sein. Im ersten Fall durchläuft unsere App viele Datensätze wie Ihre, aber wir können sie vorhersagen und Datensätze vorab abrufen, während die Benutzer an den aktuellen arbeiten. Die Ladezeiten für diesen Abschnitt unserer App sind Null.

Produktionsgeschwindigkeit bis zur ersten Version

Kommt auf das Skillset an. Aber realistisch gesehen möchte jeder so schnell wie möglich auf den Markt kommen, daher ist dies kein Argument.

Geringer Wartungsaufwand

Wie die Produktionsgeschwindigkeit ist es auch kein Argument und es wird auf Design- und Codierungspraktiken ankommen. Wenn Sie in Bezug auf Hardware-Wartung sprechen, möchten Sie möglicherweise eine Cloud-App verwenden.

Zukünftige Unterstützung

Ich bin mir nicht sicher, was das bedeutet.

Softphone / Scanner-Integration

Mit Silverlight 4 können Sie jetzt auf eine Webcam / ein Mikrofon zugreifen (wir hoffen, dass Sie Videokonferenzen zwischen Anwendungen sowie die SIP-Integration durchführen können). Wenn Sie also einen Telefonserver verwenden, können Sie selbst einen erstellen. Ich kenne keine existierenden, aber das könnte helfen.

Andernfalls müssen Sie möglicherweise etwas hässliches Hacking ausführen (Sie haben leider keinen Verweis mehr auf den / die Artikel) oder Sie haben keine andere Wahl, als eine WPF-App zu verwenden, die mit dem Dateisystem interagieren kann. SL4 kann den Browser verlassen, aber nur auf bestimmte Teile des Dateisystems zugreifen. Keiner von ihnen ist wahrscheinlich der Teil, den Sie für die Interaktion mit einem SIP-Telefon benötigen.

Meinen Sie damit Dokumentenscanner? Da bin ich mir nicht sicher. Wir verwenden Hand- / Barcodescanner. Sie funktionieren wie jedes andere Eingabegerät und sind kein Problem.

Steven Evers
quelle
1

Benötigen Sie eine äußerst reaktionsschnelle Anwendung, mit der die Benutzer den ganzen Tag arbeiten können? benutze WPF; Sie werden es einfacher finden, GUI-Komponenten in WPF über ASP / MVC auch wiederzuverwenden (IMHO)

ja, jquery et al sind großartig, silverlight ist cool, aber desktop-apps sind immer noch effizienter

Für das Back-End ist WCF in Ordnung

Steven A. Lowe
quelle
0

Ich muss Ihnen aus Gründen der Skalierbarkeit und Sicherheit empfehlen, WCF für Ihre Serviceebene zu verwenden. Für die Präsentationsebene können Sie entweder Silverlight oder ASP.NET verwenden. Silverlight ähnelt Flash, ist jedoch schwer zu verstehen und weist zunächst eine hohe Lernkurve auf, vor allem bei der Arbeit mit Daten. ASP.NET ist einfacher zu verwenden, aber Sie benötigen eine Menge Optimierungen und Javascript, um es effizient zu verwenden.

Victor Gil
quelle
1
Es ist geplant, eine WCF-Serviceebene zu haben, unabhängig davon, was wir für die UI-Ebene auswählen. Wir versuchen zu entscheiden, ob wir WPF / Desktop oder ASP / Web für die Clientanwendung möchten. Selbst wenn wir uns für eine Desktop-App entscheiden, besteht eine hohe Wahrscheinlichkeit, dass wir über ein Webportal auf eine Untergruppe von Elementen wie Berichte zugreifen können.
Rachel