SlideShare une entreprise Scribd logo
1  sur  75
PRADO
Erstellung wiederverwendbarer
  Enterprise-Webapplikationen
Carsten Lucke
                                         PRADO



Sprecher: Carsten Lucke
• Sofware-Ingenieur bei der sd&m AG,
  München
• Aktives Mitglied der sd&m Client-
  Community
• PEAR und PECL Entwickler
• Schreibt für Fachzeitschriften/-bücher über
  diverse PHP-Themen
                                                   2
Carsten Lucke
                                        PRADO



Agenda
•   Architektur von (Web-)Clients
•   Kurze Einführung in PRADO
•   Data-Binding in Web-Clients
•   Event-Binding in Web-Clients
•   State-Binding in Web-Clients
•   Wiederverwendung von Komponenten

                                                  3
Carsten Lucke
                                     PRADO




              Agenda
> Architektur von (Web-)Clients
  Kurze Einführung in PRADO
  Data-Binding in Web-Clients
  Event-Binding in Web-Clients
  State-Binding in Web-Clients
  Wiederverwendung von Komponenten

                                            4
Carsten Lucke
                                    PRADO


Technische Infrastruktur von Web-Clients




                                              5
Carsten Lucke
                                                     PRADO


Technische Infrastruktur von Web-Clients
             PC
                            Client (Browser-Teil)




             Webserver

                            Client (Server-Teil)




             Application-
             server
                             Anwendungskern



                                 Persistenz



             DB-Server
                                Datenbank




                                                               5
Carsten Lucke
                                                                    PRADO


Technische Infrastruktur von Web-Clients
       PC
                      Client (Browser-Teil)




       Webserver

                      Client (Server-Teil)
                                              Synchronisation der
                                              Zustände notwendig
       Application-
       server
                       Anwendungskern



                           Persistenz



       DB-Server
                          Datenbank




                                                                           5
Carsten Lucke
                                       PRADO


Einblicke in eine Dialogarchitektur




                                                 6
Carsten Lucke
                                                                       PRADO


Einblicke in eine Dialogarchitektur
                         GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




         Dialog

          Präsentation




          Dialoglogik




                                                                                 6
Carsten Lucke
                                                                          PRADO


Einblicke in eine Dialogarchitektur
                            GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




         Dialog

          Präsentation


                    Präsentations-
                        daten




          Dialoglogik



                        Datenhaltung




                                                                                    6
Carsten Lucke
                                                                          PRADO


Einblicke in eine Dialogarchitektur
                            GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




         Dialog

          Präsentation


                    Präsentations-           Präsentations-
                        daten                  ereignisse




          Dialoglogik


                                                Aktions-
                        Datenhaltung
                                              verarbeitung




                                                                                    6
Carsten Lucke
                                                                                     PRADO


Einblicke in eine Dialogarchitektur
                            GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




         Dialog

          Präsentation


                    Präsentations-           Präsentations-        Präsentations-
                        daten                  ereignisse            zustände




          Dialoglogik


                                                Aktions-                  Dialog-
                        Datenhaltung
                                              verarbeitung               zustände




                                                                                               6
Carsten Lucke
                                     PRADO




              Agenda
  Architektur von (Web-)Clients
> Kurze Einführung in PRADO
  Data-Binding in Web-Clients
  Event-Binding in Web-Clients
  State-Binding in Web-Clients
  Wiederverwendung von Komponenten

                                            7
Carsten Lucke
                           PRADO



Was ist PRADO?
• Framework für Web-
  anwendungen in PHP5
• RAD-Ansatz
• Programmierparadigma:
  • komponenten-basiert
  • ereignisgesteuert

                                     8
Carsten Lucke
                        PRADO



PRADO Grundlagen
•   Eine PRADO-Seite
    besteht aus:




                                  9
Carsten Lucke
                                                                  PRADO



PRADO Grundlagen
•   Eine PRADO-Seite
    besteht aus:               <com:TLabel ForControl=quot;uidquot; Text=quot;Username:quot; />
                               <com:TTextBox ID=quot;uidquot; />

    •   einem .page File für   <com:TLabel ForControl=quot;pwquot; Text=quot;Password:quot; />
        die GUI                <com:TTextBox ID=quot;pwquot; TextMode=quot;Passwordquot; />

                               <com:TButton Text=quot;Loginquot; ID=quot;submitquot;
                                            OnClick=quot;loginClickedquot; />




                                                                           9
Carsten Lucke
                                                              PRADO



PRADO Grundlagen
•   Eine PRADO-Seite
    besteht aus:


    •   einem .page File für      class LoginPage extends TPage {
        die GUI                     ....
                                  }

    •   einem .php File für die
        fachliche Logik



                                                                       9
Carsten Lucke
                                     PRADO




              Agenda
  Architektur von (Web-)Clients
  Kurze Einführung in PRADO
> Data-Binding in Web-Clients
  Event-Binding in Web-Clients
  State-Binding in Web-Clients
  Wiederverwendung von Komponenten

                                           10
Carsten Lucke
                                                       PRADO



Datenzustände „php-only“
           <form
                 action=quot;<?php echo $_SERVER['PHP_SELF']; ?>quot;
                 method=quot;postquot;
           >
              <input type=quot;textquot; name=quot;demoValuequot; />
              <input type=quot;submitquot; value=quot;Continue &rarr;quot; />
           </form>

           <pre>
             <?php
                print_r($_REQUEST);
             ?>
           </pre>


                                                                11
Carsten Lucke
                            PRADO


Datenzustände „php-only“
 •   Ausgangszustand der
     Maske




                                     12
Carsten Lucke
                                 PRADO


Datenzustände „php-only“
 •   Ausgangszustand der
     Maske



 •   Eingabe eines Wertes und
     nachfolgend Klick auf
     „Continue“




                                          12
Carsten Lucke
                                 PRADO


Datenzustände „php-only“
 •   Ausgangszustand der
     Maske



 •   Eingabe eines Wertes und
     nachfolgend Klick auf
     „Continue“

 •   „POST-back“ Zustand



                                          12
Carsten Lucke
                                                  PRADO



Datenzustände bei PRADO

<com:TForm>
   <com:TTextBox ID=quot;demoValuequot; />
   <com:TButton Text=quot;Continue &rarr;quot; />
</com:TForm>

<pre>
  <com:TExpression
      Expression=quot;print_r($_REQUEST, true)quot; />
</pre>




                                                           13
Carsten Lucke
                            PRADO


Datenzustände bei PRADO
 •   Ausgangszustand der
     Maske




                                     14
Carsten Lucke
                                 PRADO


Datenzustände bei PRADO
 •   Ausgangszustand der
     Maske


 •   Eingabe eines Wertes und
     nachfolgend Klick auf
     „Continue“




                                          14
Carsten Lucke
                                 PRADO


Datenzustände bei PRADO
 •   Ausgangszustand der
     Maske


 •   Eingabe eines Wertes und
     nachfolgend Klick auf
     „Continue“

 •   „POST-back“ Zustand




                                          14
Carsten Lucke
                                                                       PRADO



Data-Binding
                                GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




               Dialog

                Präsentation


                         Präsentations-         Präsentations-          Präsentations-
                             daten                ereignisse              zustände




                Dialoglogik


                                                   Aktions-                   Dialog-
                         Datenhaltung
                                                 verarbeitung                zustände




                                                                                        15
