eskv.client 1.4.3

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

// Install eskv.client as a Cake Tool
#tool nuget:?package=eskv.client&version=1.4.3                

eskv.client

eskv.clienteskv 的客户端库

入门

使用 IDE 或以下命令将其添加到您的项目中

dotnet add package eskv.client

在 F# 脚本中,您可以使用 #r 指令引用它

#r "nuget: eskv.client"

对于测试版,请在 cli 上使用 --prerelease 标志或指定版本

#r "nuget: eskv.client, Version=*-beta*"

使用以下行在 eskv.fsx 脚本文件中保存您的第一个值

#r "nuget: eskv.client"
open eskv

let client = EskvClient()

client.Save("Hello","World")

将 eskv 服务器运行时执行它,并使用 dotnet fsi eskv.fsx 在 F# 交互中使用,浏览器打开到 https://127.0.0.1:5000。您应该在新 Hello 键所在的默认容器中看到一个值为 World 的新键。

代码版权所有 Jérémie Chassaing。 eskveskv.client 均在 学术公共许可证 下发布。

API

此文档仅呈现同步操作。所有方法都有一个带有异步后缀的异步版本,并返回一个 TaskTask

构造函数

let client = EskvClient()

使用默认 https://127.0.0.1:5000 网址实例化新的 EskvClient。

EskvClient(uri: Uri)

使用指定的网址实例化新的 EskVClient。

键值存储

键值存储可以在指定键下保存值。 容器 组合。如果没有指定容器,则使用 默认

键值存储支持版本控制使用的 ETags

保存
Save(key: string, value: string) : unit

在指定键下保存值。如果键不存在,则创建键。如果已存在,则更新值。不进行版本控制。

Save(container: string,key: string, value: string) : unit

在给定的容器中保存指定键下的值。如果键不存在,则创建键。如果已存在,则更新值。不进行版本控制。

尝试保存
TrySave(key: string, value: string, etag: string) : string

使用版本控制保存指定键下的值。如果键不存在,在 etag 参数中传递 null 以创建它。

如果键已存在,传递从 Load 或之前的 TrySave 调用中获得的当前 ETag 值以更新值。

如果 ETag 匹配,则使用指定的值创建或更新键,并返回新的 ETag。否则方法返回 null

TrySave(container: string,key: string, value: string, etag: string)

使用版本控制,在给定的容器中保存指定键下的值。如果键不存在,在 etag 参数中传递 null 以创建它。

如果键已存在,传递从 Load 或之前的 TrySave 调用中获得的当前 ETag 值以更新值。

如果 ETag 匹配,则使用指定的值创建或更新键,并返回新的 ETag。否则方法返回 null

尝试加载
TryLoad(key: string) : LoadResult

尝试从指定键加载值。

如果键存在,LoadResultKeyExists 属性为 true,Value 包含键值,且 Etag 是当前键的 ETag。

如果键不存在,LoadResultKeyExists 属性为 false,ValueEtagnull。此 null ETag 可以在 TrySave 调用中使用,表示键不存在。

TryLoad(container: string, key: string) : LoadResult

尝试从指定键在给定的容器中加载值。

LoadResult 与没有容器的重载类似。

删除键
DeleteKey(key: string) : unit

如果键存在,则删除键,否则无操作。

DeleteKey(container: string, key: string) : unit

如果指定容器中的键存在,则从指定容器中删除键,否则无操作。

获取键
GetKeys() : string[]

返回 默认 容器中的所有键。

如果容器不存在,则抛出异常。

GetKeys(container: string) : string[]

返回指定容器中的所有键。

如果容器不存在,则抛出异常。

获取容器
GetContainers() : string[]

返回所有容器的名称。如果没有容器存在,则为空。

删除容器
DeleteContainer(container: string) : unit

如果存在,则删除指定的容器,否则无操作。

事件存储

追加
Append(stream: string, events: EventData seq) : unit

将事件追加到指定流的末尾。

EventData 结构包含一个字符串属性 EventType 和一个字符串属性 Data

尝试追加
TryAppend(stream: string, expectedVersion: int events: EventData seq) : AppendResult

尝试将事件追加到指定流的末尾。如果流的当前版本等于指定的 expectedVersion,则操作成功。

EventData 结构包含一个字符串属性 EventType 和一个字符串属性 Data

当流尚不存在时,将 ExpectedVersion.NoStream 作为 expectedVersion 参数提供。

当操作成功时,AppendResultSuccess 属性等于 trueExpectedVersion 属性指示流的当前版本。它可以传递给 TryAppend,以追加新事件到流中。NextEventNumber 属性指示用于读取刚刚追加的事件之后的事件的下一个事件号。

按顺序读取流
ReadStreamForward(stream: string, start: int) : Slice

从指定事件号开始读取指定流的全部事件。对于 start 使用 0,以读取从起始点开始的所有事件。

