2009-03-13 12 views
1

Wir sind derzeit eine Business-Anwendung entwerfen, die zwei primäre Anforderungen hat es UI ist:Wie können Sie WPF- und Web-Apps am besten ansprechen?

1) laufen auf dem Desktop (WPF) für Anwender im Unternehmen eine reiche Benutzeroberfläche zur Verfügung zu stellen, mit anderen Anwendungen zusammenarbeiten, Zugriff auf die Dateisystem, offline arbeiten, mit spezieller lokaler Hardware arbeiten, etc.

2) auf ASP.NET/Ajax laufen, um mehrere Komponenten dieser Anwendung an Kunden (Internet) bereitzustellen. Leider ist Silverlight (noch) keine Option.

Obwohl wir nicht die vollständige Anwendung im Web verfügbar machen müssen, sind einige dieser Komponenten ziemlich komplex und wir möchten teilen so viel UI-Code wie möglich mit der WPF-Implementierung.

Welche Möglichkeiten haben wir, dieses Ziel zu erreichen? Gibt es ein Muster, das mit beiden Technologien gut funktioniert?

Update:

Danke für die Antworten, auch wenn sie den einen nicht füge ich suchte! :)

Ich glaube nicht, UI Generatoren sind eine gute Option. Wie Eduardo sagte, wirst du wahrscheinlich in beiden Welten Probleme haben. Ich werde aber die Skulptur sehen.

Antwort

4

Ich habe in dieser Richtung seit einer Weile jetzt gedacht, und ich habe noch eine große Antwort zu kommen. Das sagte, hier sind einige meiner Gedanken:

Wenn Sie einige Variation der verschiedenen MVP/MVC/MVVM UI-Methoden verwendet und Sie waren sehr diszipliniert in diesem Ansatz (dh nicht mischen Präsentation Zeug mit Verhalten Zeug), Sie würde wahrscheinlich weiter die Straße hinunter sein.

Sie könnten die verschiedenen DSL-Toolkits untersuchen, die aufgetaucht sind, mit der Idee, eine einfache "Sprache" zu erstellen, um Ihre Benutzeroberfläche auf hoher Ebene zu beschreiben und eine Darstellung dieser Benutzeroberfläche in WPF/ASPX zu erstellen.

Auch lief ich kürzlich über this. Ich habe keine Ahnung, wie gut es ist. Ich plane, genauer hinzuschauen, wenn ich die Chance bekomme.

+0

Danke, ich habe Sculpture heruntergeladen und werde es mir ansehen! – laktak

+0

Skulptur ist nicht das, was ich für irgendeine Anwendung verwenden möchte, also bleibe ich bei MVVM und MVC, danke! – laktak

2

Viel Glück!

Die unglückliche Wahrheit ist, dass Asp.net/ajax (das Web im Allgemeinen für diese Angelegenheit) und WPF (und heck, lassen Sie uns WinForms für eine gute Maßnahme werfen) sehr unterschiedliche Benutzeroberfläche Modelle und was gut für einen funktioniert wird nicht unbedingt gut für einen anderen funktionieren. Das heißt nicht, dass Sie keine Logik zwischen Anwendungen teilen können, die für beide Technologien geschrieben wurden, aber ich werde hier eine Weile machen, da Ihre UI-Logik nicht in dieser Kategorie liegt.

Ich habe eine Variante von MVVM für WPF und ASP.Net MVC zuletzt verwendet, und ich würde sagen, dass sie sehr gute Passungen für die Technologie zur Hand sind. Obwohl sie sehr ähnlich sind, haben sie ihre Unterschiede und ich bin mir nicht sicher, ob Sie eine Abstraktionsschicht schreiben könnten (in einer anständigen Menge an Zeit), die die großartigen Funktionen beider Technologien nutzen könnte.

Schlussendlich würde ich sagen, dass es am besten ist, einige SOA-Schemata zu befolgen und so viel wie möglich von Ihrer Geschäfts- und Datenzugriffslogik in gemeinsame Bibliotheken zu extrahieren.Schreiben Sie dann separate Benutzeroberflächen in WPF und Asp.net, um diese gemeinsamen Bibliotheken zu nutzen. Dies ist der Ansatz, den meine Firma im Moment verfolgt, und es funktioniert wie ein Zauber.

Es mag entmutigend sein, Ihre UI-Logik zweimal zu schreiben (einmal für asp.net und einmal für wpf), aber ich denke, es lohnt sich, damit Ihr Code den Mustern und Praktiken entspricht, die am besten zu diesen Technologien passen.

Abgesehen davon, obwohl Silverlight keine Option ist, haben Sie XBAP in Betracht gezogen?

1

Bei einem früheren Job haben wir etwas ähnliches gemacht. Wie Daniel Pratt sagt, beschreiben wir unsere Schnittstellen in XML und dann wird ein Render die Form, den Bericht oder was auch immer wir kreieren, erstellen.

Wir müssen eine JavaScript-Funktion zur Verfügung stellen, um einige UI-Validierungen im HTML-Rendering durchzuführen, und einen Aufruf einer Java-Funktion im Swing-Rendering.

Hüten Sie sich davor, dass Sie mit unvollkommenen Apps in beiden Welten enden.

Verwandte Themen