Carsten Lucke
                                                                       PRADO



Data-Binding
                                GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




               Dialog

                Präsentation


                         Präsentations-         Präsentations-          Präsentations-
                             daten                ereignisse              zustände




                Dialoglogik


                                                   Aktions-                   Dialog-
                         Datenhaltung
                                                 verarbeitung                zustände




                                                                                        15
Carsten Lucke
                                                                               PRADO



Data-Binding
                                        GUI-Bibliothek (JSF, PRADO, Tapestry, ...)

• Synchronisation
  zwischen Präsen-     Dialog

                        Präsentation

  tationsdaten und               Präsentations-         Präsentations-          Präsentations-
                                     daten                ereignisse              zustände

  Dialogdatenhaltung
                        Dialoglogik


                                                           Aktions-                   Dialog-
                                 Datenhaltung
                                                         verarbeitung                zustände




                                                                                                15
Carsten Lucke
                                                                               PRADO



Data-Binding
                                        GUI-Bibliothek (JSF, PRADO, Tapestry, ...)

• Synchronisation
  zwischen Präsen-     Dialog

                        Präsentation

  tationsdaten und               Präsentations-         Präsentations-          Präsentations-
                                     daten                ereignisse              zustände

  Dialogdatenhaltung
• Konvertierung         Dialoglogik


                                                           Aktions-                   Dialog-
                                 Datenhaltung
                                                         verarbeitung                zustände




                                                                                                15
Carsten Lucke
                                                                               PRADO



Data-Binding
                                        GUI-Bibliothek (JSF, PRADO, Tapestry, ...)

• Synchronisation
  zwischen Präsen-     Dialog

                        Präsentation

  tationsdaten und               Präsentations-         Präsentations-          Präsentations-
                                     daten                ereignisse              zustände

  Dialogdatenhaltung
• Konvertierung         Dialoglogik


• Formatierung                                             Aktions-                   Dialog-
                                 Datenhaltung
                                                         verarbeitung                zustände




                                                                                                15
Carsten Lucke
                                                                               PRADO



Data-Binding
                                        GUI-Bibliothek (JSF, PRADO, Tapestry, ...)

• Synchronisation
  zwischen Präsen-     Dialog

                        Präsentation

  tationsdaten und               Präsentations-         Präsentations-          Präsentations-
                                     daten                ereignisse              zustände

  Dialogdatenhaltung
• Konvertierung         Dialoglogik


• Formatierung                                             Aktions-                   Dialog-
                                 Datenhaltung
                                                         verarbeitung                zustände



• Validierung
                                                                                                15
Carsten Lucke
                           PRADO


Data-Binding „php-only“




                                    16
Carsten Lucke
                           PRADO


Data-Binding „php-only“




                                    16
Carsten Lucke
                           PRADO


Data-Binding „php-only“




                                    16
Carsten Lucke
                           PRADO


Data-Binding „php-only“




                                    16
Carsten Lucke
                                                                             PRADO


 Data-Binding „php-only“
<form action=quot;<?php echo $_SERVER['PHP_SELF']; ?>quot; method=quot;postquot;>
 <div> <label for=quot;usernamequot;>Username:</label>
       <input type=quot;textquot; name=quot;usernamequot;
               value=quot;<?php if(isset($_POST['username'])){
                               echo $_POST['username'];}?>quot;
       /> </div>
 <div> <label for=quot;passwordquot;>Password:</label>
       <input type=quot;passwordquot; name=quot;passwordquot; /> </div>

 <input type=quot;submitquot; name=quot;submitquot; id=quot;submitquot; value=quot;Login &rarr;quot; />
</form>

<?php if (isset($_POST['submit'])) { ?>
<div id=quot;resultquot;>
 <?php
  if ($_POST['username'] === 'luckec' && $_POST['password'] === 'test') {
      echo 'Access granted for ' . $_POST['username'];
  } else {
      echo 'Access denied for ' . $_POST['username'];
  }
 ?>
</div>
<?php } ?>
                                                                                      16
Carsten Lucke
                          PRADO


Data-Binding bei PRADO




                                   17
Carsten Lucke
                          PRADO


Data-Binding bei PRADO




                                   17
Carsten Lucke
                                                                             PRADO


  Data-Binding bei PRADO
<com:TForm>
  <div> <com:TLabel ForControl=quot;usernamequot; Text=quot;Username:quot; />
         <com:TTextBox ID=quot;usernamequot; />    </div>

  <div>   <com:TLabel ForControl=quot;passwordquot; Text=quot;Password:quot; />
          <com:TTextBox ID=quot;passwordquot; TextMode=quot;Passwordquot; /> </div>

   <com:TButton Text=quot;Login &rarr;quot; ID=quot;submitquot; OnClick=quot;loginClickedquot; />
</com:TForm>

<com:TPanel ID=quot;loginResultPanelquot;>
   <com:TLabel ID=quot;loginResultLabelquot; />
</com:TPanel>




                                                                                      17
Carsten Lucke
                                                                                          PRADO


    Data-Binding bei PRADO
<com:TForm>
  <div> <com:TLabel ForControl=quot;usernamequot; Text=quot;Username:quot; />
         <com:TTextBox ID=quot;usernamequot; />    </div>

        <div>   <com:TLabel ForControl=quot;passwordquot; Text=quot;Password:quot; />
                <com:TTextBox ID=quot;passwordquot; TextMode=quot;Passwordquot; /> </div>

   <com:TButton Text=quot;Login &rarr;quot; ID=quot;submitquot; OnClick=quot;loginClickedquot; />
</com:TForm>

<com:TPanel ID=quot;loginResultPanelquot;>
   <com:TLabel ID=quot;loginResultLabelquot; />
</com:TPanel>

class DataBinding extends TPage {

    public function loginClicked($sender, $param) {
      $this->loginResultPanel->setVisible(true);

         if ($this->username->Text === 'luckec' && $this->password->Text === 'test') {
             $this->loginResultLabel->Text = 'Access granted for ' . $username;
         } else {
             $this->loginResultLabel->Text = 'Access denied for ' . $username;
         }
    }
                                                                                                   17
}
Carsten Lucke
                                     PRADO




              Agenda
  Architektur von (Web-)Clients
  Kurze Einführung in PRADO
  Data-Binding in Web-Clients
> Event-Binding in Web-Clients
  State-Binding in Web-Clients
  Wiederverwendung von Komponenten

                                           18
Carsten Lucke
                                                                        PRADO



Event-Binding
                                 GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




                Dialog

                 Präsentation


                          Präsentations-         Präsentations-          Präsentations-
                              daten                ereignisse              zustände




                 Dialoglogik


                                                    Aktions-                   Dialog-
                          Datenhaltung
                                                  verarbeitung                zustände




                                                                                         19
Carsten Lucke
                                                                        PRADO



Event-Binding
                                 GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




                Dialog

                 Präsentation


                          Präsentations-         Präsentations-          Präsentations-
                              daten                ereignisse              zustände




                 Dialoglogik


                                                    Aktions-                   Dialog-
                          Datenhaltung
                                                  verarbeitung                zustände




                                                                                         19
Carsten Lucke
                                                                                PRADO



