My WCF application has to call a service that does not have any concurrency checking in it. It is a service created by a third party and getting them to add concurrency checking may not be possible.
I can ensure that the only way to call the third party service is via my WCF application. So I am considering putting concurrency checking in my code.
To do this, I will use an identifier that uniquely describes the data being modified. The idea is that if one call to the service is modifying data related to the identifier, then other calls for that identifier will need to wait till it is done.
My WCF Service is load balanced. I can have as many as 16 instances running at the same time, all on different virtual machines.
So most of the .NET classes that deal with synchronization assume a shared memory space.
Are there standard, "best practice" type ways to do synchronization for load balanced instances of services?
I have considered using a database table (SQL Server) to try to manage this, but seems wrong from an architectural point of view to use my persistence layer for this purpose. I am hoping for another solution.
How do I do synchronization (Locks, Mutex, Semaphore, etc) across machines? (Preferably without using database tables to manage it.)
Use a Distributed lock manager to lock resource modification based on the identifier you created.
Some of DLM's you can use are:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With