Laden...

WPF im Browser - Richtig oder falsch?

Erstellt von Jacyrio vor 8 Jahren Letzter Beitrag vor 8 Jahren 5.868 Views
J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 8 Jahren
WPF im Browser - Richtig oder falsch?

Hello,

ich hab da mal eine Grundsatzfrage zu WPF. Ich habe mich mit WPF die letzte Zeit relativ oft und intensiv beschäftigt. Möchte nun aber anfangen Programme zu bauen, die ich zum einem in einem Browser darstellen kann (so wie heute oft üblich) und zum anderen das selbe Programm auf einem Smartphone oder Tablett (Reponsive? soweit ich gelesen habe!).

Die Programme die ich Programmieren möchte sind keine üblichen Webseiten fürs Internet, sondern wirklich Programme im Umfeld von ERP-Systemen oder ähnliches.. als Beispiel: Erstellen von Bestellungen durch einen Verkäufer.

Jetzt gibt es natürlich viele verschiedene Technologien, womit ich sowas lösen könnte. ASP .NET, HTML / CCS und evtl. auch WPF.

Mir stellt sich die Frage, ob ich mit WPF die richtige Technologie gelernt habe?! Bisher habe ich nur WPF-Windows gebaut.. hatte also bisher mit WPF und Browser noch nichts zu tun.. deshalb ein paar Fragen:

  • WPF im Browser darstellen möglich? Soweit ich schon weiß, ja.. aber ich muss dann wahrscheinlich noch ein Zusatzmodul auf dem PC installieren.. ähmlich wie bei JAVA

  • WPF Programm darstellen auf einer Größe von Smartphones? Ich nehme an, dass sowas geht.. habe bei Google schon mal gesucht.. aber noch nichts vernünftiges gefunden. Hättet ihr evtl. 1-2 Stichworte für mich?

  • Gibt es eine Alternative zu WPF womit ich sowas Programmieren kann.. oder eher gesagt sogar Programmieren sollte? Ist WPF vielleicht garnicht das richtige für solche Programme?

Danke shconmal!

16.835 Beiträge seit 2008
vor 8 Jahren

WPF im Browser - also Silverlight - ist faktisch tot. Microsoft geht hier auch den strikten Weg HTML5.
Was Du mit dem Smartphone meinst weiß ich nicht. Spätestens wenn Du ein Windows Phone App Project in Visual Studio 2013/2015 erstellst wirst Du auf XAML treffen.

WPF ist jedenfalls keine Web-Technologie. Bewusst nicht.

74 Beiträge seit 2014
vor 8 Jahren

WPF im Browser - also Silverlight [...]

WPF im Browser (XBAP) != Silverlight. https://social.msdn.microsoft.com/Forums/vstudio/en-US/8bdff32d-6666-457c-8788-41b2c314bba1/wpf-browser-application?forum=wpf

Wenn du dasselbe Programm überall laufen lassen willst (also nicht nur Windows PCs, sondern auch Android, iOS, OSX usw), bist du wohl mit einer Web-Applikation am besten beraten. Hängt aber auch von anderen Faktoren ab.

WPF jedenfalls läuft nur auf Windows.

Grüße

16.835 Beiträge seit 2008
vor 8 Jahren

Du hast insofern recht, dass XBAP nicht Silverlight ist.
Das Silverlight-Team hat aber - und das ist mein letzter Kenntnisstand - auch XBAP betreut; dieses wurde aber IIRC aufgelöst. Daher diese - zugegeben technisch nicht 100,0% korrekte - Formulierung.

J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 8 Jahren

Hey,

vielen Dank für die schnellen antworten. Schade eigentlich, da ich die letzten Monate sehr viel Zeit investiert habe um mir WPF beizubringen und nun damit nicht all das machen kann, was ich machen möchte 😦

Mir stellt sich nun allerdings die Frage, welcher Weg der Richtige (auch für die Zukunft gesehen) ist? Mit welchen Technologien programmiere / designe ich am besten?

