发送大邮件到ServiceStack服务(Send a large message to a Ser

2019-08-18 03:17发布

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

比方说,客户想要保存它包含可变数量相关对象的新对象。 举例来说,一个命令,一个包含有对的OrderDetail对象的几个订单项。 订单可能有与之相关的超过1000的OrderDetail对象,每个对象可能包含数据的20-40KB。 客户端需要知道服务已经获得了整个订单。

我想用ServiceStack创建此探索。 创建一个高流量的服务是不是我很熟悉。 我们通常会使用WCF,而且好像人们只是建议增加邮件大小限制,以适应大消息。 我不知道这是与WCF是最好的策略,更别说ServiceStack。

它会更好,以每个的OrderDetail发送它自己的消息? 我会关注保持整个订单走这条路的完整性。 或者我应该保持这个数据的一个大消息20-40MB? 或者我应该尝试流它作为一个文件?

Answer 1:

使用ServiceStack的protobuf的支持 -协议缓冲区是那里最有效和紧凑的有线格式。 因为它更简单,尝试第一次,调查ServiceStack的流媒体选项之前。

在ServiceStack流媒体选项

如果您发现您的服务将极大地受益流,比这里的一对文章发送流ServiceStack展示了如何ServiceStack服务内流。 它展示了如何使用IRequiresRequestStream它可以让你流请求主体在您的服务:

请求DTO:

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

    public string FileName { get; set; }
}

访问请求体流注入RequestStream请求DTO的财产。



文章来源: Send a large message to a ServiceStack service