Laden...

Kann ich Klassen bspw aus WPF problemlos via WebAssembly für das Web umwandeln?

Erstellt von c#atriga vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.874 Views
C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 4 Jahren
Kann ich Klassen bspw aus WPF problemlos via WebAssembly für das Web umwandeln?

So langsam komme ich immer mehr in die Materie C# rein und bin dabei die letzten Tage über WebAssembly gestossen. Nachdem ich mich ein wenig eingelesen habe, hätte ich noch ein paar Frage dazu.

Bisher habe ich normale Client Anwendungen mitGUI (WPF) erstellt.
Könnte ich die Klassen (außer dem GUI) dann später umwandeln und dann nur noch via Html und CSS das GUI dazu basteln? Sicherlich muss ich ein paar kleine Veränderungen vornehmen, aber doch nicht alles oder?

Lohnt es sich derzeit noch normale Client Anwendungen zu schreiben (wohlgemerkt ich bin noch in der Anfangsphase) oder gleich auf die Webgeschichte stürzen?

T
2.219 Beiträge seit 2008
vor 4 Jahren

Man könnte bei einfachen Sachen HTML Seiten mit CSS über eine WebView rendern lassen.
Bei komplexen Szenarieen mit JS oder zu neuen Featuren wird dies mit den Standard Controls wegen veralteten Controls scheitern.
Dann kannst du ggf. schauen ob du ein Custom Control findest was z.B. auf der Chrome Render Engine basiert.

Wenn es aber komplex in Richtung HTML, CSS und JS gehen soll kommst du um ASP .NET im C# Bereich nicht herum.
Das ist dann aber Web Technik und ein anderer Sektor als Desktop GUI via WPF/Winforms.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 4 Jahren

Hat es dann überhaupt noch Sinn native Client Anwendungen unter Windows mithilfe von Wpf zu schreiben? Rede da nicht im Enterprise Sequemt sondern eher kleinere Unternehmen und private Programme.

Wenn man eine Web App schreibt, läuft diese dann doch im Browser vom Smartphone, oder?
Soll es sich wie eine native App verhalten, geht dies auch oder nur via Browser?

16.807 Beiträge seit 2008
vor 4 Jahren

Nein, 1:1 ist da nichts - vor allem keinerlei Zeug aus dem WPF Namespace.
Auch ist die Anwendungsarchitektur von Desktop-Applikationen eigentlich eine andere.

Wenn man eine Web App schreibt, läuft diese dann doch im Browser vom Smartphone, oder?

Nein.

Es gibt im Webbereich Server Side Applications(NodeJS, ASP.NET..), die auf dem Server laufen und Client Side Applications(Angular, Vue, React, Blazor), die im Browser laufen.
HTML wird immer vom Client interpretiert.

Hat es dann überhaupt noch Sinn native Client Anwendungen unter Windows mithilfe von Wpf zu schreiben?

Fat Client Apps werden immer weniger, sofern es sich nicht um spezielle Applikationen wie CAD/CAM handelt.
Ansonsten sind auch im Enterprise-Bereich allein Aufgrund der Verteilung und Skalierung immer mehr die Web- bzw. Multi-Plattform-Applikationen angesagt.

Enterprise ist extrem scharf auf SaaS (Software as a Service) - und das sind aus Nutzersicht i.d.R. Webapplikationen.

C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 4 Jahren

Also lohnt es sich gar nicht mehr, sich mit WPF und nativer Client Anwendungen zu beschäfitgen? Irgendwie sehe ich da gerade keinen Sinn drin.

Bisher verstehe ich folgendes bei den Web Applikationen:

Ich schreibe eine ASP.NET Anwedung welche dann im Netz auf einem Server läuft?
Anschliesend kann ich ein Client schreiben (auch mit html,css und javascript) und dann via Browser aufrufen und benutzen als wenn es ein nativer Client wäre?