Schaue ich mir heut zu Tage moderne Software von Lieferanten an, z. B. Dokumenten Management Systeme, ERP-Systeme usw. usw... dann fällt mir immer wieder auf, dass es darauf hinaus läuft, dass die Software als Webbrowser-Anwendung zur Verfügung gestellt wird. Gleichzeitig gibt es dann eine App, die auf die selben (oder eingeschränkt) Funktionalitäten zugreifen kann, wie die Software (im Webbrowser) auf dem Computer.

Ein Beispiel eines Lieferanten, der bei uns ein DMS-System vorgestellt hat. Er hatte...

  • Eine Windows-Anwendung, die sehr flexibel war und modern aussah (Rich Media?)
  • Eine Browser-Anwendung, die nahezu identisch wie die WIndows-Anwendung aussah
  • Eine App.. wie diese Programmier war weiß ich nicht.. ob nativ oder nicht.. keine Ahnung 😦

**Nun ein Beispiel was ich (wir) zukünftig gerne machen wollen würden: **
Eine Idee wäre für unsere Abteilung eine Lagersoftware zu programmieren (um erstmal ins Thema rein zu kommen). Mit der Software würden wir gerne unseren Lagerbestand pflegen, Artikel anlegen, Mengen zubuchen und abbuchen. Außerdem soll das Ganze an unser ERP-System gekoppelt sein und die Buchungen dort in der Datenbank erstellen.

Gleichzeitig will ich eine mobile Anwendung entwickeln (für Android und iOS), mit der ich mir Bestand anschauen kann, Artikel zubuchen und abbuchen kann usw. Ich will dafür gerne auf Hardwarekomponenten des Handys zugreifen, z. B. den QR-Code oder Barcodescanner bzw. die Kamera.

Optimal wäre:

  • Eine Windows-Anwendung
  • Die selbe Anwendung im Browser
  • Eine App (iOS, Android)

Ausreichend wäre:

  • Eine Browser Anwendung
  • Eine App (iOS, Android)

Nun gibt es meiner Meinung nach verschiedene Möglichkeiten:

  1. Ich programmiere eine Software (z. B. WPF) für den Computer und eine App (z. B. mit Xamarin) für das Handy. Ich müsste DLLs programmieren, damit beide auf die selben Funktionen zugreifen. Habe aber keine zentrale Verwaltung der Software. Außerdem habe ich keine Browser-Anwendung

  2. Ich bringe mir ASP .NET bei und baue ein Reponsive Design (falls das damit geht), sodass ich eine Homepage habe und gleichzeitig eine App. Eine Windows-Anwendung habe ich so allerdings nicht. Da der Code serverseitig ausgeführt wird, gehe ich davon aus, dass ich die Möglichkeit habe auf die Hardware des Handys zuzugreifen.

  3. Ich lerne HTML5 + CSS3 + PHP und versuche das damit abzubilden. Ich gehe davon aus, dass das auch die Zukunft darstellt?! Bei ASP wäre ich wahrscheinlich zu abhängig von Microsoft im Gegensatz zu dieser Variante. Ich frage mich allerdings, wie ich bei dieser Variante Zugriff auf die Hardware des Handys bekomme?! 😦

Eine andere Möglichkeit kenne ich nicht.. ich will aber auch ungerne nun anfangen mir irgendwas beizubringen und merke dann, dass ich wieder von vorne anfangen kann, da in Zukunft auf andere Technologien gesetzt wird.

Deswegen würde ich mich freuen, wenn mir von euch einer einen Tipp geben könnte, wohin der Weg geht und wo ich am besten ansetze..

5.658 Beiträge seit 2006
vor 8 Jahren

Hi Jacyrio,

ist das dein Ernst: Du investierst mehrere Monate Arbeitszeit, um eine Technologie zu erlernen, und stellst hinterher fest, daß es gar nicht das ist, was du brauchst? Sorry, aber das halte ich für eine sehr naive Herangehensweise und auch unverantwortlich gegenüber deinem Arbeitgeber*. Es ist ja nicht so, daß diese Informationen nicht verfügbar gewesen wären!

