我以前使用过 WCF 服务,现在我有一个新项目即将开始。
我仍处于设计阶段,我想知道处理以下场景的最佳方法是什么。
我将让多个客户端同时连接到我的 WCF 服务,在服务上触发不同的方法(操作合约):
A.触发的一些方法只是纯粹的“读取”方法(例如 GetListOfCustomers)。
B.有些触发的方法是复杂的“读取”方法(例如 GetAllProductsByCustomerId)。
这些方法需要从数据库获取客户,
检查他的一些东西,然后获取他购买的所有产品。
(也就是说,此方法中有 2 次对数据库的调用)。
C.有些是“写入”方法(例如“RemoveCustomer”或“SetProductOutOfStock”)。
我的问题是 - 如何同步所有这些调用以免出现并发问题?
I don't希望整个服务串行处理调用,因为这会损害客户端的性能(某些调用可能需要 3-4 秒才能处理)。
那么我的解决方案是什么?
对具有“多个”线程的所有客户端使用“单个”实例,然后使用锁对象?这不会导致串行化吗?
或者我是否需要一个不同的锁对象用于“读”和一个不同的锁对象用于“写”?
或者我是否需要“写”功能的锁和“读”功能的其他东西?
这是我在 StackOverflow 上遇到的第一个问题。
感谢任何可以提供帮助的人!
更新:我将使用“Linq-To-SQL”作为我的 ORM。