返回一个 Slice 结构

  • State:如果流不存在,则为 NoStream,否则为 StreamExists
  • Events:包含读取事件的 EventRecord 数组。
  • EndOfStream:指示是否已达到流的末尾。
  • ExpectedVersion:最后读取的事件号。可以传递给 TryAppend,以在流的末尾追加新事件。
  • NextEventNumber:可以用来加载剩余流的下一个事件号。

EventRecord 结构具有以下属性

  • EventNumber:流中事件的编号
  • EventType:事件的类型
  • Data:事件数据
  • OriginalEventNumber:在投影(例如,对于 $streams)的情况下,原始流中事件的编号,否则等于 EventNumber
  • 'OriginalStream':投影(例如,从 $streams)的情况下的原始流名称,否则等于提供的流名称。
ReadStreamForward(stream: string, start: int, count: int) : Slice

从指定流中从指定事件编号开始读取最多 count 个事件。使用 0 作为 start 来从开始读取事件。

返回的 Slice 与前面的重载类似。

使用切片中的 NextEventNumber 作为下一次调用 ReadStreamForwardstart 参数,以获取下一个切片。

ReadStreamForward(stream: string, start: int, count: int, linkOnly: bool) : Slice

从指定流中从指定事件编号开始读取最多 count 个事件。使用 0 作为 start 来从开始读取事件。

返回的 Slice 与前面的重载类似。

linkOnly 为 true,并且流是投影(例如,stream)时,EventRecordData 属性为 null。

ReadStreamForward(stream: string, start: int, count: int, linkOnly: bool, startExcluded: bool) : Slice

从指定流中从指定事件编号开始读取最多 count 个事件。使用 0 作为 start 来从开始读取事件。

返回的 Slice 与前面的重载类似。

startExcluded 为 true 时,返回的第一个事件是 start 之后的事件。当维护预期的版本并读取后续事件时,可以使用此功能。

ReadStreamSince
ReadStreamSince(stream: string, start: int)

相当于 ReadStreamForward

ReadStreamSince(stream: string, start: int, count: int)

相当于 ReadStreamForward

ReadStreamSince(stream: string, start: int, count: int, linkOnly: bool)

相当于 ReadStreamForward

GetStreamAsync
GetStreamAsync(stream: string, start: int, count: int, linkOnly: bool, startExcluded: bool) : Task<ReadResult>

此方法仅存在于异步版本中,因为它返回一个包含 IAsyncEnumerable<EventRecord>ReadResult

参数与 ReadStreamForward 类似。

返回的 ReadResult 具有以下属性

  • State:如果流不存在,则为 NoStream,否则为 StreamExists
  • Events :一个包含已读取事件的 IAsyncEnumerable<EventRecord>
  • ExpectedVersion:最后读取的事件号。可以传递给 TryAppend,以在流的末尾追加新事件。
  • NextEventNumber:可以用来加载剩余流的下一个事件号。
TryAppendOrRead
TryAppendOrRead(stream: string, expectedVersion: int events: EventData seq) : AppendOrReadResult

参数类似于 TryAppend。当 expectedVersion 与当前流版本不匹配时,符合 expectedVersion 的事件将在 AppendOrReadResult 结构的 NewEvents 属性中返回。在这种情况下,ExpectedVersionNextEventVersion 属性与最后一个返回的事件相关。

GetStreams
GetStreams(start: int, count: int) : StreamSlice

start 开始获取 count 个流名称。

StreamSlice 结构具有以下属性

  • State:如果还没有流存在,则为 NoStream,否则为 StreamExists
  • Streams:包含流名称的数组。
  • LastEventNumber:最后返回的流创建事件的编号。
  • NextEventNumber:下一个流创建事件的编号。
产品 兼容和额外的计算目标框架版本。
.NET 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 Standard的信息。

NuGet 包

该包未被任何 NuGet 包使用。

GitHub 仓库

该包未被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
1.4.3 402 11/4/2022
1.3.2 361 11/4/2022
1.2.3 412 10/23/2022
1.0.28 384 6/17/2022
1.0.26-gcde74f07e4 141 6/17/2022
1.0.25-g018253e238 120 6/17/2022
1.0.24-beta-gf65e83c8a0 147 3/25/2022
1.0.20-beta-g4b509857e4 152 3/11/2022
1.0.19-beta-g972fb2c79b 136 3/11/2022
1.0.17-beta-g572da9798f 144 3/11/2022
1.0.15-beta-g163c9028c7 158 2/3/2022
1.0.13-beta-g300b52be39 150 2/3/2022
1.0.11-beta-g88318336f9 150 10/15/2021
1.0.10-beta-g58a4e6456c 156 10/15/2021
1.0.9-beta-g23f345ab88 186 10/15/2021
1.0.8-beta-gc770c0f83b 192 10/15/2021
1.0.6-beta-ge21effba94 170 10/14/2021
1.0.4-beta-g576a5818e8 163 10/13/2021
1.0.2-beta-g7de10401cb 189 10/13/2021