Das trifft übrigens auch auf deine anderen Fragen zu: Du kannst selbst recherchieren, welche Möglichkeiten die jeweiligen Technologien haben, und ob die zu deinen Voraussetzungen passen.

Von PHP würde ich natürlich unbedingt abraten!

Christian

* siehe Antwort von Jacyrio

Weeks of programming can save you hours of planning

T
314 Beiträge seit 2013
vor 8 Jahren

Nun ich weiß aktuell nicht wie der Stand von Xamarin ist, aber mir wäre nicht bekannt, dass damit eine WebApp (Desktop???) erstellt werden kann.

Allerdings basieren alle diese Cross-Platform-Konzepte (Xamarin, Cordova, und wie sie alle heißen) immer auf einer möglichst stark geteilten Codebasis.

Da du in jedem Fall Webservices benötigst (App bzw. Webanwendung) kannst Du hier also diese Codebasis möglichst groß halten.

Es bleibt jedoch dennoch die Aufgabe bestehen, für die unterschiedlichen Platformen (Desktop + Web + Mobile) das dafür nötige Frontend zu erstellen.
Je nach gewählter Technologie kann es sein, dass nicht alle 3 einzeln erstellt werden müssen.

--- Edit:
Wenn Du dein WPF Wissen (zumindstens etwas) weiterverwenden möchtest, bietet sich wohl Xamarin für den App Bereich an, da hier zumindstens auch XAML zum Einsatz kommt. Allerdings darf man hier nicht vergessen, dass zusätzliche Kosten entstehen. Sofern es also sowieso erforderlich ist eine Webanwendung zu entwickeln ist vielleicht etwas wie Cordova sinnvoller.

Mir ist allerdings nicht klar, warum man zwangsläufig einen Desktop-Client und eine Webanwendung braucht.

J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 8 Jahren

@MrSparkle: Typische Sparkle-Antwort.. wie immer sehr freundlich 😄
Das war meine private Zeit, die ich in WPF investiert habe.. und ich denke da darf ich noch lernen was ich möchte 😃 Ich will WPF auch weiter verwenden, für die Programme, die ich auf der Arbeit machen soll, reicht WPF dann aber evtl nicht..

@t0ms3n: Danke für die Antwort 😃 Ich brauch nicht zwangsläufig beides.. mich interessiert nur, wie man heute am besten den Spagat zwischen Computeranwendung (Browser, Windows-Anwendung) und Smartphones + Tables schafft. Wo geht da der Weg hin und wie sieht da die Zukunft aus? Eher Website + WebApp oder geht auch noch Software (WPF) und eigene App (Xamarin)? Oder befinde ich mich bei eigener Software und APP schon in einem Bereich, was es zukünftig eh nicht mehr geben wird.. weil alle Softwareentwickler umstellen auf Browser-Anwendung + App (Responsive)?

Natürlich wäre es nicht verkehrt, wenn ich mein WPF-Wissen weiter benutzen könnte.. habe aber auch kein Problem damit, nun umzuschwenken und mir was neues beizubringen, wenn was neues für die Zukunft sinnvoller wäre..

P.S: Soweit ich gelesen habe, kann man mit Xamarin keine WebApp erstellen.. das sind eigenständige (Native) Apps..

J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 8 Jahren

Hello nochmal...

habe mich jetzt mal ein paar Stunden in das Thema Apps eingelesen und denke das WebApp (wie schon erwähnt) das richtige ist.

Da meine App-Ideen nicht unbedingt Projekte darstellen, die mega Performance benötigen und ich die App sowohl für Android als auch für iOS anbieten will, ist das also keine schlechte Idee..

Jetzt versuche ich allerdings schon seit 4h vernünftige Tutorials zu finden für Einsteiger.. finde aber kein vernünftiges.

Hat einer von euch die Erfahren mir zu sagen wie ich da am besten Anfange? HTML5 und CSS ist schon mal logisch.. hier wurde aber zB erwähnt, dass ich aufkeinenfall PHP nehmen sollte.. das würde ich auch ungerne tun.. aber was ist dann das sinnvollste bei WebApps?

