Мне нужно создать службу, которая позволит клиенту отправлять сообщения, содержащие большой объем данных, и я не уверен, как структурировать API.
Допустим, клиент хочет сохранить новый объект, который содержит переменное количество связанных объектов. Например, Заказ, который содержит несколько позиций, содержащихся в объектах OrderDetail. С заказом может быть связано более 1000 объектов OrderDetail, каждый из которых может содержать 20-40 КБ данных. Клиент должен знать, что услуга получила весь заказ.
Я хотел бы изучить использование ServiceStack для его создания. Я не очень хорошо знаком с созданием сервиса с высоким трафиком. Обычно мы используем WCF, и кажется, что люди просто рекомендуют увеличить предельный размер сообщения, чтобы разместить большое сообщение. Я не уверен, что это лучшая стратегия для WCF, не говоря уже о ServiceStack.
Было бы лучше отправлять каждый OrderDetail как собственное сообщение? Я был бы обеспокоен сохранением целостности всего Ордена, идущего по этому пути. Или я должен просто сохранить это как одно большое сообщение с 20-40 МБ данных? Или мне попробовать передать его как файл?
1 ответ
Используйте поддержку ProtoBuf в ServiceStack - буферы протоколов являются наиболее эффективным и компактным форматом проводов. . Так как это проще, сначала попробуйте это, прежде чем исследовать параметры потоковой передачи в 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 запроса.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.