Ich brauche Hilfe bei der Entscheidung zwischen silverlight / silverlight out-of-browser / wpf

10

Ich bin in der ersten Planungsphase eines Umschreibprojekts und entscheide mich zwischen silverlight / silverlight oob / wpf. TL; DR am Ende.

Es ist eine LOB-App, die Leads / Kunden / Terminkalender verwaltet. Nicht zu kompliziert. Ich recherchiere diese Optionen unabhängig an anderer Stelle, aber ich dachte, ich würde nachfragen. Einige grobe Anfangsanforderungen / vorhersehbare Probleme sind:

Ich muss in der Lage sein, eine Exe auf dem System mit Befehlszeilenargumenten (sip phone) aufzurufen.

Macht SL zum Problem

Die Benutzerbasis ist verteilt und ich möchte den Datenverkehr, der über das Kabel geht, so weit wie möglich begrenzen und einige böse Parallelitätsprobleme vermeiden

Ich kann sehen, dass dies ein Problem bei der Verwendung von WPF ist

Software - Bereitstellung / Aktualisierung muss sein , einfach tot . Einige Benutzer sind in hohem Maße nicht technisch (siehe: 70 Jahre alt, zum ersten Mal auf einem Computer)

Dies ist jetzt kein großes Problem mit der ClickOnce-App, die wir ersetzen, und ich habe die Kontrolle über die Maschinen, auf denen sie verwendet wird. Für Benutzer ist es jedoch einfacher, wenn sie nicht einmal auf die Schaltfläche "Installieren" klicken müssen. Ich weiß nicht, wie das mit Silverlight OOB gehandhabt wird.

Das Unternehmen plant eine harte Erweiterung in 12 Monaten, daher sollte die Hardwarebereitstellung schnell und einfach sein. Die Idee ist, eine Internetverbindung an einem neuen Standort herzustellen, einige Computer anzuschließen und ohne dedizierte IT-Mitarbeiter oder Server-Setup arbeiten zu können.

Macht SL ansprechend

Die Integration mit anderen Diensten (Finanzsoftware, Asterix-Server) ist kein unmittelbares Ziel, aber es ist ein letztendliches Ziel, Teil des Systems zu sein. Dies wird viel einfacher / effizienter, wenn ein einzelner Dienst für die Integration in diese sekundären Dienste eingerichtet wird und nicht alle diese Daten über das Kabel übertragen müssen

Macht SL ansprechend

Das Erstellen mehrerer 'Versionen' ist aus dem Fenster. Ich weiß nicht, wie es ist, eine Silverlight + Silverlight Oob-Version beizubehalten (wenn es überhaupt Probleme gibt)

Könnte WPF zu einer besseren Option machen.

TL; DR: Aus meiner Sicht ist eine Silverlight-App für 90% der Benutzer am sinnvollsten - die anderen 10% können sie nicht verwenden, da sie eine Exe ausführen müssen. Silverlight OOB mag ein glücklicher Mittelweg sein, aber ich weiß im Moment nicht, wie das Ausführungsmodell dafür aussieht (gibt es noch ein Konzept für serverseitigen Code? Wenn ja, wäre das möglicherweise ideal) und ich nicht wissen, wie die Bereitstellung / Aktualisierung funktioniert.

Steven Evers
quelle
Warum möchten Sie die ClickOnce-Anwendung überhaupt ersetzen? ClickOnce bietet die Möglichkeit, beim Start der Anwendung automatisch nach verfügbaren Updates zu suchen und diese herunterzuladen. Ich habe das getan, siehe replayer.codeplex.com
Marcel

Antworten:

6

Nun - interessantes Problem. Sie haben vergessen zu erwähnen, dass Sie ab SL4 eine Silverlight-Vollvertrauensanwendung haben können. Wenn Sie also an WPF denken, sollten Sie dies stattdessen in Betracht ziehen. Es müsste installiert werden (ClickOnce), aber Sie scheinen sich davon zu entfernen.

Ich habe noch nichts mit OOB gemacht, aber ich bin mir ziemlich sicher, dass dieselbe Binärdatei sowohl im Browser als auch außerhalb des Browsers verwendet werden kann, da es sich eher um eine Projekteinstellung als um ein separates Build-Ziel handelt.

