pesimistic Locking & TableModule & Repositories

1 view
Skip to first unread message

Laurin Stoll

unread,
Jun 13, 2009, 9:39:20 AM6/13/09
to altnetde
Hallo zusammen,

Eine kleine Frage. Ich verwende in eine Anwendung pesimistic locking.
Und zwar gibt es eine Tabelle die hält sämtliche locks auf bestimmte
Bereiche. Nun steckt meine BL in TableModules und mein Datenzugriff
per EF wird von Repositories nochmals abstrahiert.

Gerne würde ich als konsument vom locking nicht viel mitbekommen. Also
z.B.:

userModule.AddUser("neuer Benutzername");

Es kann jetzt sein, dass der gesamte Bereiche "Benutzerverwaltung" im
Moment gesperrt ist. Intern macht AddUser dann wohl sowas:

public void AddUser(string userName)
{
this._userRepository.AddUser(username);
}

Meine Frage ist jetzt: Soll ich das überprüfen der Locks im user
Repository übernehmen oder im TableModule?? Repositories kapseln für
mich den Datenzugriff, Locking ist für mich irgendwie schon
Datenzugriff und nicht wirklich Logik ich würde deshalb das Überprüfen
des Lockings in den Repositories bevorzugen. Wenn dann gelockt ist
kann das Repository ja eine Exception werfen.

Was meint ihr? Gehört sowas eher in die TableModules?

Besten Dank für eure Meinungen,

Viele Grüsse
Laurin

Stefan Lieser

unread,
Jun 13, 2009, 10:38:42 AM6/13/09
to altn...@googlegroups.com
Hi Laurin,

Session Handling inkl. Transactions und Locking gehört meiner Ansicht
nach nicht ins Repository sondern in den unmittelbar darüber liegenden
Business Service. Andernfalls kannst du z.B. nicht zwei verschiedene
Repositories in einem Aufruf gleichzeitig verwenden.

Viele Grüße
Stefan Lieser
--
http://lieser-online.de

Laurin Stoll

unread,
Jun 13, 2009, 11:00:31 AM6/13/09
to altnetde
Hallo Stefan,

Hm... spannender Gedanke. Aber dieses Problem habe ich beim locking ja
nicht oder?

Wenn mir das erste Repository eine Exception wegem Locking wirft ist
der zweite Aufruf doch sowieso hinfällig. Klar, Transaction handling
gehört in den Business Service, aber locking... ?
Gut man kanns auch so sehen: Locking hat etwas mit Logik zu tun, kommt
also in eine Komponente und die steuere ich von meiner TableModule
Klasse....hm... ok right.

Danke :)

grüsse

On 13 Jun., 16:38, Stefan Lieser <ste...@lieser-online.de> wrote:
> Hi Laurin,
>
> Session Handling inkl. Transactions und Locking gehört meiner Ansicht  
> nach nicht ins Repository sondern in den unmittelbar darüber liegenden  
> Business Service. Andernfalls kannst du z.B. nicht zwei verschiedene  
> Repositories in einem Aufruf gleichzeitig verwenden.
>
> Viele Grüße
> Stefan Lieser
> --http://lieser-online.de
>
> Am 13.06.2009 um 15:39 schrieb Laurin Stoll <devc...@yooapps.com>:
>
>
>
>
>
> > Hallo zusammen,
>
> > Eine kleine Frage. Ich verwende in eine Anwendung pesimistic locking.
> > Und zwar gibt es eine Tabelle die hält sämtliche locks auf bestimmte
> > Bereiche. Nun steckt meine BL in TableModules und mein Datenzugriff
> > per EF wird von Repositories nochmals abstrahiert.
>
> > Gerne würde ich als konsument vom locking nicht viel mitbekommen. Al
> > so
> > z.B.:
>
> > userModule.AddUser("neuer Benutzername");
>
> > Es kann jetzt sein, dass der gesamte Bereiche "Benutzerverwaltung" im
> > Moment gesperrt ist. Intern macht AddUser dann wohl sowas:
>
> > public void AddUser(string userName)
> > {
> >   this._userRepository.AddUser(username);
> > }
>
> > Meine Frage ist jetzt: Soll ich das überprüfen der Locks im user
> > Repository übernehmen oder im TableModule?? Repositories kapseln für
> > mich den Datenzugriff, Locking ist für mich irgendwie schon
> > Datenzugriff und nicht wirklich Logik ich würde deshalb das  
> > Überprüfen
> > des Lockings in den Repositories bevorzugen. Wenn dann gelockt ist
> > kann das Repository ja eine Exception werfen.
>
> > Was meint ihr? Gehört sowas eher in die TableModules?
>
> > Besten Dank für eure Meinungen,
>
> > Viele Grüsse
> > Laurin- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Rene Muster

unread,
Jun 13, 2009, 4:09:07 PM6/13/09
to altnetde
Hallo,

ich versuche es meistens so zu handeln:
Der BL schickt nur spezifizierte Commands an den DL. Der DL wird dann
- je nach Anforderung - entweder ohne Locks (resp. Queue) oder mit
einer internen CommandQueue implementiert. Bei der Queue wird fast
alles über Notifications mit spezifischen Timeouts geregelt...
Ansonsten kann die Datenbank (sei es MSSQL, SAP oder MySQL) das locken
schon ganz gut alleine, denke ich. :)

Grüße
Rene
Reply all
Reply to author
Forward
0 new messages