Im Beispiel des newsManager wurde die Notwendigkeit von Read-only-Locks durch die Architektur-Entscheidung, dass der newsManager stateless sein sollte, vermieden. Doch was ist mit einer Situation, bei der man weiß, dass Daten, die sich ändern, in einer CFC, die in einem Shared Scope besteht, vorhanden sind? Es scheint, dass entweder die Aufrufe der CFC korrekt gesperrt sein müssen, oder dass die CFC selbst für ein internes Locking sorgen muss.
Wie gesagt sind Daten, die im „this“-Scope und im „variables“-Scope gespeichert werden, Instanzdaten für diese CFC. Doch die meisten Menschen denken nicht daran, dass diese Bereiche gesperrt werden müssen, wenn eine CFC in einem Shared Scope gespeichert wird. Daher soll das hier deutlich gemacht werden. Die „this“- und „variables“-Scopes werden für einen Augenblick übersprungen, um eine CFC zu betrachten, die Daten manipuliert, die im Session-Scope gespeichert sind. Zur Erinnerung: Eine Session-Variable ist eine Variable in einem Shared Scope, die für einen Benutzer spezifisch ist. Ein Einkaufswagen ist ein Beispiel dafür.
Ebenso wie den newsManager kann man auch einen cartManager im Application-Scope erzeugen:
Ab hier werden die Dinge jedoch anders gehandhabt als bei der newsManager CFC. Der cartManager arbeitet als Session-Façade, die Interaktionen mit einer Cart CFC managt, die im Session-Scope gehalten wird. Zur Erinnerung: Die Session-Variablen sind spezifisch für jeden Benutzer. Da der cartManager eine Cart-CFC-Instanz im Session-Scope manipuliert, müssen die Lese- und Schreibzugriffe korrekt gesperrt sein, um Race Conditions zu vermeiden. So eine Situation kann auftreten, wenn der Benutzer die Applikation in mehreren Browserfenstern verwendet. Der cartManager-Code ist in Listing B zu sehen, der Cart-Code in Listing C.
Listing B
Listing C
Anzumerken ist, dass die Cart CFC selbst keine Locks hat und sich nicht darum kümmert und nicht einmal weiß, in welchen Scopes sie verwendet wird. Der cartManager übernimmt diese Verpflichtungen. Das ist ein gutes Design, das Verbindungen zwischen dem Geschäftsobjekt (dem Einkaufswagen) und dem Rest der Applikation reduziert. Zur Vermeidung von Race Conditions managt der cartManager Locks für Lese- und Schreibzugriffe und schreibt Daten in den Session-Scope.
Hoffentlich ist klar, dass, da die Manager CFC eine Variable im Session-Scope manipuliert, Locks eingebunden werden müssen. Das trifft aber auch zu, wenn eine Shared Scope CFC Instanzdaten, die modifizierbar sind, im „this“- oder „variables“-Scope hält. Noch einmal, wenn die CFC-Instanz in einem Shared Scope gehalten wird, befinden sich auch alle Instanzdaten im Shared Scope!
Mit dem Dekryptor von Bitdefender können Opfer von Attacken mit der Shrinklocker-Ransomware Dateien wiederherstellen.
In der Vorweihnachtszeit ist vor allem Malvertising auf dem Vormarsch. Cyberkriminelle locken Nutzer über schädliche…
Dazu trägt unter der Infostealer Lumma-Stealer bei. Hierzulande dominiert der Infostealer Formbook die Malware-Landschaft.
Eine schwerwiegende Anfälligkeit hebelt die Sicherheitsfunktion Seitenisolierung auf. Betroffen sind Chrome für Windows, macOS und…
DeepL Voice ermöglicht Live‑Übersetzung von Meetings und Gesprächen in 13 Sprachen.
Betroffen sind Windows und Windows Server. Microsoft patcht aber auch Schwachstellen in Excel, Word und…