У меня есть API-интерфейс веб-интерфейса с методом POST следующим образом.Как проверить, были ли большие объекты помечены?
public class MyController : ApiController
{
// POST: api/Scoring
public HttpResponseMessage Post([FromBody]ReallyLargeJSONObject request)
{
// some processing of this large json object
return Request.CreateResponse(HttpStatusCode.OK, someResponseObject);
}
....
}
Это потребляется HTTPClient следующего
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.BaseAddress = new Uri("http://localhost");
ReallyLargeJSONObject request = new ReallyLargeJSONObject();
var task = httpClient.PostAsJsonAsync("api/my", request)
Я прочитал в нескольких местах, что в .NET 4.5, HttpClient класса ручьев данные (и не буферные). Это здорово, так как мой сервер не будет перегружен большими пакетами. Однако я бы хотел проверить это. Для этого я сделал размер моего экземпляра ReallyLargeJSONObject от клиента до ~ 20 МБ. Я также пытаюсь использовать даже большие пакеты (~ 1 ГБ). Когда я использую скрипт, он показывает только один запрос на сервер. Мои вопросы:
- Должен ли я видеть несколько запросов на сервер в скрипач?
- Если заданы контрольные точки в методе MyController.Post, следует ли бить несколько раз, когда данные передаются потоком?
Если POST не вызывается несколько раз, как происходит чередование данных под капотом? Данные чередуются и отправляются несколько раз на сервер, правильно? –
Да, это происходит в коде HttpClient, если он фактически передает данные. На проводе данные будут разбиты на пакеты, соответствующие TCP. По существу на проводе данные разбиваются с одной большой части на многие более мелкие части и отправляются по сети, а затем на принимающей стороне они собраны вместе и будут выглядеть как большой большой парк, который был отправлен из кода. –
@pauldeter Я добавил некоторые дополнительные ресурсы для более глубокого понимания этих сетевых операций. Если вы используете wirehark и посмотрите, вы действительно сможете увидеть, сколько пакетов разделяет ваши данные и какое-то интересное действие под капотом. –