谁负责限制网络请求?

Jus*_*tch 7 c# throttling httpwebrequest

我正在开发一个从第三方网站检索信息的类库.如果在设定的时间段(~0.5秒)内发出太多请求,则正在访问的网站将停止响应.

我的库的公共方法直接与Web服务器上的文件资源相关.换句话说,每次调用方法时,HttpWebRequest都会创建一个并将其发送到服务器.如果一切顺利,则会将XML文件返回给调用者.但是,如果这是小于0.5秒的第二个Web请求,则请求超时.

我的困境在于我应该如何处理请求限制(如果有的话).显然,我不希望呼叫者坐在那里等待响应 - 特别是如果我完全确定他们的请求会超时.

我的库是否更有意义对我创建的Web请求进行排队和限制,或者如果客户端在API调用之间没有等待足够长的时间,我的库是否应该抛出异常?

And*_*iih 6

库的概念是尽可能少地为客户端代码提供担忧.因此,我会使库成为排队请求并及时返回结果的工作.在理想的世界中,您将使用回调或委托模型,以便客户端代码可以异步操作,而不是阻止UI.您还可以提供跳过队列的选项(如果操作太快则失败),甚至可能在队列模型中提供优先级.

我还认为图书馆作者有责任默认成为一个好公民,并且图书馆的默认操作是遵守数据提供者的条件.