1. 程式人生 > >控制ASP.NET Web API 調用頻率

控制ASP.NET Web API 調用頻率

har per roc .net gin () http attr dep

原文:控制ASP.NET Web API 調用頻率

很多的api,例如GitHub’s API 都有流量控制的做法。使用速率限制,以防止在很短的時間量客戶端向你的api發出太多的請求.例如,我們可以限制匿名API客戶端每小時最多60個請求,而我們可以讓更多的經過認證的客戶端發出更多的請求。那麽asp.net webapi如何實現這樣的功能呢?在項目WebApiContrib 上面已經有了一個實現:https://github.com/WebApiContrib/WebAPIContrib/blob/master/src/WebApiContrib/MessageHandlers/ThrottlingHandler.cs ,具有良好的可擴展性。

最簡單的方法是使用ThrottlingHandler註冊使用簡單的參數,例如控制每個用戶每小時60個請求:

config.MessageHandlers.Add(new ThrottlingHandler(
    new InMemoryThrottleStore(), 
     id => 60, 
    TimeSpan.FromHours(1)));
 
IThrottleStore接口 使用ID +當前的請求數量。InMemoryThrottleStore 只有一個內存中存儲,但你可以輕松地擴展實現為分布式緩存或數據庫。還可以輕松地自定義ThrottlingHandler的行為,例如我們針對一個ip地址可以更好的進行控制。
 
Throttling ASP.NET Web API calls
Introducing ASP.NET Web API Throttling handler
Throttling Suite for Web API

控制ASP.NET Web API 調用頻率