WCF:限制每小时的呼叫数 – 每个用户

我有一个WCF服务(basicHttpBinding,基本身份验证,IIS 6.0),我希望在此基础上限制每小时的呼叫数量.例如,每位用户每小时最多1000次通话(谷歌地图等).

我还想实现某种订阅机制,以便用户可以在各种“价格计划”中升级其呼叫限制.

我知道我可以使用自定义Inspector实现这一点,由包含某种“订阅”表和计数器的DB支持,但我想避免重新发明轮子.

有没有人有这方面的经验?是否有第三方项目/图书馆支持这种开箱即用?

谢谢.埃里克

最佳答案 我不知道是否有任何现成的套餐可以做到这一点(任何人都在听?可能是个机会!),但这是我对这个问题的快速思考:

>您的要求是“在最后一小时内” – 让我们说“时间段”而不是小时,因为这可以很容易地改变.您必须在该时间段内跟踪该用户的所有呼叫,并具有某种机制来滚动或归档此数据.如果您要存储在数据库中,这可能是一个重要的性能问题,具体取决于您的数据库,用户数量,每个时间段的调用次数等.设计一个通用接口可以很容易如果需要,可以在缓存中进行拼接 – 但是您还需要跟踪检索API /服务限制信息所花费的总时间.
>如果可能,在服务级别对“有限功能”进行分区 – 而不是单独的操作或方法.如果您可以将限制应用于整个服务的使用,只适用于特定或个别方法,一切都会更容易:代码,跟踪,用户的理解等.一般来说,这是……
>适当的拦截地点和检查不在消息检查器恕我直言,但在OperationInvoker中.通过服务范围的行为安装自定义操作调用程序,您将锁定整个服务.此外,您还可以访问消息后处理信息,例如经过身份验证的用户名等.请参阅Skonnard在MSDN“Extending WCF via Behaviors”(http://msdn.microsoft.com/en-us/magazine/cc163302.aspx#S6)上的文章.

希望这是有帮助的.如果您决定自己做,请确保处理并发(多个线程同时调用您的服务)!如果您有更多问题,那么人们可能会了解您的情况的基本参数,例如用户数量,呼叫,可扩展性问题(例如,Web场或单个服务器?). – 基思

点赞