fusillade 2.6.30

ID 预留
dotnet add package fusillade --version 2.6.30                
NuGet\Install-Package fusillade -Version 2.6.30                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="fusillade" Version="2.6.30" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中,以引用包。
paket add fusillade --version 2.6.30                
#r "nuget: fusillade, 2.6.30"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此代码复制到交互工具或脚本的源代码中,以引用包。
// Install fusillade as a Cake Addin
#addin nuget:?package=fusillade&version=2.6.30

// Install fusillade as a Cake Tool
#tool nuget:?package=fusillade&version=2.6.30                

NuGet Stats Build Code Coverage

<br /> <a href="https://github.com/reactiveui/fusillade"> <img width="120" heigth="120" src="https://raw.githubusercontent.com/reactiveui/styleguide/master/logo_fusillade/main.png"> </a>

Fusillade:适用于移动开发的具有见解的 HTTP 库

Fusillade 帮助您在用 C# 编写的移动和桌面应用程序中编写更有效的代码。其设计目标和功能集合受到了 Volley 以及 Picasso 的启发。

这对我有什么作用?

Fusillade 是一套 HttpMessageHandlers(即 HttpClient 的 "驱动程序"),可让您的移动应用程序更高效、更响应。

  • 自动消重有关请求 - 如果您的 TweetView 类的每个实例都请求相同的头像图片,Fusillade 仅执行 一次 请求并将结果提供给每个实例。所有 GETHEADOPTIONS 请求都进行了消重。

  • 请求限制 - 请求总是以4个为单位发送(Volley默认设置) - 在不过度压垮网络连接的情况下发起大量请求。

  • 请求优先级 - 背景请求应该运行在比用户发起的请求较低的优先级,但实际上实现这一点相当困难。通过在应用程序中进行一些更改,您可以向Fusillade暗示哪些请求应该跳到队列的前面。

  • 投机性请求 - 在页面加载时,许多应用程序会尝试投机性地缓存数据(即尝试预先下载用户可能点击的数据)。将请求标记为投机性将允许请求直到达到某个数据限制,然后取消未来的请求(例如,“在获得5MB缓存数据之前,继续在后台下载数据”)

如何使用它?

与Fusillade交互的最简单方法是使用名为NetCache的类,该类包含多个内置场景。

public static class NetCache
{
    // Use to fetch data into a cache when a page loads. Expect that
    // these requests will only get so far then give up and start failing
    public static HttpMessageHandler Speculative { get; set; }

    // Use for network requests that are running in the background
    public static HttpMessageHandler Background { get; set; }

    // Use for network requests that are fetching data that the user is
    // waiting on *right now*
    public static HttpMessageHandler UserInitiated { get; set; }
}

要使用它们,只需创建一个带有给定处理器的HttpClient

var client = new HttpClient(NetCache.UserInitiated);
var response = await client.GetAsync("http://httpbin.org/get");
var str = await response.Content.ReadAsStringAsync();

Console.WriteLine(str);

在哪里使用?

到处都适用!Fusillade是一个便携式库,它可以在以下平台中使用

  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Mac
  • Windows桌面应用程序
  • WinRT/Windows Phone 8.1应用程序
  • Windows Phone 8

关于投机性请求的更多信息

通常,在移动应用程序中,每当应用程序从待机状态恢复时,您都希望重置投机限制。您如何做这取决于平台,但在那个回调和调用中,您需要调用...

NetCache.Speculative.ResetLimit(1048576 * 5/*MB*/);

离线支持

Fusillade可以将它看到的响应进行可选缓存,在您的应用程序离线时(或者您只是希望通过获取缓存数据来提高应用程序的速度)回放给您。以下是设置它的方法

  • 实现IRequestCache接口
public interface IRequestCache
{
    /// <summary>
    /// Implement this method by saving the Body of the response. The
    /// response is already downloaded as a ByteArrayContent so you don't
    /// have to worry about consuming the stream.
    /// <param name="request">The originating request.</param>
    /// <param name="response">The response whose body you should save.</param>
    /// <param name="key">A unique key used to identify the request details.</param>
    /// <param name="ct">Cancellation token.</param>
    /// <returns>Completion.</returns>
    Task Save(HttpRequestMessage request, HttpResponseMessage response, string key, CancellationToken ct);

    /// <summary>
    /// Implement this by loading the Body of the given request / key.
    /// </summary>
    /// <param name="request">The originating request.</param>
    /// <param name="key">A unique key used to identify the request details,
    /// that was given in Save().</param>
    /// <param name="ct">Cancellation token.</param>
    /// <returns>The Body of the given request, or null if the search
    /// completed successfully but the response was not found.</returns>
    Task<byte[]> Fetch(HttpRequestMessage request, string key, CancellationToken ct);
}
  • 将实例设置为NetCache.RequestCache,然后发起一些请求
