Silverlight- und WPF-Kompatibilität

8

Wir planen eine Anwendung, die sowohl in Silverlight als auch in WPF entwickelt wird.

Ich wollte wissen, ob, da wir die Schnittstelle in XAML implementieren werden, es in beiden Technologien kompatibel sein wird?

Welche Art von Problemen sollten wir bei der Portierung von einer Technologie auf eine andere erwarten?

    
Oscar 31.01.2011, 14:05
quelle

2 Antworten

2

Ich habe eine doppelte silverlight / wpf-Anwendung erstellt. Es ist nicht so einfach wie das Portieren eines anderen ...

Ihre ersten Schritte sollten sein, sich die Dokumentation darüber anzuschauen, wo sich wpf und silverlight unterscheiden, um Ihr Problem ein wenig besser zu verstehen XAML-Verarbeitungsunterschiede zwischen Silverlight und WPF . Hör nicht hier auf. Verstehen Sie die Entwurfsmuster, die basierend auf den verschiedenen Anwendungsumgebungen ins Spiel kommen. Jetzt fangen Sie an, eine Vorstellung davon zu bekommen, womit Sie es zu tun haben.

Beim Erstellen von UIs für wpf und silverlight muss man sehr vorsichtig mit den Steuerelementen und den verwendeten Namespaces sein. Das Teilen von UI-Code kann extrem mühsam sein. Es ist oft einfacher, zwei separate UI-Layer zu erstellen, die gemeinsam genutzte Vorlagen verwenden. Ein Großteil der UI-Funktionalität in einer Rich-Client-Anwendung unterscheidet sich von der Funktionalität in Ihrer Silverlight-Anwendung. Sie werden wahrscheinlich in Ihrer wpf-App reichhaltigere datenintensive Ansichten anbieten als im Gegensatz zu prägnanteren Ansichten in Ihrer silverlight App. Am Ende werden Sie wahrscheinlich die gleichen Ziele erreichen können, aber es wird schwieriger als nur Retarge und Deploy.

Wenn Sie eine Anwendung von Grund auf neu erstellen, würde ich Ihnen empfehlen, die wpf-Anwendung und die silverlight-Anwendung gleichzeitig zu erstellen. Auf diese Weise werden Sie Möglichkeiten finden, Service-Layer und Datenzugriffsstrategien, die in den verschiedenen Umgebungen verwendet werden, zu abstrahieren. Silverlight muss wahrscheinlich über Webdienste auf Daten zugreifen, während Ihre wpf-App möglicherweise mit einer lokalen Datenbankinstanz kommuniziert. Dies kann ziemlich einfach erreicht werden. Verwenden Sie einen IoC-Container oder etwas, um Ihre richtigen Service-Implementierungen zu injizieren. Dieser Bereich bietet die Möglichkeit für die meiste Wiederverwendung von Code. Sie können alle Ihre Ansichtslogik und Dienstlogik so erstellen, dass sie zwischen den beiden Benutzeroberflächen gemeinsam genutzt werden. Sie können auch eine gemeinsame Geschäftslogik und Datenzugriffslogik erstellen.

Wenn Sie in Ihrer Rich-Client-App keinen lokalen Datenspeicher haben, vergessen Sie den nächsten Absatz.

Wenn Sie planen, einen gelegentlich verbundenen Offline-Client (wpf app) zu verwenden, müssen Sie wahrscheinlich eine Synchronisations-Strategie und -Architektur entwickeln. Abhängig davon, wie kompliziert Ihre Datenstrukturen sind, kann dies ziemlich schwierig sein. Die Erstellung komplexer Synchronisationslogik mit verfügbaren Frameworks ist eine P.I.T.A. Sie müssen vielleicht Ihre eigenen bauen oder mit den Einschränkungen einer anderen leben.

Eine Anweisung: Beginnen Sie mit dem Testen und beenden Sie mit dem Testen

    
Justice 31.01.2011 14:54
quelle
0

Letztendlich war / ist Silverlight nur eine Teilmenge der WPF-Entität. Daher werden Sie einige der verfügbaren Elemente in WPF nicht finden, die bei der Portierung auf Silverlight fehlen. Dazu gehören:

  • Fehlende bestimmte verbindliche Unterstützung in Silverlight.
  • Feinere Möglichkeiten zum Anpassen der in WPF verfügbaren Abhängigkeitseigenschaften, die in Silverlight nicht vorhanden sind.
  • Storyboards werden im Code mit Silverlight und nicht mit Triggers von WPF ausgelöst.
  • WPF und Silverlight verwenden unterschiedliche Kernbibliotheken, was bedeuten kann, dass Bibliotheken zwischen WPF / Silverlight-Anwendungen nicht gemeinsam genutzt werden können.
  • Im Gegensatz zu WPF sind in Silverlight weniger integrierte Steuerelemente verfügbar.

Und so weiter.

Ich vermute, dass das, was Sie am meisten Probleme damit haben, die Portierung Ihrer benutzerdefinierten Steuerelemente sein wird, die, wie bei einer Menge Ihres anderen Codes, weitgehend übertragbar sein werden, aber zwischen beiden eine Reihe von Vorbehalten haben der Aufschlag und der Code dahinter. Wahrscheinlich müssen Sie die meisten WPF-Steuerelemente optimieren, um sie in Silverlight zu kompilieren, TargetType -Werte für Vorlagen, Ressourcen usw. zu ändern und ein Steuerelement durch ein anderes zu ersetzen (oder manchmal ein eigenes zu erstellen, um ein Ziel zu erreichen, ein Beispiel) davon ist die UniformGrid , die in Silverlight fehlt)).

Ich würde Links posten, aber die anderen Jungs haben anscheinend alles aufgedeckt, was du über die Webs wissen musst. Viel Spaß.

    
Grant Thomas 31.01.2011 14:12
quelle