Announcement

Collapse
No announcement yet.

Client-Server Anwendung entwickeln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Client-Server Anwendung entwickeln

    Hallo, ich habe ein Wpf Programm das nach Auswahl der Parameter eine Berechnung ausführt und eine technische Zeichnung generiert. Ebenso existiert eine Silverlight-Variante. Da Silverlight nicht mehr weiterentwickelt wird, denken wir über eine Client-Server Anwendung nach, wobei die Clientseite in HTML5 und JavaScript programmiert wird, die Serverseite im Wesentlichen auf dem bestehenden C# Quelltext aufbaut.

    Wenn im Clientprogramm irgendeine Auswahl geändert wird, erfolgt eine Meldung an den Server, und der liefert ein neues Ergebnis. Aber wie macht man das auf der Serverseite?

    Wird auf dem Server das C# Programm bei einer Anfrage neu gestartet, Parameter übergeben, das Programm liefert ein Ergebnis und beendet sich wieder? Das würde meiner Meinung nach ziemlich träge ablaufen, weil mein jetziges Wpf Programm bei jedem Start eine gewisse Zeit braucht bis es läuft, und dann auch noch die benötigten Daten laden muss.
    Oder läuft auf dem Server das Programm permanent und überwacht (FileSystemWatcher) einen Ordner, in dem die Anfragen zwischengespeichert werden?
    Oder läuft auf dem Server das Programm permanent und bekommt vom Betriebssystem eine Message wenn eine neue Anfrage eintrifft?
    Kann das Server-Betriebsystem eventuell mehrere Instanzen des Programms bedienen, oder ist es ratsam, jede Anfrage in einen eigenen Thread auszulagern?
    Kann man so ein Pogramm in 32 bit programmieren, oder sollte bzw. muss man auf 64 bit gehen?
    Gibt es Beispielcode oder Tutorials für so eine Anwendung?

    Danke - Günther
    Günther

  • #2
    wobei die Clientseite in HTML5 und JavaScript programmiert wird -> Dann sollte wohl serverseitig ein Webserver zum Einsatz kommen. Damit erübrigen sich obige Fragen.
    Bei der Programmmierung des Webanwendung kann sicherlich der Code zur Erzeugung der Zeichung genutzt werden. Aber grundsätzlich sollte das neu konzipiert werden
    Christian

    Comment


    • #3
      Wenn du aus irgendeinem Grund einen Webserver (hier insbesondere den IIS) vermeiden willst dann bringt Wcf alles mit um selbst einen Webserver zu hosten.
      Guckst du z.B. http://www.codeproject.com/Articles/...self-hosted-WC

      Wird auf dem Server das C# Programm bei einer Anfrage neu gestartet, Parameter übergeben, das Programm liefert ein Ergebnis und beendet sich wieder? Das würde meiner Meinung nach ziemlich träge ablaufen, weil mein jetziges Wpf Programm bei jedem Start eine gewisse Zeit braucht bis es läuft, und dann auch noch die benötigten Daten laden muss.
      Nein.
      Oder läuft auf dem Server das Programm permanent und überwacht (FileSystemWatcher) einen Ordner, in dem die Anfragen zwischengespeichert werden?
      Nein.
      Oder läuft auf dem Server das Programm permanent und bekommt vom Betriebssystem eine Message wenn eine neue Anfrage eintrifft?
      Nein. Dein Server lauscht einfach auf einem Port und antwortet dann drauf halt mit Html Content. Das kann der Http(s) Port sein oder auch irgendein anderer.
      Kann das Server-Betriebsystem eventuell mehrere Instanzen des Programms bedienen, oder ist es ratsam, jede Anfrage in einen eigenen Thread auszulagern?
      Letzteres das passiert aber in allen denkbaren vorhandenen Frameworks die einem in .Net einfallen bereits automatisch. Du definierst eine (Service)Klasse und der (Server)Dienst spaltet einen Thread ab in dem eine Instanz deiner Klasse laufen wird und eine Anfrage bearbeitet.
      Kann man so ein Pogramm in 32 bit programmieren, oder sollte bzw. muss man auf 64 bit gehen?
      In .Net ist das erstmal egal. Du bekommst beides geschenkt. Erst wenn du Abhängigkeiten hast die eine bestimmte Bittigkeit erzwingen wird der Gedanke relevant.
      Gibt es Beispielcode oder Tutorials für so eine Anwendung?
      Siehe oben

      Comment


      • #4
        Vielleicht hab ich in meiner Frage falsche Begriffe verwendet. Deshalb versuche ich es noch einmal ohne.


        Bei meinem Programm ist es mir wichtig, dass die wesentlichen Berechnungen und die Zeichnungserstellung
        mit demselben C# Code erfolgen wie beim WPF Programm. Da soll das Rad nicht neu erfunden werden.
        Es geht darum, dass bei Änderungen dieser Berechnungen nicht zwei verschiedene Quelltexte gepflegt werden müssen.
        Das ist natürlich nicht der Code so wie ich ihn jetzt habe, ich werde bestimmt eine Menge umkrempeln müssen.


        Wenn ich das richtig verstehe, ist die eine Möglichkeit das von Ralf verlinkte Self Hosted WCF.
        Mein Programm gibt Daten aus, die mit separatem HTML5 und JavaScript zur Anzeige gebracht werden?


        Und eine weitere Möglichkeit geht über einen WebServer, insbesondere IIS.
        Ich habe nirgendwo geschrieben dass ich so etwas vermeiden will.
        Da ist dann nix mit HTML5 und JavaScript, wenn ich Christians Antwort richtig deute?
        Wie wird denn dann die Gestaltung der Website vorgenommen?
        Wo gibt es Beispiele für so ein Projekt?


        Danke - Günther
        Zuletzt editiert von Günther Weber; 27.05.2015, 21:08.
        Günther

        Comment


        • #5
          Ich habe nirgendwo geschrieben dass ich so etwas vermeiden will.
          Es klang aber etwas danach

          Da ist dann nix mit HTML5 und JavaScript, wenn ich Christians Antwort richtig deute?
          Eher schwer zu sagen. Wenn es bisher eine direkter Kopplung zwischen Berechnung und Anzeige gab dann ist tatsächlich die Wahrscheinlichkeit das bei null anfangen einfacher ist als das vorhandene anzupassen groß (denn alten Code kann man für bestimmte Dinge ja trotzdem noch als Codebruchstelle verwenden).
          Wenn es ein gute Entkopplung gibt wie durch die Verwendung bestimmter Patterns wie MVC und Konsorten dann wäre das gerade die Gelegenheit raus zu finden warum diese Patterns so hilfreich sind

          Wie wird denn dann die Gestaltung der Website vorgenommen?
          Wo gibt es Beispiele für so ein Projekt?
          Äh man nimmt Html schreibt ein wenig Javascript und mischt CSS dazu? Die Frage ist merkwürdig, ganze nahe an "Wie programmiert man?". Da solltest du nicht mit intelligenten Antworten rechnen.
          Wenn du meinst welche konkreten Techniken sich da eigenen und ein Beispiel dazu brauchst musst du wesentlich konkreter werden. Z.b. ohne Angabe von irgendeiner Art von Interaktivität (wie, wieviel, wann) hätte ich gesagt generiere deine Zeichnung doch einfach auf dem Server in ein PDF und sende das an den Client.

          Comment


          • #6
            Parallel zum Wpf Projekt gibt es derzeit ja auch das Silverlight Projekt. Die Benutzeroberflächen (MVVM) sind zwar ähnlich, aber nicht identisch.
            Die wichtigen "Arbeitsfunktionen" sind jetzt schon identisch, deshalb glaube ich dass die Entkoppelung auch bei meinem neuen Vorhaben gelingen sollte.

            Das "Wie programmiert man?" meinte ich, weil Christian ja eine ziemlich direkte Linie HTML5 + JavaScript -> serverseitig Webserver gezogen hat.

            Interaktivität: Es gibt 9 verschiedene Auswahllisten, wovon zwei grundsätzlich unverändert bleiben.
            Abhängig von einer Auswahländerung in einer dieser Listen werden 0 bis 6 Auswahllisten neu aufgebaut und ein neues Ergebnis berechnet.
            Die 2D-Zeichnung soll erst einmal als skalierbare Grafik im Browser ausgegeben werden. Auf Knopfdruck dann als PDF, DXF oder 3D-STP.

            Hilfswilligen kann ich auf Wunsch gern einen Zugang zum bestehenden Silverlight Programm beschaffen.
            Günther

            Comment


            • #7
              Wenn du HTML und Javascript verwenden willst und darüber eine Kommunikation (Formularverarbeitung) im Browser aufsetzen willst, wirst du ohne Webserver nicht auskommen. Browser senden HTTP und erwarten ebenos eine Antwort. Das programmiert man nicht einfach mal ebenso nach.
              Wenn du bisher eine Trennung zwischen GUI und Geschäftslogik (Berechnung der Zeichnung) hattest, wirst du die Geschäftslogik wohl ohne größere Anpassung weiter verwenden können. Wenn nicht ist eine Neuprogrammierung aller Anwendung angesagt.
              Die Geschäftslogik (Berechnung der Zeichnung) wird dann bsp. nie HTML oder irgendein anderes Format erzeugen, sondern reine Daten, die sie an die GUI weitergibt. Diese dann wandelt sie in das um für was sie steht.Also die Webanwendung erzeugt aus den Daten HTML, eine Desktopanwendung erzeugt daraus WORD (bsp).
              Christian

              Comment


              • #8
                Also im Browser kommt reines HTML an, und die GUI die meine Daten in HTML umwandelt läuft auch auf dem Server und kann in C# oder PHP programmiert sein?
                Günther

                Comment


                • #9
                  Ja, je nach genutztem Webserver. Grundsätzlich würde ich von PHP absehen und dann lieber Java oder NET den Vorzug geben
                  Christian

                  Comment


                  • #10
                    Je nachdem welche Interaktion Du mit Deiner Anzeige hast, kann es auch eine Loesung sein auf dem Server einen Bild zu rendern und dieses Bild im Client immer nur zu refreshen. Kann man denn in der aktuellen Anwendung in dem was Du berechnest rumklicken oder kommen saemtliche Eingaben aus Controls drum herum und nur die Ausgabe ist eine Art berechnetes Bild?

                    Comment


                    • #11
                      Die Eingaben kommen aus den Controls, die Zeichnung ist ein berechnetes Bild.
                      Der Anwender sollte nur die Möglichkeit haben darin herum zu zoomen und die Zeichnung zu verschieben.
                      Letzteres könnte man auch mit einer Lupe realisieren wie z.B. bei manchen Amazon Produkten.


                      Was das genau für ein Webserver ist, werde ich wohl am Dienstag erfahren.
                      Günther

                      Comment


                      • #12
                        Originally posted by Günther Weber View Post
                        Was das genau für ein Webserver ist, werde ich wohl am Dienstag erfahren.
                        Arbeitest Du im Projektgeschaeft? Das ist ja gruselig dass sich die Leute die das implementieren muessen nicht mal aussuchen koennen welche Technologie sie benutzen -.-

                        Comment


                        • #13
                          Das ist ja gruselig dass sich die Leute die das implementieren muessen nicht mal aussuchen koennen welche Technologie sie benutzen -.-
                          Üblicherweise muss es da in eine bestehende Infrastruktur passen. Man will ja keinen Zoo von Techniken, Server, Framework
                          Zuletzt editiert von Christian Marquardt; 29.05.2015, 20:54.
                          Christian

                          Comment


                          • #14
                            Klar, aber wenn schon .Net bleiben ja nicht viele Alternativen. Gibt ja faktisch nur IIS mit ASP.NET MVC. OK WebForms gäbe es theoretisch auch noch, aber das ist einfach nur gruselig

                            Comment


                            • #15
                              Originally posted by fanderlf View Post
                              ...einfach nur gruselig
                              Für den Programmierer oder für den Admin?
                              Günther

                              Comment

                              Working...
                              X