« THE TRUCK FACTOR (unplugged ;-)) | Main| Excel, Stored Procedure und Parameter »

Wie man sich eine Grube gräbt (5)

0
Kategorie   

oder wie man ein verstecktes Singelton falsch implementiert, am Beispiel eines Event-Handlers in Sharepoint

Also bei der Programmierung es Eventhandlers in Sharepoint überschreibt, man z.B. die Methode

ItemAdding( .... )

Als Argument bekommt, man die Properties mit, diese enthalten eine SiteID beinhalten, wenn man nun auf eine bestimmte Liste zugreifen möchte ist Code wie der folgende evtl. unerlässlich:
using (SPSite site = new SPSite(properties.SiteId)) {
  using (SPWeb web = site.OpenWeb()) {
    _list = web.Lists"UpdateLog";
  }
}

Natürlich ist das öffnen der Site und des Web ein wenig intensiv - Ressourcen und Performance. Was denkt sich der geneigte Programmierer???

Ich mache mir eine Member und speichere es darin, und erweitert den Code ungefähr wie folgt:
if (_list == null) {
  using (SPSite site = new SPSite(properties.SiteId)) {
    using (SPWeb web = site.OpenWeb()) {
      _list = web.Lists"UpdateLog";
    }
  }
}

Und schon habe ich ein Singelton in einer Member.
Das Gute an dieser Implementierung ist, wenn der Aufrufer des EventHandlers immer ein neues Objekt instanziiert, dann läuft es. Ist zwar ein wenig zuviel Code, aber es läuft!
(Denn _list ist immer null!)

Wird aber keine neue Instanz des Objektes erzeugt, dann läuft es ohne Multi-Threading auch, aber bei einem Bulk-Update im Edit-Sheet kann es zu Problemen kommen

Wenn der geneigte Programmierer die Doku gelesen hätte, hätte er folgendes finden können ->

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


Manchmal habe ich den Eindruck, dass die Software Industrie eigentlich nur aus Personen besteht, welche mit minimalen Wissen was ausprobieren

Ist dies eigentlich in anderen Berufen auch so..... Stelle mir gerade vor, dass ich ein Französisches Baguette bei meinem Bäcker kaufe und zu Hause entsetzt feststelle, dass es nach Kürbiskern-Brot steht.
Auf Nachfrage antwortet der Bäcker, sorry hatte nicht auf den Inhalt geschaut, aber gedacht, die Backmischung wäre schon die Richtige

Also nix für ungut!

Gruß JJR

Mach einen Kommentar

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2