Könnte also auch einen Client mit Swift schreiben, welcher auf den Server zugreift und mit diesen kommunizieren kann. Und das ganze dann via IOS Gerät nutzen?

Was würdet ihr mir als Einsteiger empfehlen. Gar keine WPF Anwendungen mehr schreiben und gleich ins ASP.NET eintauchen?

16.807 Beiträge seit 2008
vor 4 Jahren

Also lohnt es sich gar nicht mehr, sich mit WPF und nativer Client Anwendungen zu beschäfitgen? Irgendwie sehe ich da gerade keinen Sinn drin.
/quote]
Dann musst über den Tellerrand schauen.
Gibt weiterhin Anwendungsfälle für Desktop Applikationen.

Ich schreibe eine ASP.NET Anwedung welche dann im Netz auf einem Server läuft?
Anschliesend kann ich ein Client schreiben (auch mit html,css und javascript) und dann via Browser aufrufen und benutzen als wenn es ein nativer Client wäre?
Nein, so funktioniert i.d.R. keine Serverseitige Anwendung.

Serverseitig:
Du schreibst eine Webanwendung, die auf einem Server läuft, und HTML ausliefert, die von einem Browser angefragt werden kann.

Clientseitig:
Du schreibst eine JavaScript(*) Anwendung, die HTML-Code in Form von HTML-Komponenten erzeugt und vom Browser dargestellt werden kann.
Dynamische Informationen müssen zB. via REST von einer Serverseitigen Anwendung geliefert werden.

Könnte also auch einen Client mit Swift schreiben, welcher auf den Server zugreift und mit diesen kommunizieren kann. Und das ganze dann via IOS Gerät nutzen?
Sowas nennt sich ein Http Api Service, zB. REST und Json.
Was würdet ihr mir als Einsteiger empfehlen. Gar keine WPF Anwendungen mehr schreiben und gleich ins ASP.NET eintauchen?
Kann niemand pauschal beantworten, weil keiner hier Deine genauen Anforderungen kennt.
Dein Job wäre die Anfordungen insgesamt aufzunehmen und sich dann anhand dieser Anfordungen für Technologie(n) zu entscheiden.
Und zu den Anforderungen gehört natürlich auch das Nutzerverhalten, die Geräte, die Skills der Entwickler...

Sofern es Webtechnologien werden sollen, dann sei Dir gleich bewusst, dass Webanwendungen i.d.R. viel komplexer sind als Desktop-Anwendungen.
Alleine was Security, Protokolle, Threads, Isolierung, Standards, Tooling, Frameworks.. betrifft.

C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 4 Jahren

So langsam verstehe ich gar nichts mehr.

Folgendes verstehe ich zur Zeit bzw. denke ich das ich es verstehe:

Ich schreibe in C# (oder Java ) eine Anwendung welche auf einem Applikation Server im Netz läuft. Diese bekommt Anfragen von Clients welche er auswertet/berechnet und eine Antwort zurückliefert. (aber in welcher Form, schon als HTML oder nur via String,int...?)

Als Client habe ich (Desktop Anwendung oder APP) eine Oberfläche wo ich z.B. in ein Formular eintrage und an den Server sendet. Dieser werdet es aus und schickt die Antwort zurück welche ich mir anzeigen lassen kann?

Oder wie soll ich mir das vorstellen?

Nein, so funktioniert i.d.R. keine Serverseitige Anwendung.

Serverseitig:
Du schreibst eine Webanwendung, die auf einem Server läuft, und HTML ausliefert, die von einem Browser angefragt werden kann.

Wie soll ich mir das vorstellen? Stell mir das gerade so vor wie als würde das Programm auf meinem Desktop laufen, nur halt irgendwo auf einem Server.

Clientseitig:
Du schreibst eine JavaScript(*) Anwendung, die HTML-Code in Form von HTML-Komponenten erzeugt und vom Browser dargestellt werden kann.
Dynamische Informationen müssen zB. via REST von einer Serverseitigen Anwendung geliefert werden.