Event-Binding
• Wertschöpfungskette
                                         GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




  von Ereignissen       Dialog

                         Präsentation


                                  Präsentations-         Präsentations-          Präsentations-
                                      daten                ereignisse              zustände




                         Dialoglogik


                                                            Aktions-                   Dialog-
                                  Datenhaltung
                                                          verarbeitung                zustände




                                                                                                 19
Carsten Lucke
                                                                                  PRADO



Event-Binding
• Wertschöpfungskette
                                           GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




  von Ereignissen         Dialog

                           Präsentation

  • Präsentation-                   Präsentations-         Präsentations-          Präsentations-

    sereignisse ziehen
                                        daten                ereignisse              zustände




    i.d.R. Dialogereig-
    nisse nach sich
                           Dialoglogik


                                                              Aktions-                   Dialog-
                                    Datenhaltung
                                                            verarbeitung                zustände




                                                                                                   19
Carsten Lucke
                                                                          PRADO


Event-Binding
                       Quicksearch: <enter searchterm>          Search


      •                   Lastname                       Firstname
              Blankerts                         Arne
              Kleine                            Frank
              Lucke                             Carsten
              Mordziol                          Sebastian
              Schaufelberger                    Gerd
              Schmidt                           Stephan

      -   +




                                                                                   20
Carsten Lucke
                                                                          PRADO


Event-Binding
                                                                     Suchergebnis
                                                                     einschränken

                       Quicksearch: <enter searchterm>          Search


      •                   Lastname                       Firstname
              Blankerts                         Arne
              Kleine                            Frank
              Lucke                             Carsten
              Mordziol                          Sebastian
              Schaufelberger                    Gerd
              Schmidt                           Stephan

      -   +




                                                                                    20
Carsten Lucke
                                                                                  PRADO


Event-Binding
                                                                             Suchergebnis
                                                                             einschränken
  Editieren von
                               Quicksearch: <enter searchterm>          Search
    Einträgen
             •                    Lastname                       Firstname
                      Blankerts                         Arne
                      Kleine                            Frank
                      Lucke                             Carsten
                      Mordziol                          Sebastian
                      Schaufelberger                    Gerd
                      Schmidt                           Stephan

             -    +




                                                                                            20
Carsten Lucke
                                                                                      PRADO


Event-Binding
                                                                                 Suchergebnis
                                                                                 einschränken
      Editieren von
                                   Quicksearch: <enter searchterm>          Search
        Einträgen
                 •                    Lastname                       Firstname
                          Blankerts                         Arne
                          Kleine                            Frank
                          Lucke                             Carsten
                          Mordziol                          Sebastian
                          Schaufelberger                    Gerd
                          Schmidt                           Stephan

                 -    +



Hinzufügen/Löschen
   von Einträgen
                                                                                                20
Carsten Lucke
                                                                            PRADO


Event-Binding „php-only“

                         Quicksearch: <enter searchterm>          Search




        •                   Lastname                       Firstname
                Blankerts                         Arne
                Kleine                            Frank
                Lucke                             Carsten
                Mordziol                          Sebastian
                Schaufelberger                    Gerd
                Schmidt                           Stephan




        -   +


                                                                                     21
Carsten Lucke
                                                                               PRADO


Event-Binding „php-only“
       <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;>



                            Quicksearch: <enter searchterm>          Search




           •                   Lastname                       Firstname
                   Blankerts                         Arne
                   Kleine                            Frank
                   Lucke                             Carsten
                   Mordziol                          Sebastian
                   Schaufelberger                    Gerd
                   Schmidt                           Stephan




          -    +


                                                                                        21
       </form>
Carsten Lucke
                                                                            PRADO


Event-Binding „php-only“
       <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;>


                           Quicksearch: <enter searchterm>     Search
                           Quicksearch: <enter searchterm>     Search
         <input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; />
         <input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; />




           •                   Lastname                    Firstname
                   Blankerts                       Arne
                   Kleine                          Frank
                   Lucke                           Carsten
                   Mordziol                        Sebastian
                   Schaufelberger                  Gerd
                   Schmidt                         Stephan




          -    +


                                                                                     21
       </form>
Carsten Lucke
                                                                                    PRADO


Event-Binding „php-only“
       <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;>


                           Quicksearch: <enter searchterm>     Search
                           Quicksearch: <enter searchterm>     Search
         <input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; />
         <input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; />


         <table>
           •                     Lastname                    Firstname
         <?php foreach($persons as $line) {
            <tr>     Blankerts                         Arne
               <td><input type=quot;checkboxquot; value=quot;<?php ...?>quot; name=quot;...quot; /></td>
               <td> Kleine                             Frank
                  <a Lucke
                     href=quot;edit.php?userId=<?php ... ?>quot;>
                                                       Carsten
                    <img src=quot;edit.pngquot; />
                     Mordziol                          Sebastian
                  </a>
               </td> Schaufelberger                    Gerd
               <td><?php echo $line['lastname']; ?></td>
                     Schmidt                           Stephan
               <td><?php echo $line['firstname']; ?></td>
            </tr>
         } ?>
         </table>



          -   +


                                                                                             21
       </form>
Carsten Lucke
                                                                                    PRADO


Event-Binding „php-only“
       <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;>


                           Quicksearch: <enter searchterm>     Search
                           Quicksearch: <enter searchterm>     Search
         <input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; />
         <input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; />


         <table>
           •                     Lastname                    Firstname
         <?php foreach($persons as $line) {
            <tr>     Blankerts                         Arne
               <td><input type=quot;checkboxquot; value=quot;<?php ...?>quot; name=quot;...quot; /></td>
               <td> Kleine                             Frank
                  <a Lucke
                     href=quot;edit.php?userId=<?php ... ?>quot;>
                                                       Carsten
                    <img src=quot;edit.pngquot; />
                     Mordziol                          Sebastian
                  </a>
               </td> Schaufelberger                    Gerd
               <td><?php echo $line['lastname']; ?></td>
                     Schmidt                           Stephan
               <td><?php echo $line['firstname']; ?></td>
            </tr>
         } ?>
         </table>


                  <input type=quot;submitquot; name=quot;removequot; value=quot;-quot; />
          -   +
          -   +
                  <input type=quot;submitquot; name=quot;addquot; value=quot;+quot; />

                                                                                             21
       </form>
Carsten Lucke
                                                                            PRADO


Event-Binding mit PRADO
                         Quicksearch: <enter searchterm>          Search




        •                   Lastname                       Firstname
                Blankerts                         Arne
                Kleine                            Frank
                Lucke                             Carsten
                Mordziol                          Sebastian
                Schaufelberger                    Gerd
                Schmidt                           Stephan




       -    +




                                                                                     22
Carsten Lucke
                                                                             PRADO


Event-Binding mit PRADO
      <com:TForm>

                          Quicksearch: <enter searchterm>          Search




         •                   Lastname                       Firstname
                 Blankerts                         Arne
                 Kleine                            Frank
                 Lucke                             Carsten
                 Mordziol                          Sebastian
                 Schaufelberger                    Gerd
                 Schmidt                           Stephan




         -   +



      </com:TForm>
                                                                                      22
Carsten Lucke
                                                                         PRADO


Event-Binding mit PRADO
      <com:TForm>

                        Quicksearch: <enter searchterm>      Search
                                                             Search
        <com:TTextBox ID=quot;inpQuickSearchquot; />
        <com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; />




         •                   Lastname                   Firstname
                 Blankerts                      Arne
                 Kleine                         Frank
                 Lucke                          Carsten
                 Mordziol                       Sebastian
                 Schaufelberger                 Gerd
                 Schmidt                        Stephan




         -   +



      </com:TForm>
                                                                                  22