Außerdem: Wieso finde ich im Internet nur Tutorials, die erklären, wie ich eine vorhandene Seite in Apps umbaue.. aber nicht wie ich von Anfang bis zum Ende eine WebApp baue?

Über noch ein paar Tipps wäre ich sehr dankbar..

16.835 Beiträge seit 2008
vor 8 Jahren

@MrSparkle: Typische Sparkle-Antwort.. wie immer sehr freundlich 😄

Ob Du Dir das auch nach 9 Jahren im Forum rausnehmen darfst, so ein Satz raus zu lassen - ich bezweifle es ...
Da muss man sich dann nicht wundern, dass sich der ein oder andere so eine Antwort merkt und in Zukunft zwei Mal überlegt, ob man hilft/antwortet.

Ich stimme aber MrSparkle insoweit zu: Du hast das versäumt, was ein professioneller Entwickler macht: evaluieren.
Es braucht keine Stunde Google um herauszufinden, dass WPF keine passende Technologie für das Web ist; vermutlich reichen da 20 Minuten und ne langsame Internetverbindung 😃

Ich kenne keine Anwendung, die sich im Web und auf dem Desktop 100% identisch bedienen lässt und 100% identisch aussieht.
Das bringt allein die Art und Weise mit, dass sowas nicht zu 100% matched.

Auch nach Deinem letzten Beitrag heute um 14 Uhr bezweifle ich, dass Du arg viel weiter evaluiert hast ausser ein paar Internet-Seiten zu überfliegen. Das entnehme ich allein den Fragen und den Aussagen.
Es gibt die WebApp nicht. Was soll das sein?

Eine Webanwendung hat immer zwei Komponenten: die Server-seitige Anwendung und die Client-seitige Anwendung.
Ob PHP oder ASP.NET spielt aus der Stack-sicht keine Rolle: beides sind Server-Technologien, die nicht für die Überfläche verantwortlich sind - sondern eben für die Business-Logik auf dem Server.
Die Webstandard sind so, dass Server- und Client-Seitige in 99% aller üblichen Technologien völlig problemlos miteinander arbeiten.

Die Technologien zu evaluieren ist aber Dein Job. Das kann und wird Dir niemand abnehmen können, da das eine langfristige Entscheidung ist, die mitunter durchaus auch folgen für das Personal haben kann.
Wir kennen ja nicht mal eure Anforderungen - und selbst Kleinigkeiten können den fokussierten Technologie-Mix, den es im Web immer gibt, völlig neu gewichten.

