我正在创建一个WCF Web服务,它将调用包装到另一个远程API,并且是收费的。
我想让它成为一个同步服务,以方便客户端,并且因为99%的时间,远程API会快速响应,因此客户端没有明显的延迟。
我也想让这项服务收费。客户可以在他们的帐户上存款,如果成功,将会收取每个服务电话。
显然,我需要确保在每次请求进入时,都会有足够的资金来拨打电话。
我的计划和当前原型执行以下操作:
通过这种方式,我可以允许客户端发出并发请求,并且唯一的瓶颈(我认为!)是在余额检查期间。
我的思维过程是将整个呼叫包含在c#Transaction中意味着客户端一次只能拨打一个电话。
任何人都可以预见到这种机制存在任何问题,或者提出更好的设计方法吗?
我可以看到的一个问题是,如果第一部分完成并且客户收费,但在操作/远程API调用期间发生了某些灾难性并且没有进行退款将发生不完整的电话。我可以检测到这些,因为没有完成或退款的标记,并且必须“离线”处理它们。