Carsten Lucke
                                                                         PRADO


Event-Binding mit PRADO
      <com:TForm>

                        Quicksearch: <enter searchterm>      Search
                                                             Search
        <com:TTextBox ID=quot;inpQuickSearchquot; />
        <com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; />


        <com:TDataGrid ID=quot;DataGridquot;
          OnItemCreated=quot;itemCreatedquot;
         •                  Lastname                 Firstname
          OnEditCommand=quot;editItemquot;
                  Blankerts                    Arne
          ... >
                  Kleine                       Frank
              <com:TCheckBoxColumn DataField=quot;checkedquot; ... />
                Lucke                          Carsten
            <com:TEditCommandColumn ... />
                Mordziol                       Sebastian
            <com:TBoundColumn
                Schaufelberger                 Gerd
                HeaderText=quot;Nachnamequot; DataField=quot;lastnamequot; />
                Schmidt                        Stephan
            <com:TBoundColumn
                HeaderText=quot;Vornamequot; DataField=quot;firstnamequot; />
        </com:TDataGrid>


         -   +



      </com:TForm>
                                                                                  22
Carsten Lucke
                                                                           PRADO


Event-Binding mit PRADO
      <com:TForm>

                        Quicksearch: <enter searchterm>      Search
                                                             Search
        <com:TTextBox ID=quot;inpQuickSearchquot; />
        <com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; />


        <com:TDataGrid ID=quot;DataGridquot;
          OnItemCreated=quot;itemCreatedquot;
         •                  Lastname                 Firstname
          OnEditCommand=quot;editItemquot;
                  Blankerts                    Arne
          ... >
                  Kleine                       Frank
              <com:TCheckBoxColumn DataField=quot;checkedquot; ... />
                Lucke                          Carsten
            <com:TEditCommandColumn ... />
                Mordziol                       Sebastian
            <com:TBoundColumn
                Schaufelberger                 Gerd
                HeaderText=quot;Nachnamequot; DataField=quot;lastnamequot; />
                Schmidt                        Stephan
            <com:TBoundColumn
                HeaderText=quot;Vornamequot; DataField=quot;firstnamequot; />
        </com:TDataGrid>

                 <com:TButton Text=quot;-quot; OnClick=quot;btnPersonDelClickedquot; />
         -   +
                 <com:TButton Text=quot;+quot; OnClick=quot;btnPersonAddClickedquot; />


      </com:TForm>
                                                                                    22
Carsten Lucke
                                     PRADO




              Agenda
  Architektur von (Web-)Clients
  Kurze Einführung in PRADO
  Data-Binding in Web-Clients
  Event-Binding in Web-Clients
> State-Binding in Web-Clients
  Wiederverwendung von Komponenten

                                           23
Carsten Lucke
                                                                        PRADO



State-Binding
                                 GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




                Dialog

                 Präsentation


                          Präsentations-         Präsentations-          Präsentations-
                              daten                ereignisse              zustände




                 Dialoglogik


                                                    Aktions-                   Dialog-
                          Datenhaltung
                                                  verarbeitung                zustände




                                                                                         24
Carsten Lucke
                                                                        PRADO



State-Binding
                                 GUI-Bibliothek (JSF, PRADO, Tapestry, ...)




                Dialog

                 Präsentation


                          Präsentations-         Präsentations-          Präsentations-
                              daten                ereignisse              zustände




                 Dialoglogik


                                                    Aktions-                   Dialog-
                          Datenhaltung
                                                  verarbeitung                zustände




                                                                                         24
Carsten Lucke
                                                                               PRADO



State-Binding
                                        GUI-Bibliothek (JSF, PRADO, Tapestry, ...)



• Visualisierung des   Dialog

  Dialogzustands        Präsentation


                                 Präsentations-         Präsentations-          Präsentations-
                                     daten                ereignisse              zustände




                        Dialoglogik


                                                           Aktions-                   Dialog-
                                 Datenhaltung
                                                         verarbeitung                zustände




                                                                                                24
Carsten Lucke
                                                                                 PRADO



State-Binding
                                          GUI-Bibliothek (JSF, PRADO, Tapestry, ...)



• Visualisierung des     Dialog

  Dialogzustands          Präsentation




  • Edit/Display Modus
                                   Präsentations-         Präsentations-          Präsentations-
                                       daten                ereignisse              zustände




                          Dialoglogik


                                                             Aktions-                   Dialog-
                                   Datenhaltung
                                                           verarbeitung                zustände




                                                                                                  24
Carsten Lucke
                                                                                 PRADO



State-Binding
                                          GUI-Bibliothek (JSF, PRADO, Tapestry, ...)



• Visualisierung des     Dialog

  Dialogzustands          Präsentation




  • Edit/Display Modus
                                   Präsentations-         Präsentations-          Präsentations-
                                       daten                ereignisse              zustände




  • Dialogkontext-
    abhängige Darstel-    Dialoglogik




    lung von Elementen
                                                             Aktions-                   Dialog-
                                   Datenhaltung
                                                           verarbeitung                zustände




                                                                                                  24
Carsten Lucke
                            PRADO



State-Binding „php-only“




                                     25
Carsten Lucke
                                                      PRADO



State-Binding „php-only“
  •   Aktive/inaktive GUI-     123,34       123,34

      Elemente
                                 <input type=quot;textquot;
                             <?php echo quot;disabledquot;; ?> />




                                                               25
Carsten Lucke
                                                            PRADO



State-Binding „php-only“
  •   Aktive/inaktive GUI-       123,34           123,34

      Elemente
                                   <input type=quot;textquot;
                               <?php echo quot;disabledquot;; ?> />


  •   Dynamische Auswahl von     123,34
                                             123,34

      GUI-Elementen                          324,422
                                             23223




                                 <?php if ($short_text) { ?>
                                   <input type=quot;textquot; ... />
                                 <?php } else { ?>
                                   <textarea name=quot;fooquot;
                                        rows=quot;8quot; cols=quot;40quot;>
                                   </textarea>
                                 <?php } ?>
                                                                     25
Carsten Lucke
                           PRADO



State-Binding bei PRADO




                                    26
Carsten Lucke
                                                    PRADO



State-Binding bei PRADO
 •   Aktive/inaktive GUI-     123,34      123,34

     Elemente
                            $this->myTextbox->Enabled
                                     = false;




                                                             26
Carsten Lucke
                                                           PRADO



State-Binding bei PRADO
 •   Aktive/inaktive GUI-       123,34           123,34

     Elemente
                              $this->myTextbox->Enabled
                                       = false;


 •   Dynamische Auswahl von    123,34
                                           123,34

     GUI-Elementen
                                           324,422
                                           23223




                              if ($short_text) {
                                  $this->myTextbox->TextMode =
                                    TTextBoxMode::SingleLine;
                              } else {
                                  $this->myTextbox->TextMode =
                                    TTextBoxMode::MultiLine;
                              }
                                                                    26
Carsten Lucke
                                     PRADO




              Agenda
  Architektur von (Web-)Clients
  Kurze Einführung in PRADO
  Data-Binding in Web-Clients
  Event-Binding in Web-Clients
  State-Binding in Web-Clients