Zu den Server-Technologien gehören ASP.NET WebForms, ASP.NET MVC, ASP.NET WebAPI, JSP, J2EE, PHP, NodeJs.
Diese wiederum können in verschiedenen Sprachen (C#, VB.NET, Java, Ruby, JavaScript) geschrieben werden - alle mit Vor- und Nachteilen.

Client-Technologien sind eben HTML für die Struktur, CSS für das Aussehen, JavaScript für die Dynamik.
Hinzu kommen zb CSS Compiler wie LESS, SASS oder für JavaScript eben sowas wie CoffeeScript und Typescript, wobei sich letzteres definitiv derzeit durchsetzt.
Dann wären wir noch beim Stack des Clients, wie die Oberfläche zustande komm: schickt der Server das fertige HTML, das mit den Daten gefüllt ist oder reden wir von einer sogenannten Single-Page-Application zB basierend auf AngularJS, das vom Server nur die Daten holt und die Oberfläche an die Daten bindet?

Was ich damit ausdrücken will:
Du lernst das Web, wie es heute funktioniert, nicht, indem Du ein bisschen HTML5 und CSS lernst.
Das Web ist eine völlig eigene Entwicklungsschiene. Man muss hier völlig anders denken, anders arbeiten, anders programmieren.
Du bist im Web immer in eine Multi-Threading-Umgebung, die Du auch so behandeln und sichern musst. Von Themen wie Verschlüsselung und sicherer Authentifizierung will ich jetzt gar nicht so viel Worte verlieren; aber auch das lernt man nicht mal kurz so.

Deswegen auch die Aussage, dass so eine Entscheidung personelle Konsequenzen haben kann bzw. eher wird: ihr werdet mit Sicherheit Seniors brauchen, die das schon jahrelang machen und die Basis legen können.

Auch ich, nach nun über 10 Jahren reinen Fokus auf moderne, skalierbare Web-Technologien lerne jeden Tag was hinzu.
Wenn ich auch nur ein halbes Jahr aussetzen würde, hätte ich enormen Nachholbedarf.
Das Web entwickelt sich um zig Faktoren schneller als die Desktop-Welt und nimmt eher weiter Fahrt auf, als dass es abflacht.
Und bei Deinem Text, den Du von Dir gibst, glaube ich, dass Du das etwas unterschätzt.

Viel Erfolg.

F
10.010 Beiträge seit 2004
vor 8 Jahren

Full Ack.

J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 8 Jahren

@Abt.. vielen Dank für die ausführliche Antwort. Da sind viele Stichworte bei, nach denen ich suchen werde.

Nun trotzdem nochmal.. obwohl ich mich ja eigentlich nicht rechtfertigen muss.. es aber nun trotzdem tue 😃

WPF wollte ich mir vor einem Jahr beibringen und das will ich auch heute noch können.. und das Ganze hat nix mit dem Thema hier zu tun. Als ich WPF angefangen hab zu lernen, hatte ich APP-Prorgrammierung noch garnicht im Kopf.

Das kam nur jetzt auf der Arbeit.. und ich fragte mich dann natürlich, ob ich mein erlerntes Wissen aus dem letzten Jahr dafür verwenden kann oder nicht. Kann ich ja.. solang ich dann für die Programme native Apps erstelle.

Zu dem Thema ob ich stark weiter evaluiert habe: Ich hab gestern eine 9h Bus fahrt dafür verwendet einen Einstieg in das Thema zu bekommen 😉 und ich weiß auch was server-seitige und client-seitige Anwendungen sind .. drücke das wahrscheinlich nur nicht immer so aus. Ich frage mich nur, welche server-seitige Anwendung überwiegend benutzt wird.. wenn hier bereits gesagt wird "Lass die Finger ja weg von PHP". ASP .NET MVC wäre mir bzw. am liebsten.. würde mich dabei allerdings fragen, ob ich mich da nicht zu sehr von Microsoft abhängig mache, also hätte ich dann doch wieder PHP im Kopf gehabt.. und da wurde ja das oben geeschriebene erwähnt.. deshalb meine Frage welche server-seitige Sprache.

Außerdem ist mir klar, dass ich das Ganze Thema nicht von heute auf morgen lerne.. ich programmiere ja auch nicht erst seit gestern.. und auch für WPF habe ich über ein Jahr gebraucht um halbwegs Fuß zu fassen.. trotzdem fängt man bei neuen Sachen irgendwo klein an.. und das mache ich hier jetzt auch 😉

Dann will ich mal die Bus-Rückfahrt dafür verwenden weiter zu lesen und zu "evaluieren".

Nochmal vielen Dank @Abt für die Antwort..

16.835 Beiträge seit 2008
vor 8 Jahren

Ich frage mich nur, welche server-seitige Anwendung überwiegend benutzt wird..

Auch diese Frage ist prinzipiell mal Käse, weil das in den privaten und in den kommerziellen Bereich aufgeteilt werden muss.
Hinzu kommt die Sache, dass PHP zu den unperformantesten Website-Technologien gehört, die es gibt. Deshalb schreibt Facebook ihre Seite zwar in PHP aber übersetzt diese in C (HPHPc).

Im professionellen Sektor wirst Du mittlerweile daher eigentlich im Großen und Ganzen nur noch zwei Arten finden:
ASP.NET und J2EE.

Aussagen von Abhängigkeit und Co; möchte ich nicht bewerten. Wäre nicht gut.
Sowas wird eher durch die Führungskräfte entschieden, die Personal rankarren müssen.
Professionelle Web-Entwickler gehören zu den seltensten im DACH-Raum; nur mal so als Hinweis 😉

J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 8 Jahren

Danke @Abt.. damit kann ich doch was anfangen.. mehr wollte ich nicht wissen 😃

C
1.214 Beiträge seit 2006
vor 8 Jahren

wenn hier bereits gesagt wird "Lass die Finger ja weg von PHP". ASP .NET MVC wäre mir bzw. am liebsten.. würde mich dabei allerdings fragen, ob ich mich da nicht zu sehr von Microsoft abhängig mache, also hätte ich dann doch wieder PHP im Kopf gehabt..

Das kann von sehr vielen Faktoren abhängen und es muss ja nicht immer PHP sein. Es gibt auch zig andere verbreitete Web Scriptsprachen, z.B. Perl, Python oder Ruby, die wahrscheinlich alle besser sind als PHP 😉 Perl ist etwas gewöhnungsbedürftig, aber ich mag das irgendwie. Allerdings würde ich persönlich z.B. kein größeres, professionelles Projekt in einer Scriptsprache angehen wollen. Ich habe eine starke Abneigung gegen dynamisch typisierte Sprachen und würde sie für Programme > paar hundert Zeilen nicht verwenden. Gibt aber viele, die nicht so denken und meinen, mit Scriptsprachen könnte man effektiver arbeiten.
Wenn ich also entscheiden würde, würde ich eben wie Abt sagt ASP.NET oder J2EE wählen. C# finde ich schöner als Java, die ganze Infrastruktur im J2EE Umfeld gefällt mir aber besser. Inwiefern man sich von Ms abhängig machen will kann auch ein Kriterium sein. Wir verwenden in der Firma Solaris Server, also scheiden Microsoft Technologien schon mal aus. Wir haben eine Java Abteilung für die "Webpräsenz". Ich bin in der C++ Abteilung, das ist sozusagen die Kernabteilung, wir entwickeln unsere eigentlichen Anwendungen. Und dabei entstehen ab und zu auch "Webkomponenten". Und die schreiben wir eben auch in C++. Kann also z.B. auch mal in die engere Auswahl kommen. Das hat aber ganz spezielle Gründe und passt am besten zum restlichen System, ist aber natürlich nicht das, womit ich eine richtig große Webanwendung angehen würde.

A
29 Beiträge seit 2012
vor 8 Jahren

Zur Frage, ob man sich mit der Wahl von ASP.NET MVC nicht zu sehr an Microsoft kettet sollte man zumindest noch erwähnen, dass sich Microsoft mit ASP.NET 5 und .NET Core 5 stark in Richtung Open Source und Plattformunabhängigkeit bewegt hat.

Man wäre also in Zukunft bei ASP.NET nicht mehr an Microsoft-Server gebunden und mit der Wahl der sehr freien MIT-Lizenz ist auch eine gute Basis für die Weiterentwicklung durch die Community gegeben, selbst wenn Microsoft aus der Entwicklung "aussteigen" sollte (was ich Stand heute für sehr unwahrscheinlich halte).

Die Quellen sind auf GitHub zu finden.

Hier mal ein grober Überblick:
.NET Core is Open Source
Announcing .NET 2015 - .NET as Open Source, .NET on Mac and Linux, and Visual Studio Community

16.835 Beiträge seit 2008
vor 8 Jahren

ASP.NET MVC ist seit Jahren quelloffen. Nur als Hinweis.
Die Lizenzangabe von Andreas Adler stimmt aber nicht 100%: die MIT-Lizenz wird derzeit sehr wenig verwendet; dafür eher Apache 2. MIT soll aber verstärkt verwendet werden - aber nicht für alles.

A
29 Beiträge seit 2012
vor 8 Jahren

Danke für die Korrektur. Hatte in Erinnerung, dass Microsoft durchgängig MIT verwendet hat, ist aber bei ASP.NET nicht der Fall, beim Core-Framework und der Core-CLR aber schon.