{"id":189,"date":"2007-09-24T20:32:07","date_gmt":"2007-09-24T18:32:07","guid":{"rendered":"http:\/\/ollmetzer\/?p=189"},"modified":"2010-05-29T00:20:25","modified_gmt":"2010-05-28T22:20:25","slug":"pipeline-architektur-1","status":"publish","type":"post","link":"https:\/\/www.ollmetzer.com\/?p=189","title":{"rendered":"Pipeline Architektur (1)"},"content":{"rendered":"<p>Wie soll das Framework aufgebaut sein, auf dem meine zuk\u00fcnftigen Webanwendungen basieren? Beginnen wir mit Grund\u00fcberlegungen zur Architektur.<\/p>\n<p><strong>Contentmodule<\/strong><br \/>\nHTML\/WAP\/XML-Dateien, die von einer Webapplikation ausgeliefert werden, bestehen in der Regel  aus verschiedenen Contentbereichen. Bei einer klassischen Webanwendung sind dies z.B. Header, Navigation, ein oder mehrere Contentbereiche und ein Footer. Diese Contentmodule k\u00f6nnen je nach Context sehr verschieden sein. Die Navigation kann zum Beispiel auf jeder Seite gleich sein, sich aber andererseits je nach Benutzerrolle unterscheiden. Eingeloggte Besucher k\u00f6nnen auf derselben Seite andere Informationen zu sehen bekommen als G\u00e4ste, usw.<\/p>\n<p><strong>Ablaufsteuerung<\/strong><br \/>\nEs ist also sinnvoll einen Mechanismus zu haben, der auf der Basis eines Seitenaufrufs und weiteren Parametern dynamisch die Erzeugung der Contentmodule steuert. Diesen Mechanismus nenne ich Pipeline. Der Request wird &#8222;oben hineingeworfen&#8220; und &#8222;unten&#8220; kommen die Daten f\u00fcr die Erzeugung der Ausgabseite heraus. Das Erzeugen der eigentlichen HTML\/XML\/WAP- oder sonstigen Ausgabe auf der Basis der Erzeugten Daten geschieht danach mittels Templates. Die Steueranweisungen werden der Pipeline mittels einer einfachen XML-Datei \u00fcbermittelt.<\/p>\n<p><strong>Views<\/strong><br \/>\nDie Pipeline k\u00fcmmert sich um den Request-Kontext und stellt dabei ein Datenrepository zur Verf\u00fcgung, in das Pipeline und Contentmodule schreiben und aus dem sie lesen k\u00f6nnen. Dieses Datenrepository wird im Anschlu\u00df dem Template \u00fcbergeben.<\/p>\n<p>Neben dem Request Kontext gibt es noch einen Sessionkontext, der mehrere Requests eines Nutzers zusammenfasst und einen Applikationskontext, der wiederum alle Sessions zusammenfasst. Somit ergeben sich f\u00fcr das Framework vier Basisklassen:<\/p>\n<ul>\n<li>Application<\/li>\n<li>Session<\/li>\n<li>Pipeline<\/li>\n<li>Template<\/li>\n<\/ul>\n<p>Deren Methoden und Eigenschaften werde ich demn\u00e4chst n\u00e4her beschreiben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie soll das Framework aufgebaut sein, auf dem meine zuk\u00fcnftigen Webanwendungen basieren? Beginnen wir mit Grund\u00fcberlegungen zur Architektur. Contentmodule HTML\/WAP\/XML-Dateien, die von einer Webapplikation ausgeliefert werden, bestehen in der Regel aus verschiedenen Contentbereichen. Bei einer klassischen Webanwendung sind dies z.B. Header, Navigation, ein oder mehrere Contentbereiche und ein Footer. Diese Contentmodule k\u00f6nnen je nach Context [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-189","post","type-post","status-publish","format-standard","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=189"}],"version-history":[{"count":0,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/189\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}