> Wiederverwendung von Komponenten

                                           27
Carsten Lucke
                                              PRADO


PRADO und Wiederverwendbarkeit
• Jede PRADO-Komponente (TComponent) ist an sich
  wiederverwendbar
Im Speziellen:
  • Controls (TControl)
  • Modules (TModule)

Außerdem: Wahrscheinlichkeit zur Wiederverwendung
von fachlichem Code deutlich höher durch saubere
Trennung von Präsentation und Geschäftslogik
                                                       28
Carsten Lucke
                                  PRADO




Vielen Dank für Ihre Aufmerksamkeit!

        Haben Sie Fragen?

                      http://lucke.info

                                           29

Contenu connexe

Tendances

Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Ulrike Schwinn
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
ORACLE Lizenzierung - Die größten Fallen in der Praxis
ORACLE Lizenzierung - Die größten Fallen in der PraxisORACLE Lizenzierung - Die größten Fallen in der Praxis
ORACLE Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Trivadis
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatengeKarin Patenge
 
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...OPITZ CONSULTING Deutschland
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Torsten Kleiber
 
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteCodd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteMarkus Flechtner
 
Middleware Basics für den DBA
Middleware Basics für den DBAMiddleware Basics für den DBA
Middleware Basics für den DBATrivadis
 
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java AlltagInfinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltaggedoplan
 
Semantic Web - Technik und Einsatz
Semantic Web - Technik und EinsatzSemantic Web - Technik und Einsatz
Semantic Web - Technik und EinsatzBenjamin Nowack
 

Tendances (13)

OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
ORACLE Lizenzierung - Die größten Fallen in der Praxis
ORACLE Lizenzierung - Die größten Fallen in der PraxisORACLE Lizenzierung - Die größten Fallen in der Praxis
ORACLE Lizenzierung - Die größten Fallen in der Praxis
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteCodd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
 
Middleware Basics für den DBA
Middleware Basics für den DBAMiddleware Basics für den DBA
Middleware Basics für den DBA
 
Infinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java AlltagInfinispan - NoSQL für den Enterprise Java Alltag
Infinispan - NoSQL für den Enterprise Java Alltag
 
Semantic Web - Technik und Einsatz
Semantic Web - Technik und EinsatzSemantic Web - Technik und Einsatz
Semantic Web - Technik und Einsatz
 

En vedette

Wie werden die 10 größten Fehler im Networking vermieden?
Wie werden die 10 größten Fehler im Networking vermieden?Wie werden die 10 größten Fehler im Networking vermieden?
Wie werden die 10 größten Fehler im Networking vermieden?NETBAES
 
Vertrauen und professionelle Selbstdarstellung 09
Vertrauen und professionelle Selbstdarstellung 09Vertrauen und professionelle Selbstdarstellung 09
Vertrauen und professionelle Selbstdarstellung 09Tina Guenther
 
Reglamento general del torneo magister clausura 2011 sede tucuman
Reglamento general del torneo magister clausura 2011 sede tucumanReglamento general del torneo magister clausura 2011 sede tucuman
Reglamento general del torneo magister clausura 2011 sede tucumaninfotorrentes
 
Armonización y alineamiento
Armonización y alineamientoArmonización y alineamiento
Armonización y alineamientooswaldosuarez
 
Magazin nuestra america_5
Magazin nuestra america_5Magazin nuestra america_5
Magazin nuestra america_5nuestra5merica5
 
ResponseSource Folien vom DJV Barcamp, Juli 2016
ResponseSource Folien vom DJV Barcamp, Juli 2016ResponseSource Folien vom DJV Barcamp, Juli 2016
ResponseSource Folien vom DJV Barcamp, Juli 2016ResponseSource D-A-CH
 
Domenech Le Palau De La Musica
Domenech Le Palau De La MusicaDomenech Le Palau De La Musica
Domenech Le Palau De La Musicacristiandadypatria
 
Phishing y Protección de Identidad
Phishing y Protección de IdentidadPhishing y Protección de Identidad
Phishing y Protección de IdentidadLuz Castro
 

En vedette (20)

Networking 2.0
Networking 2.0Networking 2.0
Networking 2.0
 
Wie werden die 10 größten Fehler im Networking vermieden?
Wie werden die 10 größten Fehler im Networking vermieden?Wie werden die 10 größten Fehler im Networking vermieden?
Wie werden die 10 größten Fehler im Networking vermieden?
 
CV Vorlage
CV VorlageCV Vorlage
CV Vorlage
 
Vertrauen und professionelle Selbstdarstellung 09
Vertrauen und professionelle Selbstdarstellung 09Vertrauen und professionelle Selbstdarstellung 09
Vertrauen und professionelle Selbstdarstellung 09
 
NeXTseestern
NeXTseesternNeXTseestern
NeXTseestern
 
Presentación1
Presentación1Presentación1
Presentación1
 
Universidad técnica de manabí
Universidad técnica de manabíUniversidad técnica de manabí
Universidad técnica de manabí
 
San Ignacio de Loyola: Vida y Espiritualidad
San Ignacio de Loyola: Vida y EspiritualidadSan Ignacio de Loyola: Vida y Espiritualidad
San Ignacio de Loyola: Vida y Espiritualidad
 
Movimiento Circular
Movimiento CircularMovimiento Circular
Movimiento Circular
 
E learning andres
E learning andresE learning andres
E learning andres
 
S.Juan Evangelista
S.Juan Evangelista S.Juan Evangelista
S.Juan Evangelista
 
Reglamento general del torneo magister clausura 2011 sede tucuman
Reglamento general del torneo magister clausura 2011 sede tucumanReglamento general del torneo magister clausura 2011 sede tucuman
Reglamento general del torneo magister clausura 2011 sede tucuman
 
Armonización y alineamiento
Armonización y alineamientoArmonización y alineamiento
Armonización y alineamiento
 
Drupal (Nivel I)
Drupal (Nivel I)Drupal (Nivel I)
Drupal (Nivel I)
 
Zubarah Products list
Zubarah Products listZubarah Products list
Zubarah Products list
 
Magazin nuestra america_5
Magazin nuestra america_5Magazin nuestra america_5
Magazin nuestra america_5
 
ResponseSource Folien vom DJV Barcamp, Juli 2016
ResponseSource Folien vom DJV Barcamp, Juli 2016ResponseSource Folien vom DJV Barcamp, Juli 2016
ResponseSource Folien vom DJV Barcamp, Juli 2016
 
120514_Niger_SB
120514_Niger_SB120514_Niger_SB
120514_Niger_SB
 
Domenech Le Palau De La Musica
Domenech Le Palau De La MusicaDomenech Le Palau De La Musica
Domenech Le Palau De La Musica
 
Phishing y Protección de Identidad
Phishing y Protección de IdentidadPhishing y Protección de Identidad
Phishing y Protección de Identidad
 

Similaire à PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen

Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?Markus Flechtner
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data KonnektivitätTrivadis
 
B1 Lotusday 2008 Vortrag X Forms Rapid Development
B1 Lotusday 2008 Vortrag X Forms Rapid DevelopmentB1 Lotusday 2008 Vortrag X Forms Rapid Development
B1 Lotusday 2008 Vortrag X Forms Rapid DevelopmentAndreas Schulte
 
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und HadoopLogical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und HadoopOPITZ CONSULTING Deutschland
 
