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:
package main;
# Das ist die Router Class
# noch vor der Erstellung der
# Framework Instanz
# $sid ist die Session Id und der Dateiname
if($sid){
tie %SESSION, 'SessionHash', file => $sid or die $@;
}
# sobald der Router die App Class festgestellt hat
# wird %SESSION
# zur Eigenschaft der Framework Instanz gemacht
# und immer dann, wenn es in der Session was zu speichern gibt
# $self ist die Framework Instanz
# in App Class Login
# Logindaten (username, Zeitstempel, Group) speichern
tied(%{$self->{SESSION}})->write;
Schönen Sonntag.
Stichworte Aggregation, Delegation