Announcement

Collapse
No announcement yet.

webbasierte Anwendung vs. Client/Server Anwendung

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

  • webbasierte Anwendung vs. Client/Server Anwendung

    Hallo Leute,

    ich bin dabei das Für und Wider von webbasierten Anwendungen im Vergleich zu Client/Server Anwendungen zu erörtern.
    Vor allem wäre ich an technischen Unterschieden interessiert.

    Kann mir jemand einen Artikel, Buch empfehlen oder sonstige Infos dazu geben?
    Wäre wirklich sehr dankbar für jede Hilfe :-)

    Gruß Oezhan

  • #2
    Hallo,

    >Vor allem wäre ich an technischen Unterschieden interessiert.

    eine webbasierende Anwendung ist zwangsläufig <b>Zustandslos</b>, d.h. die Software muss dem Anwender vorgaukeln, als ob das Programm "am Stück durchläuft". Das führt dazu, dass der Zustand zwischen den einzelnen Abrufen der Seiten entweder auf der Client-Seite (Bsp. Cookies) oder auf der Server-Seite (Bsp: Datenbank) zwischengespeichert werden muss. Aus diesem Grund ist eine Webanwendung zwangsläufig komplexer und schwerfälliger zu entwickeln.

    Es gibt in der letzten Zeit verschiedene Ansätze, wie diese Komplexität vor dem Entwickler verborgen werden kann (siehe <i>IntraWeb</i> von Delphi 7 beziehungsweise <i>Web Forms</i> von .NET).

    Comment


    • #3
      Hi,

      Theoretisch gibt es keine Unterschiede ;-)

      Um komplexerere, webbasierte Anwendungenen wirklich zu realisieren lautet jedoch z.Zt. das einzige gültige Stichwort JAVA.

      Voteil:
      - umfassende Plattformunabhängigkeit.

      Nachteil:
      - bedingter Funktions- und Leistungsumfang im Vergleich zu nativen CS-Lösungen.

      Gruss
      Gesin

      Comment


      • #4
        Hallo,

        &gt;..Theoretisch gibt es keine Unterschiede ;-)

        diesen Satz kann man - bei allem Respekt - so nicht stehen lassen. Nehmen wir einmal eine triviale Anwendung: Der Anwender hat ein Eingabefeld, eine Listbox und einen Button. Immer dann, wenn er auf den Button klickt, soll der momentan im Eingabefeld stehende Wert in die Listbox aufgenommen werden.

        Bei einer Windows-Anwendung mit einem TForm ist die Sache ganz einfach - die neue Zeichenkette wird einfach angefügt.

        Bei einer Web-Anwendung (Benutzer klickt einen Button in seinem Browser an) löst diese Aktion jedes Mal einen neuen Seitenabruf aus, so dass es grundsätzliche technische Unterschiede gibt: <br>
        a) irgend eine Stelle muss sich merken, was vorher in der Listbox stand, <br>
        b) irgend eine Stelle muss die neue Zeichenkette anhängen, und <br>
        c) irgend eine Stelle muss den neuen Zustand an den Browser zurückliefern.

        Damit "irgend eine Stelle" <b>nicht</b> mit "der Entwickler" ausgetauscht werden muss, sind moderne Systeme cleverer. Am VB.NET-Beispiel der <i>Web Forms</i> von .NET sieht das zum Beispiel so aus, um das oben beschriebene Verhalten umzusetzen:

        a) Windows-Anwendung: Der Entwickler tippt nur die rot hervorgehobene Zeile ein:
        <pre><span lang="EN-GB">Private Sub ButtonAdd_Click(ByVal sender As System.Object, _
        &nbsp;&nbsp;&nbsp; ByVal e As System.EventArgs) Handles ButtonAdd.Click
        &nbsp;&nbsp;<font color="#ff0000">ListBox1.Items.Add(TextBox1.Text)</font>
        </span>End Sub</pre>

        b) Web-Anwendung: Der Entwickler tippt nur die rot hervorgehobene Zeile ein:
        <pre><span lang="EN-GB">Private Sub ButtonAdd_Click(ByVal sender As System.Object, _
        &nbsp;&nbsp;&nbsp; ByVal e As System.EventArgs) Handles ButtonAdd.Click
        &nbsp; <font color="#ff0000">ListBox1.Items.Add(TextBox1.Text)</font>
        </span>End Sub</pre>

        Das ist kein Tippfehler - die beiden Wege sind wirklich identisch, da sich ein Web Form über die intergrierten <i>ViewStates</i> hinter den Kulissen um die Zustandsverwaltung kümmert und so eine "Anwendung am Stück" simuliert.

        Zwar läuft ASP.NET nicht auf jedem Betriebssystem, aber es gibt ja Einsatzfälle, bei denen Effektivität gegenüber der Wahlfreiheit des Betriebssystems Vorrang hat. Und da Web Form alias ASP.NET auch bei <i>Delphi.NET</i> zur Verfügung steht, müssten wir als Delphianer noch nicht einmal die geliebte Sprache wechseln:

        <p class="ListingCode">&lt;html&gt;<br>
        &lt;h1&gt;ASP.NET und Delphi .NET (Previ<span lang="EN-GB">ew)&lt;/h1&gt;</span></p>
        <p class="ListingCode"><font color="#ff0000"><span lang="EN-GB">&lt;script
        language=&quot;Delphi&quot; runat=&quot;server&quot;&gt;</span></font></p>
        <p class="ListingCode"><span lang="EN-GB"><font color="#ff0000">&nbsp; procedure
        </font><b><font color="#800080">ButtonClick</font></b><font color="#ff0000">(Sender:
        System.Object; E: EventArgs);<br>
        &nbsp; begin<br>
        &nbsp;&nbsp;&nbsp; ShowInputText.Text := EditInput.Text;<br>
        &nbsp; end;</font></span></p>
        <p class="ListingCode"><font color="#ff0000"><span lang="EN-GB">&lt;/script&gt;</span></font></p>
        <p class="ListingCode"><span lang="EN-GB">&lt;body&gt;<br>
        &lt;form runat=&quot;server&quot;&gt;<br>
        &lt;asp:textbox id=&quot;EditInput&quot; runat=&quot;server&quot;/&gt;<br>
        &lt;asp:button text=&quot;Los gehts!&quot; OnClick=&quot;</span><b><font color="#800080">ButtonClick</font></b><span lang="EN-GB">&quot;
        runat=&quot;server&quot;/&gt;<br>
        &lt;/form&gt;<br>
        &lt;p&gt;&lt;b&gt;&lt;asp:label id=&quot;ShowInputText&quot; runat=&quot;server&quot;/&gt;&lt;/b&gt;&lt;/p&gt;<br>
        </span>&lt;/body&gt;<br>
        &lt;/html&gt;</p>

        P.S: Auch der Delphi.NET-Programmcode wird von .NET nach jeder Änderung am Sourcecode <b>automatisch</b> beim ersten Abruf der Seite in eine DLL (.NET-Assembly) compiliert. Sobald der HTTP-Request-Aufruf für diese ASPX-Seite beim IIS eintrifft, parst die ASP.NET-Laufzeitumgebung den Inhalt dieser Datei und beauftragt den in der XML-Konfigurationsdatei <i>Web.config</i> festgelegten <i>Provider</i> (hier Delphi), daraus eine Page Class zusammenzubauen. Jedes Verzeichnis kann über eine eigene <i>Web.config</i> eine andere Sprache anmelden, in meinem Beispiel sieht der Inhalt der <i>Web.config</i> (jede .NET-Sprache kann hier aktiviert werden) so aus:
        <pre><span lang="EN-GB">&lt;configuration&gt;
        &nbsp;&lt;system.web&gt;
        &nbsp; &lt;compilation <font color="#ff0000">debug=&quot;true&quot;</font>&gt;
        &nbsp;&nbsp; &lt;assemblies&gt;
        &nbsp;&nbsp;&nbsp; &lt;add assembly=&quot;</span><font color="#ff0000">DelphiProvider</font><span lang="EN-GB">&quot; /&gt;
        </span><span lang="FR">&nbsp;&nbsp; &lt;/assemblies&gt;
        &nbsp;&nbsp; &lt;compilers&gt;
        &nbsp;&nbsp;&nbsp; &lt;compiler language=&quot;</span><font color="#ff0000">Delphi</font><span lang="FR">&quot; extension=&quot;</span><font color="#ff0000">.pas</font><span lang="FR">&quot;
        </span><span lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp; type=&quot;</span><font color="#ff0000">Borland.Delphi.DelphiCodeProvider</font><span lang="EN-GB">,</span><font color="#ff0000">DelphiProvider</font><span lang="EN-GB">&quot; /&gt;
        </span>&nbsp;&nbsp;&nbsp; &lt;/compilers&gt;
        &nbsp; &lt;/compilation&gt;
        &nbsp;&lt;/system.web&gt;
        &lt;/configuration&gt;</pre>

        In diesem Fall liegt die Page Class als .pas-Datei vor, da der <b>DelphiProvider</b> für diese ASP.NET-Anwendung angemeldet wurde und somit auch für das Generieren des Sourcecodes der Page Class zuständig ist. Nachdem ASP.NET über den impliziten Aufruf des Delphi.NET Preview-Compilers die Page Class als Assembly-DLL gespeichert hat, wirft die CLR den Just-In-Time-Compiler (JIT) an, um daraus den CPU-Code zu generieren, damit alle nachfolgenden Request-Aufrufe sofort bedient werden können. <br>
        Jedes vorgefundene Server Control erhält den Auftrag, sich selbst darzustellen, indem eine HTML-Repräsentation generiert wird. Das Ergebnis dieser ASP.NET-internen Bemühungen wird als HTTP-Response an den Browser zurückgeliefert. Der aufrufende Browser erhält nur reines HTML. Es spielt somit keine Rolle, welches Betriebssystem und welchen Browser der Anwender einsetzt, solange der Browser mindestens HTML 3.2 unterstützt. In meinem Beispiel sieht der beim Browser eintreffende HTML-Output so aus:
        <p class="ListingCode"><span lang="EN-GB">&lt;html&gt;<br>
        &lt;h1&gt;ASP.NET und Delphi .NET (Preview)&lt;/h1&gt;<br>
        &lt;body&gt;<br>
        &lt;form name=&quot;_ctl0&quot; method=&quot;post&quot; action=&quot;OSFirstASPNET.aspx&quot; id=&quot;_ctl0&quot;&gt;<br>
        &lt;input type=&quot;<font color="#ff0000">hidden</font>&quot; name=&quot;<font color="#ff0000">__VIEWSTATE</font>&quot;
        value=&quot;<font color="#ff0000">dDwtNzY0NDQ0NDYzOzs+VLaKqasNaHTpqz 4VSFLk/0afkSI</font>=&quot;
        /&gt;<br>
        &lt;input name=&quot;EditInput&quot; type=&quot;text&quot; id=&quot;EditInput&quot; /&gt;<br>
        &lt;input type=&quot;submit&quot; name=&quot;_ctl1&quot; value=&quot;Los gehts!&quot; /&gt;<br>
        &lt;/form&gt;<br>
        &lt;p&gt;&lt;b&gt;&lt;span id=&quot;ShowInputText&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;<br>
        </span>&lt;/body&gt;<br>
        &lt;/html&gt;</p>

        &#10

        Comment


        • #5
          Hi Andreas,

          Doppeldoch ;-)

          Webanwendungen sind doch wohl CS-Systeme reinsten Wassers. Ich habe ausdrücklich <b>theoretisch</b> geschrieben. Das die tatsächliche Implementierung ein ganz anderes Paar Schuhe ist, steht auf einem anderen Blatt.

          Bei all Deiner Liebe zu NET, hast Du aber vergessen zu erwähnen, dass JAVA sich genau der gleichen, von Dir geschilderten Mechanismen bedient. Es gibt sogar Frevler, die behaupten das NET-Konzept sei bei JAVA abgepinnt...

          Desweiteren fehlt mir in Deiner Schilderung ein kleiner Hinweis darauf, dass JAVA heute <b>real</b> existierend und <b>plattformunabhängig</b> verfügbar ist, während NET doch wohl maximal in den Kinderschuhen steckt und im Zweifel nie plattformunabhängig wird.

          Im übrigen wäre es bzgl. der eingangs gestellten Frage und dem heutigen Zeitpunkt vielleicht auch ganz vernünftig gewesen, darauf hinzuweisen, das die Basis der Clients, auf welchen .NET-Technologien überhaupt lauffähig sind mikroskopisch klein ist.

          Gruss
          Gesin

          Comment

          Working...
          X