Django trifft Flutter
Django trifft FlutterDjango trifft Flutter
Django trifft Flutterroskakori
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAsKarin Patenge
 
20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatenge20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatengeKarin Patenge
 
20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatenge20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatengeKarin Patenge
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...BOSTON Server & Storage Solutions GmbH
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationSamuel Zürcher
 
Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...
Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...
Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...Harald Erb
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der PraxisMichael Mirold
 
Tk roadschow-icinga-pdeneu
Tk roadschow-icinga-pdeneuTk roadschow-icinga-pdeneu
Tk roadschow-icinga-pdeneuWerner Fischer
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?MT AG
 
Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6Torsten Winterberg
 
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere PortalFrank Rahn
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 

Similaire à PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen (20)

Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
 
B1 Lotusday 2008 Vortrag X Forms Rapid Development
B1 Lotusday 2008 Vortrag X Forms Rapid DevelopmentB1 Lotusday 2008 Vortrag X Forms Rapid Development
B1 Lotusday 2008 Vortrag X Forms Rapid Development
 
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und HadoopLogical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
 
Django trifft Flutter
Django trifft FlutterDjango trifft Flutter
Django trifft Flutter
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatenge20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatenge
 
20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatenge20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatenge
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...
Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...
Endeca Web Acquisition Toolkit - Integration verteilter Web-Anwendungen und a...
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der Praxis
 
Tk roadschow-icinga-pdeneu
Tk roadschow-icinga-pdeneuTk roadschow-icinga-pdeneu
Tk roadschow-icinga-pdeneu
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-Anwendungen
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?
 
Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6
 
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
[DE] Glossar zu Dokumenten-Technologien | PROJECT CONSULT | Hamburg 2010
 [DE] Glossar zu Dokumenten-Technologien | PROJECT CONSULT | Hamburg 2010 [DE] Glossar zu Dokumenten-Technologien | PROJECT CONSULT | Hamburg 2010
[DE] Glossar zu Dokumenten-Technologien | PROJECT CONSULT | Hamburg 2010
 

