gpt4 book ai didi

c# - 向 ServiceStack 服务发送大消息

转载 作者:行者123 更新时间:2023-11-30 22:19:13 24 4
gpt4 key购买 nike

我需要创建一个允许客户端发送包含大量数据的消息的服务,但我不确定如何构建 API。

假设一个客户想要保存一个包含可变数量相关对象的新对象。例如,一个 Order,它包含 OrderDetail 对象中包含的多个订单项。一个订单可能有超过 1000 个与之相关的 OrderDetail 对象,每个对象可能包含 20-40KB 的数据。客户需要知道服务已经收到了整个订单。

我想探索使用 ServiceStack 来创建它。创建高流量服务并不是我非常熟悉的事情。我们通常会使用 WCF,似乎人们只是建议增加消息大小限制以容纳大消息。我不确定这是否是 WCF 的最佳策略,更不用说 ServiceStack 了。

将每个 OrderDetail 作为自己的消息发送会更好吗?我会担心保持整个秩序的完整性走这条路。或者我应该将其作为 20-40MB 数据的单个大消息保存吗?或者我应该尝试将其作为文件流式传输吗?

最佳答案

使用ServiceStack's ProtoBuf support - protocol buffers 是目前最高效和紧凑的有线格式。因为它更简单,所以先尝试一下,然后再研究 ServiceStack 中的 Streaming 选项。

ServiceStack 中的流选项

如果您确定您的服务将从流媒体中受益匪浅,那么这里有一篇关于 sending a stream to ServiceStack 的文章这显示了如何在 ServiceStack 服务中进行流式传输。它显示了如何使用 IRequiresRequestStream这让您可以在您的服务中流式传输请求主体:

请求 DTO:

[Route("/upload/{FileName}", "POST")]
public class UploadPackage : IRequiresRequestStream
{
public System.IO.Stream RequestStream { get; set; }

public string FileName { get; set; }
}

对请求主体流的访问被注入(inject)到请求 DTO 的 RequestStream 属性中。

关于c# - 向 ServiceStack 服务发送大消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com