【发布时间】:2020-01-08 18:23:07
【问题描述】:
我整天都在网上搜索一个简单的比较,但还没有找到有关该主题的任何最新信息。
我最近加入了一个团队,该团队正在处理一个使用 RestSharp 进行所有 API 调用的项目。我之前通过.NET Core IHttpclientFactory 的CreateClient 方法实现了一个HttpClient。
我正在寻找有关每个调用 REST 端点的客观利弊。这仅仅是偏好问题吗?在 RestSharp 库和 IHttpClientFactory 实现之间,HttpClient 生命周期的管理方式是否存在根本差异?
我注意到,或者至少在我看来,我无法在细粒度级别上管理传入的响应,但为了提出问题,让我们将其归结为我缺乏使用 RestSharp 的经验。
【问题讨论】:
-
那些是不同的东西,这就是为什么没有比较。 RestSharp 是一个 HTTP 库,与 HttpClient 非常相似。另一方面,HttpClientFactory 负责 HttpClient 缓存和生命周期
-
是的。所以 IHttpClientFactory 抽象了 HttpClient 的缓存和生命周期,所以通过 CreateClient 方法实现接口,你本质上也是在使用 HttpClient,但没有管理所述 HttpClient 生命周期的麻烦。如果 RestSharp 具有类似的功能,或者实际上只是实现 IHttpClientFactory,那么如果 RestSharp 或任何第三方库在所使用的平台上已经成熟,为什么还要费心呢?这就是为什么我对利弊感兴趣
-
我们曾经使用过 RestSharp,现在我们使用的是 HttpClient(Typed、named 和 HttpClientFactory),它们都是很棒的客户端,但是使用 net core 时我们保存了一个依赖项。为什么要使用第三方?之前微软的库有一些弱点,不太好用,所以有些库弥补了这些缺点,有了net core,一切都变了,客户端更容易使用,看起来很稳定,性能很好……
-
...,但这并不会使库变得不必要,我会说如果你有一个带有其他库的旧数据库是可以的,如果你正在使用 net core 创建一个新项目,请尝试官方的,或者如果您需要一些库更易于使用的功能,请继续
-
RestSharp 使用 HttpWebRequest,现在是 uses HttpClient 内部的遗留类
标签: c# .net-core httpclient