"Aktivieren Sie die laufende Anwendung über den Browser."

auf der Registerkarte Silverlight des Silverlight-Projekts.

Es würde dort also kein separates Wartungsproblem geben.

Sie können eine ganze Menge Code in die Webanwendung einbauen, die die Silverlight-App hostet, und über WCF RIA Services kommunizieren. Auch hier müssten Sie mit .NET 4 und SL 4 arbeiten, um Version 1.0 davon zu erhalten. .NET 3.5 und SL 4 unterstützen nur die Betaversion der WCF RIA-Dienste. Dies würde a) die Größe des Downloads und b) die Menge an Code reduzieren, die auf dem Client ausgeführt werden müsste, aber den Netzwerkverkehr erhöhen würde.

In diesem Punkt können Sie Ihren Silverlight-Code in mehrere Assemblys aufteilen und diese mithilfe von Prism so einstellen, dass sie bei Bedarf geladen werden. Dies bedeutet, dass der Benutzer nur die Teile der Anwendung herunterlädt, die er tatsächlich verwendet. Sie können den heruntergeladenen Betrag weiter reduzieren, indem Sie das Kontrollkästchen aktivieren

"Reduzieren Sie die XAP-Größe durch Caching der Anwendungsbibliothek"

Möglichkeit.

Wenn Sie eine "extmap" -Datei für externe DLLs (Drittanbieter oder .NET) haben, bedeutet dies, dass diese in einer Zip-Datei gebündelt und separat heruntergeladen werden, um für alle xap-Dateien in Ihrem Projekt freigegeben zu werden. Dadurch werden die einzelnen xap-Dateien auf ihre Mindestgröße beschränkt und sichergestellt, dass Sie nur eine Kopie dieser anderen DLLs auf dem Clientcomputer haben.

ChrisF
quelle
1
+1: Danke für deine Eingabe @ChrisF. Ich wünschte nur, ich wüsste dich IRL, damit ich dein Gehirn auswählen kann.
Steven Evers
2

Ihre Analyse ist sehr gut.

Das einzige andere, was ich erwähnen möchte, ist, dass Ihnen nicht das gesamte Framework in einer Silverlight-Anwendung zur Verfügung steht. Diese Einschränkung kann Ihre Wahl in Richtung WPF neigen, aber Sie müssen sehen, wie diese Einschränkung für Ihre Anwendungsanforderungen gilt oder nicht.

Walter
quelle
Die App ist meistens eine grobe App, mit Ausnahme der Notwendigkeit, ein SIP-Telefon über exe + args anzurufen, sodass ich nicht glaube, dass ich einen der fehlenden Framework-Teile verpassen werde.
Steven Evers
2

Nur ein paar schnelle Dinge:

Bereitstellung und "serverseitiger Code": Eine Silverlight-App ist schlicht und einfach eine clientseitige App. Lassen Sie sich nicht von der Tatsache verwirren, dass es über den Browser bereitgestellt wird. Wenn Sie eine SL-App im Browser ausführen, laden Sie die Assemblys für diese App in einem komprimierten Paket herunter, extrahieren sie und führen sie mit dem Plugin aus. Silverlight selbst hat keine Vorstellung von "serverseitigem Code". Wenn Code auf einem Remote-Server ausgeführt werden soll, schreiben Sie einen WCF-Dienst.

Aktualisieren der App: Dies ist ein häufiges Szenario für OOB-Apps, und SL verfügt über eine integrierte Unterstützung. Google für CheckAndDownloadUpdateAsync.

Bearbeiten: Vergessen zu erwähnen - die Installation der Anwendung erfolgt innerhalb der Anwendung. Standardmäßig verfügt eine installierbare SL-App über eine Kontextmenüaktion, um sie zu installieren. Die Installation kann jedoch auch programmgesteuert erfolgen, wenn der Benutzer auf eine Schaltfläche klickt. Der Installationsstatus kann auch programmgesteuert erkannt werden. Einige SL-Apps, die nur für die Ausführung von OOB vorgesehen sind, erkennen also zunächst, ob sie installiert sind. Wenn ja, führen Sie die App aus. Wenn nicht, zeigen Sie einfach einen Begrüßungsbildschirm mit einer Schaltfläche an, mit der die App installiert wird.

Nlawalker
quelle