NetCache.RequestCache = new MyCoolCache();

var client = new HttpClient(NetCache.UserInitiated);
await client.GetStringAsync("https://httpbin.org/get");
  • 现在,您可以使用NetCache.Offline在互联网断开连接时获取数据
// This will never actually make an HTTP request, it will either succeed via
// reading from MyCoolCache, or return an HttpResponseMessage with a 503 Status code.
var client = new HttpClient(NetCache.Offline);
await client.GetStringAsync("https://httpbin.org/get");

如何与ModernHttpClient一起使用?

向应用程序启动类的一个静态构造函数中添加此行

using Splat;

Locator.CurrentMutable.RegisterConstant(new NativeMessageHandler(), typeof(HttpMessageHandler));

优先级是什么意思?

优先级顺序是:用户发起 > 背景 > 投机性。这意味着任何设置为用户发起的请求优先级都高于背景或投机性。

显式是一个特殊的选项,允许您设置一个可以高于、低于或介于任何预定义情况之间的显式值。

var lowerThanSpeculative = new RateLimitedHttpMessageHandler(
                new HttpClientHandler(), 
                Priority.Explicit, 
                9);

var moreThanSpeculativeButLessThanBAckground = new RateLimitedHttpMessageHandler(
                new HttpClientHandler(), 
                Priority.Explicit, 
                15);

var doItBeforeEverythingElse = new RateLimitedHttpMessageHandler(
                new HttpClientHandler(), 
                Priority.Explicit, 
                1000);

静态的吗?真讨厌!我喜欢$OTHER_THING!您的优先级有问题,我想制定我自己的方案!

NetCache只是一个预先提供的默认设置,有趣的代码在一个名为RateLimitedHttpMessageHandler的类中。您可以显式创建它并根据需要进行配置。

这个名字是什么意思?

“Fusillade”这个词是“Volley”的同义词😃

贡献

Fusillade在OSI批准的开源许可下开发,可以免费使用和分发,即使用于商业用途。由于我们的开源众筹模式和透明度,我们可以将支持和资金通过贡献者和社区渠道流。我们❤️参与这个项目的人,并且我们很想让您加入,尤其是如果您是初学者,或者以前从未为开源项目做过贡献。

因此,为了您这迷人的想加我们的漂亮的人,以下是您如何支持我们的方式

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 支持。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 支持。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 支持。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 支持。 netstandard2.1 已计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard 的信息。

NuGet 包 (14)

显示依赖 fusillade 的前5个NuGet包

下载
ModSink.Common

此库包含 ModSink 的大部分逻辑

XamBasePacket

包含所有必要的类、模型和库来开始开发Xamarin应用程序

Xablu.WebApiClient

Xablu WebApiClient 是一个旨在简化 .NET 项目中 Web API 服务消费的 C# HTTP 库

BD.Common.Mvvm

次元超越 Mvvm 库

TranquilHTTP

Tranquil HTTP 是一个针对移动开发的 C# HTTP 库,旨在使其解决复杂的 HTTP 通信场景变得非常简单

GitHub 仓库 (4)

显示依赖 fusillade 的前4个最受欢迎的GitHub 仓库

仓库 星星
BeyondDimension/SteamTools
🛠「Watt Toolkit」是一个开源跨平台的多功能 Steam 工具箱。
reactiveui/ReactiveUI.Samples
此仓库包含 ReactiveUI 示例。
HTBox/crisischeckin
Crisischeckin 人道主义工具箱仓库
Respawnsive/Apizr
基于 Refit 的 Web API 客户端管理,但具有弹性(重试、连接性、缓存、身份验证、日志、优先级等)
版本 下载 最后更新
2.6.30 1,018 5/2/2024
2.6.1 6,421 9/21/2023
2.4.67 18,393 2/1/2023
2.4.62 2,438 11/24/2022
2.4.47 3,750 6/22/2022
2.4.1 12,621 12/13/2021
2.3.1 32,028 1/22/2021
2.2.9 2,680 11/27/2020
2.2.1 2,447 10/23/2020
2.1.9 12,476 7/29/2020
2.1.1 26,865 5/10/2020
2.0.5 98,117 4/2/2019
2.0.2 3,736 2/19/2019
2.0.1 5,529 2/5/2019
1.0.0 51,954 9/5/2017
0.7.0 43,630 11/10/2016
0.6.0 96,411 5/1/2014
0.5.0 1,640 4/25/2014