背景:
我的WCF应用程序必须调用一个没有并发检查的服务。这是由第三方创建的服务,让他们添加并发检查可能不可能。
我可以确保唯一调用第三方服务的方式是通过我的WCF应用程序。因此,我考虑在我的代码中添加并发检查。
为了做到这一点,我将使用一个唯一描述正在修改的数据的标识符。如果对服务的一个调用正在修改与标识符相关的数据,则其他对该标识符的调用将需要等待直到它完成。
问题:
我的WCF服务是负载均衡的。我可以同时运行多达16个实例,所有实例都在不同的虚拟机上。
因此,大多数处理同步的.NET类都假设有一个共享内存空间。
是否有标准的“最佳实践”类型的方法来为负载均衡的服务实例进行同步?
我考虑使用数据库表(SQL Server)来尝试管理这个问题,但从架构的角度来看,使用持久层似乎是错误的。我希望有另一种解决方案。
总结:
如何跨机器进行同步(锁、互斥、信号量等)?(最好不要使用数据库表来管理它。)