Könnte ich auch eine Desktop Anwendung schreiben, welche sich die Daten vom dem Server holt?
Damit könnte ich das "berechnen" den Server machen lassen und bräuchte ich nur einzelne Clients schreiben. Somit müsste ich die Algorithmen nur einmal entwerfen in einer Sprache und nicht für jedes einzelne neu.

T
2.219 Beiträge seit 2008
vor 4 Jahren

Ohne deine genauen Anforderungen zu kennen ist es schwierig dir hilfereiche Informationen zu geben.
Aber Abt hat dir schon einen guten Hinweis gegeben.

Dein Server wäre z.B. ein ASP .NET Web mit einer HTTP API.
Der Client kommuniziert dann über HTTP als Protokoll mit dem Server.
Hier stellt der Client also stumpfe HTTP Anfragen und bekommt vom Server auch HTTP Anworten mit entsprechenden Daten(JSON, XML o.ä.).

Je nachdem was deine API dann für Möglichkeiten anbietet, kannst du dir z.B. per GET Daten abholen.
Der Client muss dazu nur die Url aufrufen und bekommt dann als Response z.B. eine Liste (Antwort z.B. JSON Array) zurück.

Die Antworten musst du dann nur in entsprechende Klassen Objekte Deserailisieren und schon hast du Daten vom Server abgeholt.

Auf Client Seite kannst du dann eine andere Technik wie WPF verwenden, wenn du es den willst.
Der Client und Server können auch technisch unterschiedliche Platformen haben solange sie das gleiche Protokoll zur Kommunikation verwenden.

Du musst dich nur mit dem entsprechenden technischen Umsetzungen erst einmal vertraut machen.
Ohne Grundwissen hilft es dir nicht wenn wir dich hier mit allen möglichen technischen Ansätzen erschlagen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.807 Beiträge seit 2008
vor 4 Jahren

Ich schreibe in C# (oder Java ) eine Anwendung welche auf einem Applikation Server im Netz läuft. Diese bekommt Anfragen von Clients welche er auswertet/berechnet und eine Antwort zurückliefert.

So funktioniert das HTTP Protokoll.

aber in welcher Form, schon als HTML oder nur via String,int...?)

Wenn die Seite vom Browser aufgerufen werden soll, dann eher HTML.
Soll es ein Service sein dann schau Dir REST an.

Das ist alles standardisiert; da muss man nichts selbst erfinden.
Das ist übrigens auch alles in den Microsoft Docs - mit Samples.
Man muss nur mal die Docs besuchen 😉

Könnte ich auch eine Desktop Anwendung schreiben, welche sich die Daten vom dem Server holt?

Auf diesem Prinzip basiert die seit ca. 1980 bestehende und sehr weit verbreitete Server-Client-Architektur =)

Mein Tipp:

  • Grundlagen Web anschauen
  • Grundlagen Server Client Communication anschauen
  • Grundlagen Architekturen anschauen

Dann wuppt das.

C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 4 Jahren

Ok jetzt hab ich es soweit verstanden. Gibt es zufällig ein gutes Buch welches ihr mir zum Thema empfehlen könntet. Auch über Tutorials zum Thema wäre ich dankbar.
Im Netz gibt es zwar viel zu lesen, doch zweifel ich manchmal an der Seriosität der Quellen.

Zu meinem Projekt:
Ich möchte für mein Hobby Tool schreiben, welche verschiedene Verschlüsselungen ver-und wieder entschlüsselt. Ab und an braucht man dies auch mal unterwegs.

Könnte ich schon anfangen die Klassen in C# zu schreiben, welche die Funktionen dann auf dem Server ausführen oder doch anders ran gehen?

Anfangs dachte ich an eine Desktop Anwendung und dann zusätzlich das ganze als App umzusetzen.
Der Gedanke mit dem Netz würde natürlich viel besser passen.