tag:forum.selfhtml.org,2005:/self Framework Funkions Unterteilung – SELFHTML-Forum 2017-08-06T15:27:56Z https://forum.selfhtml.org/self/2017/aug/6/framework-funkions-unterteilung/1700999#m1700999 MB 2017-08-06T02:49:42Z 2017-08-06T02:49:42Z Framework Funkions Unterteilung <p>Moin Community,</p> <p>Welche Klassen <em>(z.B. App, Router, Database, Sessions etc. )</em> in einem <em>Framework</em> fallen unter diese Kategorien:</p> <p><em><strong>Venderors</strong></em>, <em><strong>Utils</strong></em>, <em><strong>Core</strong></em>, <em><strong>Helpers</strong></em></p> <p>Oder anders gesagt: Was gehört zu was?</p> <p>vlg MB</p> https://forum.selfhtml.org/self/2017/aug/6/framework-funkions-unterteilung/1701001#m1701001 pl http://rolfrost.de/eu.html 2017-08-06T05:38:02Z 2017-08-06T05:39:52Z Framework Funkions Unterteilung <p>Session und Database würde ich unter Data Access Layer einordnen. Wenn Sessiondaten anfallen, z.B. ein Login, müssen die ja persistent gemacht werden. Ich beschränke mich hier mal auf die Session, weil ich da in den letzten Tagen was gemacht habe, das ist noch fisch:</p> <pre><code class="block language-perl"><span class="token keyword">package</span> main<span class="token punctuation">;</span> <span class="token comment"># Das ist die Router Class</span> <span class="token comment"># noch vor der Erstellung der</span> <span class="token comment"># Framework Instanz</span> <span class="token comment"># $sid ist die Session Id und der Dateiname</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$sid</span><span class="token punctuation">)</span><span class="token punctuation">{</span> tie <span class="token variable">%SESSION</span><span class="token punctuation">,</span> <span class="token string">'SessionHash'</span><span class="token punctuation">,</span> file <span class="token operator">=></span> <span class="token variable">$sid</span> <span class="token operator">or</span> <span class="token keyword">die</span> <span class="token variable">$@</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment"># sobald der Router die App Class festgestellt hat</span> <span class="token comment"># wird %SESSION</span> <span class="token comment"># zur Eigenschaft der Framework Instanz gemacht</span> <span class="token comment"># und immer dann, wenn es in der Session was zu speichern gibt</span> <span class="token comment"># $self ist die Framework Instanz</span> <span class="token comment"># in App Class Login</span> <span class="token comment"># Logindaten (username, Zeitstempel, Group) speichern</span> tied<span class="token punctuation">(</span><span class="token variable">%</span><span class="token punctuation">{</span><span class="token variable">$self</span><span class="token operator">-></span><span class="token punctuation">{</span>SESSION<span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-></span>write<span class="token punctuation">;</span> </code></pre> <p>Schönen Sonntag.</p> <p>Stichworte <a href="http://rolfrost.de/aggregation.html" rel="nofollow noopener noreferrer">Aggregation, Delegation</a></p> https://forum.selfhtml.org/self/2017/aug/6/framework-funkions-unterteilung/1701006#m1701006 dedlfix 2017-08-06T06:45:39Z 2017-08-06T15:15:42Z Framework Funkions Unterteilung <p>Tach!</p> <blockquote> <p>Welche Klassen <em>(z.B. App, Router, Database, Sessions etc. )</em> in einem <em>Framework</em> fallen unter diese Kategorien:</p> </blockquote> <p>Warum ist diese Frage für dich wichtig?</p> <blockquote> <p><em><strong>Venderors</strong></em>,</p> </blockquote> <p>Was ist damit gemeint? Vendors = Verkäufer? Hab ich als Einteilung für Software noch nicht gehört. Finde ich auch nichts passendes beim Googeln.</p> <blockquote> <p><em><strong>Utils</strong></em>, <em><strong>Core</strong></em>, <em><strong>Helpers</strong></em></p> </blockquote> <p>Wo will man da die Grenzen ziehen? Besonders Utils und Helpers sind genauso wie Tools oder Infrastructure Synonyme für die Müllhalde, in die der Programmierer sein Kleinkramzeug einsortiert, für das er keinen besseren Verzeichnisnamen gefunden hat.</p> <p>Core ist in dem Zusammenhang auch nicht besser.</p> <blockquote> <p>Oder anders gesagt: Was gehört zu was?</p> </blockquote> <p>Wenn es darum geht, die Verzeichnisse zu benennen, in die du deine Klassen einsortierst, dann kenne ich zwei grundlegende Verfahren. Einmal sortiert man die Dinge nach der technisch-strukturellen Zugehörigkeit. Zum Beispiel sortiert man als Verwender eines MVC-Frameworks alle dem Model zugehörigen Klassen ins Verzeichnis Models, alle Controller zu Controllers, die Views unter Views. Das ist mitunter vom Framework so vorgegeben, weil es die Klassen in den entsprechenden Verzeichnissen sucht. Das nennt man dann Convention over Configuration. Statt konkret zu konfigurieren, wo das Framework nach bestimmten Dingen suchen soll, schaut es in Verzeichnissen mit vorgegeben Namen nach.</p> <p>Man spart sich damit einen Konfigurationsschritt. Und das macht es auch aus Sicht des Frameworks einfacher, weil es diese Konfiguration nicht auswerten muss, hat aber auch zum Nachteil, dass man die fachlich zusammengehörenden Dinge voneinander trennt. Zum Beispiel bilden der XY-Controller mit seinen XY-Views und den XY-Models eine fachliche Einheit. Fachlich in dem Sinne, dass damit eine Einheit aus dem Anforderungskatalog des Auftraggebers gemeint ist. Ein Teil der Software soll sich beispielsweise mit Kunden beschäftigen, ein anderer mit Produkten und ein dritter mit der Buchhaltung. Und wenn man gerade an einem dieser Themen arbeitet, muss man zwischen drei verschiedenen Verzeichnissen hin- und herwechseln, um dessen Models, Controllers und Views zu bearbeiten.</p> <p>Andererseits ist auch diese zweite Sortierweise nicht immer die beste. Es kann auch Dinge geben, die man fachübergreifend verwenden möchte. Kunden und Produkte braucht man gemeinsam für die Themen Shop, Verkauf und Lieferabwicklung.</p> <p>Wenn man ein generelles Framework für Anwendungen schreibt, weiß man ja noch nicht, was am Ende die fachlichen Anforderungen aus Sicht des Verwenders sind. Man kann deshalb vorwiegend nur schauen, was für das Framework an sich gut ist und nur ganz grob Hilfen für eine anderweitige Strukturierung anbieten. Zum Beispiel bietet ASP.NET MVC Areas an, in denen man Controllers und Views bündeln und von anderen Areas trennen kann. Die Dinge für die Administrationsoberfläche könnten in eine Area einsortiert werden, das was der normale Anwender sieht, in eine weitere.</p> <p>Wie sortiert man nun ein Framework? Das ist vor allem auch eine Frage der persönlichen Sichtweise. Was für den einen zum Kern gehört, ist für den anderen nur Beiwerk. Solche allgmeinen Namen wie Core oder Tools/Utils/Helpers sind im Grunde genommen nichtssagend. Man kann aus Außenstehender daran nur schwer bis gar nicht erkennen, wo wohl das sein wird, was man gerade sucht. Wenn man eine das Routing betreffene Klasse sucht und die in einem Verzeichnis namens Router findet, dann kann man sich schneller und einfacher durch den Code bewegen, weil die sprechenden Bezeichnern eine gute Orientierungshilfe darstellen.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2017/aug/6/framework-funkions-unterteilung/1701032#m1701032 Nils-Hero 2017-08-06T11:45:24Z 2017-08-06T11:45:24Z Framework Funkions Unterteilung <p>Stimme dedlfix zu. Meiner Meinung nach sollte die Einteilung zuerst die Funktionalität für den Nutzer sein, dann erst die Funktionalität für das Framework.</p> <p>Also beispielsweise für eine Schachanwendung:</p> <pre><code class="block">Core [1] database res bin conf Engine res bin conf Tablebases ... PGN ... Polyglot ... </code></pre> <p>Ich verwende <em><Name></em> für Ordner die die Nutzerfunktionalität beschreiben und <em><name></em> für technisch-strukturelle Ordner (siehe dedlfix´s Post). Das ist natürlich eine persönliche Präferenz (aber beispielsweise Python macht es ähnlich). Ein smartes Framework könnte aus dieser Namenskonvention dann z.B. ableiten, wo es suchen muß.</p> <p>Nach 'Core' packe ich während der Entwicklung alles hin für das ich noch keinen passenden Namensraum gefunden habe. Man kann auch 'Misc' nehmen oder den Ordner ganz weglassen und dessen Kindordner direkt ins Rootverzeichnis packen.</p> <p>Gruß, Nils</p> https://forum.selfhtml.org/self/2017/aug/6/framework-funkions-unterteilung/1701052#m1701052 MB 2017-08-06T15:27:56Z 2017-08-06T15:27:56Z Framework Funkions Unterteilung <p>Moin dedlfix,</p> <blockquote> <p>Was ist damit gemeint? Vendors = Verkäufer? Hab ich als Einteilung für Software noch nicht gehört. Finde ich auch nichts passendes beim Googeln.</p> </blockquote> <p>Ich auch nicht. Trotzdem tauchen sie bei Framework Tutorials immer auf . sehr suspekt.</p> <p>Also erstmal besten Dank für die AW. Das war genau das was ich wissen wollte.</p> <p>vlg MB</p>