PRADO - Erstellung wiederverwendbarer Enterprise-Applikationen

  • 1. PRADO Erstellung wiederverwendbarer Enterprise-Webapplikationen
  • 2. Carsten Lucke PRADO Sprecher: Carsten Lucke • Sofware-Ingenieur bei der sd&m AG, München • Aktives Mitglied der sd&m Client- Community • PEAR und PECL Entwickler • Schreibt für Fachzeitschriften/-bücher über diverse PHP-Themen 2
  • 3. Carsten Lucke PRADO Agenda • Architektur von (Web-)Clients • Kurze Einführung in PRADO • Data-Binding in Web-Clients • Event-Binding in Web-Clients • State-Binding in Web-Clients • Wiederverwendung von Komponenten 3
  • 4. Carsten Lucke PRADO Agenda > Architektur von (Web-)Clients Kurze Einführung in PRADO Data-Binding in Web-Clients Event-Binding in Web-Clients State-Binding in Web-Clients Wiederverwendung von Komponenten 4
  • 5. Carsten Lucke PRADO Technische Infrastruktur von Web-Clients 5
  • 6. Carsten Lucke PRADO Technische Infrastruktur von Web-Clients PC Client (Browser-Teil) Webserver Client (Server-Teil) Application- server Anwendungskern Persistenz DB-Server Datenbank 5
  • 7. Carsten Lucke PRADO Technische Infrastruktur von Web-Clients PC Client (Browser-Teil) Webserver Client (Server-Teil) Synchronisation der Zustände notwendig Application- server Anwendungskern Persistenz DB-Server Datenbank 5
  • 8. Carsten Lucke PRADO Einblicke in eine Dialogarchitektur 6
  • 9. Carsten Lucke PRADO Einblicke in eine Dialogarchitektur GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Dialoglogik 6
  • 10. Carsten Lucke PRADO Einblicke in eine Dialogarchitektur GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- daten Dialoglogik Datenhaltung 6
  • 11. Carsten Lucke PRADO Einblicke in eine Dialogarchitektur GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- daten ereignisse Dialoglogik Aktions- Datenhaltung verarbeitung 6
  • 12. Carsten Lucke PRADO Einblicke in eine Dialogarchitektur GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 6
  • 13. Carsten Lucke PRADO Agenda Architektur von (Web-)Clients > Kurze Einführung in PRADO Data-Binding in Web-Clients Event-Binding in Web-Clients State-Binding in Web-Clients Wiederverwendung von Komponenten 7
  • 14. Carsten Lucke PRADO Was ist PRADO? • Framework für Web- anwendungen in PHP5 • RAD-Ansatz • Programmierparadigma: • komponenten-basiert • ereignisgesteuert 8
  • 15. Carsten Lucke PRADO PRADO Grundlagen • Eine PRADO-Seite besteht aus: 9
  • 16. Carsten Lucke PRADO PRADO Grundlagen • Eine PRADO-Seite besteht aus: <com:TLabel ForControl=quot;uidquot; Text=quot;Username:quot; /> <com:TTextBox ID=quot;uidquot; /> • einem .page File für <com:TLabel ForControl=quot;pwquot; Text=quot;Password:quot; /> die GUI <com:TTextBox ID=quot;pwquot; TextMode=quot;Passwordquot; /> <com:TButton Text=quot;Loginquot; ID=quot;submitquot; OnClick=quot;loginClickedquot; /> 9
  • 17. Carsten Lucke PRADO PRADO Grundlagen • Eine PRADO-Seite besteht aus: • einem .page File für class LoginPage extends TPage { die GUI .... } • einem .php File für die fachliche Logik 9
  • 18. Carsten Lucke PRADO Agenda Architektur von (Web-)Clients Kurze Einführung in PRADO > Data-Binding in Web-Clients Event-Binding in Web-Clients State-Binding in Web-Clients Wiederverwendung von Komponenten 10
  • 19. Carsten Lucke PRADO Datenzustände „php-only“ <form action=quot;<?php echo $_SERVER['PHP_SELF']; ?>quot; method=quot;postquot; > <input type=quot;textquot; name=quot;demoValuequot; /> <input type=quot;submitquot; value=quot;Continue &rarr;quot; /> </form> <pre> <?php print_r($_REQUEST); ?> </pre> 11
  • 20. Carsten Lucke PRADO Datenzustände „php-only“ • Ausgangszustand der Maske 12
  • 21. Carsten Lucke PRADO Datenzustände „php-only“ • Ausgangszustand der Maske • Eingabe eines Wertes und nachfolgend Klick auf „Continue“ 12
  • 22. Carsten Lucke PRADO Datenzustände „php-only“ • Ausgangszustand der Maske • Eingabe eines Wertes und nachfolgend Klick auf „Continue“ • „POST-back“ Zustand 12
  • 23. Carsten Lucke PRADO Datenzustände bei PRADO <com:TForm> <com:TTextBox ID=quot;demoValuequot; /> <com:TButton Text=quot;Continue &rarr;quot; /> </com:TForm> <pre> <com:TExpression Expression=quot;print_r($_REQUEST, true)quot; /> </pre> 13
  • 24. Carsten Lucke PRADO Datenzustände bei PRADO • Ausgangszustand der Maske 14
  • 25. Carsten Lucke PRADO Datenzustände bei PRADO • Ausgangszustand der Maske • Eingabe eines Wertes und nachfolgend Klick auf „Continue“ 14
  • 26. Carsten Lucke PRADO Datenzustände bei PRADO • Ausgangszustand der Maske • Eingabe eines Wertes und nachfolgend Klick auf „Continue“ • „POST-back“ Zustand 14
  • 27. Carsten Lucke PRADO Data-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 15
  • 28. Carsten Lucke PRADO Data-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 15
  • 29. Carsten Lucke PRADO Data-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Synchronisation zwischen Präsen- Dialog Präsentation tationsdaten und Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialogdatenhaltung Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 15
  • 30. Carsten Lucke PRADO Data-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Synchronisation zwischen Präsen- Dialog Präsentation tationsdaten und Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialogdatenhaltung • Konvertierung Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 15
  • 31. Carsten Lucke PRADO Data-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Synchronisation zwischen Präsen- Dialog Präsentation tationsdaten und Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialogdatenhaltung • Konvertierung Dialoglogik • Formatierung Aktions- Dialog- Datenhaltung verarbeitung zustände 15
  • 32. Carsten Lucke PRADO Data-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Synchronisation zwischen Präsen- Dialog Präsentation tationsdaten und Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialogdatenhaltung • Konvertierung Dialoglogik • Formatierung Aktions- Dialog- Datenhaltung verarbeitung zustände • Validierung 15
  • 33. Carsten Lucke PRADO Data-Binding „php-only“ 16
  • 34. Carsten Lucke PRADO Data-Binding „php-only“ 16
  • 35. Carsten Lucke PRADO Data-Binding „php-only“ 16
  • 36. Carsten Lucke PRADO Data-Binding „php-only“ 16
  • 37. Carsten Lucke PRADO Data-Binding „php-only“ <form action=quot;<?php echo $_SERVER['PHP_SELF']; ?>quot; method=quot;postquot;> <div> <label for=quot;usernamequot;>Username:</label> <input type=quot;textquot; name=quot;usernamequot; value=quot;<?php if(isset($_POST['username'])){ echo $_POST['username'];}?>quot; /> </div> <div> <label for=quot;passwordquot;>Password:</label> <input type=quot;passwordquot; name=quot;passwordquot; /> </div> <input type=quot;submitquot; name=quot;submitquot; id=quot;submitquot; value=quot;Login &rarr;quot; /> </form> <?php if (isset($_POST['submit'])) { ?> <div id=quot;resultquot;> <?php if ($_POST['username'] === 'luckec' && $_POST['password'] === 'test') { echo 'Access granted for ' . $_POST['username']; } else { echo 'Access denied for ' . $_POST['username']; } ?> </div> <?php } ?> 16
  • 38. Carsten Lucke PRADO Data-Binding bei PRADO 17
  • 39. Carsten Lucke PRADO Data-Binding bei PRADO 17
  • 40. Carsten Lucke PRADO Data-Binding bei PRADO <com:TForm> <div> <com:TLabel ForControl=quot;usernamequot; Text=quot;Username:quot; /> <com:TTextBox ID=quot;usernamequot; /> </div> <div> <com:TLabel ForControl=quot;passwordquot; Text=quot;Password:quot; /> <com:TTextBox ID=quot;passwordquot; TextMode=quot;Passwordquot; /> </div> <com:TButton Text=quot;Login &rarr;quot; ID=quot;submitquot; OnClick=quot;loginClickedquot; /> </com:TForm> <com:TPanel ID=quot;loginResultPanelquot;> <com:TLabel ID=quot;loginResultLabelquot; /> </com:TPanel> 17
  • 41. Carsten Lucke PRADO Data-Binding bei PRADO <com:TForm> <div> <com:TLabel ForControl=quot;usernamequot; Text=quot;Username:quot; /> <com:TTextBox ID=quot;usernamequot; /> </div> <div> <com:TLabel ForControl=quot;passwordquot; Text=quot;Password:quot; /> <com:TTextBox ID=quot;passwordquot; TextMode=quot;Passwordquot; /> </div> <com:TButton Text=quot;Login &rarr;quot; ID=quot;submitquot; OnClick=quot;loginClickedquot; /> </com:TForm> <com:TPanel ID=quot;loginResultPanelquot;> <com:TLabel ID=quot;loginResultLabelquot; /> </com:TPanel> class DataBinding extends TPage { public function loginClicked($sender, $param) { $this->loginResultPanel->setVisible(true); if ($this->username->Text === 'luckec' && $this->password->Text === 'test') { $this->loginResultLabel->Text = 'Access granted for ' . $username; } else { $this->loginResultLabel->Text = 'Access denied for ' . $username; } } 17 }
  • 42. Carsten Lucke PRADO Agenda Architektur von (Web-)Clients Kurze Einführung in PRADO Data-Binding in Web-Clients > Event-Binding in Web-Clients State-Binding in Web-Clients Wiederverwendung von Komponenten 18
  • 43. Carsten Lucke PRADO Event-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 19
  • 44. Carsten Lucke PRADO Event-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 19
  • 45. Carsten Lucke PRADO Event-Binding • Wertschöpfungskette GUI-Bibliothek (JSF, PRADO, Tapestry, ...) von Ereignissen Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 19
  • 46. Carsten Lucke PRADO Event-Binding • Wertschöpfungskette GUI-Bibliothek (JSF, PRADO, Tapestry, ...) von Ereignissen Dialog Präsentation • Präsentation- Präsentations- Präsentations- Präsentations- sereignisse ziehen daten ereignisse zustände i.d.R. Dialogereig- nisse nach sich Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 19
  • 47. Carsten Lucke PRADO Event-Binding Quicksearch: <enter searchterm> Search • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 20
  • 48. Carsten Lucke PRADO Event-Binding Suchergebnis einschränken Quicksearch: <enter searchterm> Search • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 20
  • 49. Carsten Lucke PRADO Event-Binding Suchergebnis einschränken Editieren von Quicksearch: <enter searchterm> Search Einträgen • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 20
  • 50. Carsten Lucke PRADO Event-Binding Suchergebnis einschränken Editieren von Quicksearch: <enter searchterm> Search Einträgen • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + Hinzufügen/Löschen von Einträgen 20
  • 51. Carsten Lucke PRADO Event-Binding „php-only“ Quicksearch: <enter searchterm> Search • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 21
  • 52. Carsten Lucke PRADO Event-Binding „php-only“ <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;> Quicksearch: <enter searchterm> Search • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 21 </form>
  • 53. Carsten Lucke PRADO Event-Binding „php-only“ <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;> Quicksearch: <enter searchterm> Search Quicksearch: <enter searchterm> Search <input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; /> <input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; /> • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 21 </form>
  • 54. Carsten Lucke PRADO Event-Binding „php-only“ <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;> Quicksearch: <enter searchterm> Search Quicksearch: <enter searchterm> Search <input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; /> <input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; /> <table> • Lastname Firstname <?php foreach($persons as $line) { <tr> Blankerts Arne <td><input type=quot;checkboxquot; value=quot;<?php ...?>quot; name=quot;...quot; /></td> <td> Kleine Frank <a Lucke href=quot;edit.php?userId=<?php ... ?>quot;> Carsten <img src=quot;edit.pngquot; /> Mordziol Sebastian </a> </td> Schaufelberger Gerd <td><?php echo $line['lastname']; ?></td> Schmidt Stephan <td><?php echo $line['firstname']; ?></td> </tr> } ?> </table> - + 21 </form>
  • 55. Carsten Lucke PRADO Event-Binding „php-only“ <form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;> Quicksearch: <enter searchterm> Search Quicksearch: <enter searchterm> Search <input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; /> <input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; /> <table> • Lastname Firstname <?php foreach($persons as $line) { <tr> Blankerts Arne <td><input type=quot;checkboxquot; value=quot;<?php ...?>quot; name=quot;...quot; /></td> <td> Kleine Frank <a Lucke href=quot;edit.php?userId=<?php ... ?>quot;> Carsten <img src=quot;edit.pngquot; /> Mordziol Sebastian </a> </td> Schaufelberger Gerd <td><?php echo $line['lastname']; ?></td> Schmidt Stephan <td><?php echo $line['firstname']; ?></td> </tr> } ?> </table> <input type=quot;submitquot; name=quot;removequot; value=quot;-quot; /> - + - + <input type=quot;submitquot; name=quot;addquot; value=quot;+quot; /> 21 </form>
  • 56. Carsten Lucke PRADO Event-Binding mit PRADO Quicksearch: <enter searchterm> Search • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + 22
  • 57. Carsten Lucke PRADO Event-Binding mit PRADO <com:TForm> Quicksearch: <enter searchterm> Search • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + </com:TForm> 22
  • 58. Carsten Lucke PRADO Event-Binding mit PRADO <com:TForm> Quicksearch: <enter searchterm> Search Search <com:TTextBox ID=quot;inpQuickSearchquot; /> <com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; /> • Lastname Firstname Blankerts Arne Kleine Frank Lucke Carsten Mordziol Sebastian Schaufelberger Gerd Schmidt Stephan - + </com:TForm> 22
  • 59. Carsten Lucke PRADO Event-Binding mit PRADO <com:TForm> Quicksearch: <enter searchterm> Search Search <com:TTextBox ID=quot;inpQuickSearchquot; /> <com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; /> <com:TDataGrid ID=quot;DataGridquot; OnItemCreated=quot;itemCreatedquot; • Lastname Firstname OnEditCommand=quot;editItemquot; Blankerts Arne ... > Kleine Frank <com:TCheckBoxColumn DataField=quot;checkedquot; ... /> Lucke Carsten <com:TEditCommandColumn ... /> Mordziol Sebastian <com:TBoundColumn Schaufelberger Gerd HeaderText=quot;Nachnamequot; DataField=quot;lastnamequot; /> Schmidt Stephan <com:TBoundColumn HeaderText=quot;Vornamequot; DataField=quot;firstnamequot; /> </com:TDataGrid> - + </com:TForm> 22
  • 60. Carsten Lucke PRADO Event-Binding mit PRADO <com:TForm> Quicksearch: <enter searchterm> Search Search <com:TTextBox ID=quot;inpQuickSearchquot; /> <com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; /> <com:TDataGrid ID=quot;DataGridquot; OnItemCreated=quot;itemCreatedquot; • Lastname Firstname OnEditCommand=quot;editItemquot; Blankerts Arne ... > Kleine Frank <com:TCheckBoxColumn DataField=quot;checkedquot; ... /> Lucke Carsten <com:TEditCommandColumn ... /> Mordziol Sebastian <com:TBoundColumn Schaufelberger Gerd HeaderText=quot;Nachnamequot; DataField=quot;lastnamequot; /> Schmidt Stephan <com:TBoundColumn HeaderText=quot;Vornamequot; DataField=quot;firstnamequot; /> </com:TDataGrid> <com:TButton Text=quot;-quot; OnClick=quot;btnPersonDelClickedquot; /> - + <com:TButton Text=quot;+quot; OnClick=quot;btnPersonAddClickedquot; /> </com:TForm> 22
  • 61. Carsten Lucke PRADO Agenda Architektur von (Web-)Clients Kurze Einführung in PRADO Data-Binding in Web-Clients Event-Binding in Web-Clients > State-Binding in Web-Clients Wiederverwendung von Komponenten 23
  • 62. Carsten Lucke PRADO State-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 24
  • 63. Carsten Lucke PRADO State-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) Dialog Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 24
  • 64. Carsten Lucke PRADO State-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Visualisierung des Dialog Dialogzustands Präsentation Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 24
  • 65. Carsten Lucke PRADO State-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Visualisierung des Dialog Dialogzustands Präsentation • Edit/Display Modus Präsentations- Präsentations- Präsentations- daten ereignisse zustände Dialoglogik Aktions- Dialog- Datenhaltung verarbeitung zustände 24
  • 66. Carsten Lucke PRADO State-Binding GUI-Bibliothek (JSF, PRADO, Tapestry, ...) • Visualisierung des Dialog Dialogzustands Präsentation • Edit/Display Modus Präsentations- Präsentations- Präsentations- daten ereignisse zustände • Dialogkontext- abhängige Darstel- Dialoglogik lung von Elementen Aktions- Dialog- Datenhaltung verarbeitung zustände 24
  • 67. Carsten Lucke PRADO State-Binding „php-only“ 25
  • 68. Carsten Lucke PRADO State-Binding „php-only“ • Aktive/inaktive GUI- 123,34 123,34 Elemente <input type=quot;textquot; <?php echo quot;disabledquot;; ?> /> 25
  • 69. Carsten Lucke PRADO State-Binding „php-only“ • Aktive/inaktive GUI- 123,34 123,34 Elemente <input type=quot;textquot; <?php echo quot;disabledquot;; ?> /> • Dynamische Auswahl von 123,34 123,34 GUI-Elementen 324,422 23223 <?php if ($short_text) { ?> <input type=quot;textquot; ... /> <?php } else { ?> <textarea name=quot;fooquot; rows=quot;8quot; cols=quot;40quot;> </textarea> <?php } ?> 25
  • 70. Carsten Lucke PRADO State-Binding bei PRADO 26
  • 71. Carsten Lucke PRADO State-Binding bei PRADO • Aktive/inaktive GUI- 123,34 123,34 Elemente $this->myTextbox->Enabled = false; 26
  • 72. Carsten Lucke PRADO State-Binding bei PRADO • Aktive/inaktive GUI- 123,34 123,34 Elemente $this->myTextbox->Enabled = false; • Dynamische Auswahl von 123,34 123,34 GUI-Elementen 324,422 23223 if ($short_text) { $this->myTextbox->TextMode = TTextBoxMode::SingleLine; } else { $this->myTextbox->TextMode = TTextBoxMode::MultiLine; } 26
  • 73. Carsten Lucke PRADO Agenda Architektur von (Web-)Clients Kurze Einführung in PRADO Data-Binding in Web-Clients Event-Binding in Web-Clients State-Binding in Web-Clients > Wiederverwendung von Komponenten 27
  • 74. Carsten Lucke PRADO PRADO und Wiederverwendbarkeit • Jede PRADO-Komponente (TComponent) ist an sich wiederverwendbar Im Speziellen: • Controls (TControl) • Modules (TModule) Außerdem: Wahrscheinlichkeit zur Wiederverwendung von fachlichem Code deutlich höher durch saubere Trennung von Präsentation und Geschäftslogik 28
  • 75. Carsten Lucke PRADO Vielen Dank für Ihre Aufmerksamkeit! Haben Sie Fragen? http://lucke.info 29