Служба коммуникации клиента WCF
У меня есть очень простой вопрос о сервисе wcf с basicHttpbinding: когда клиент синхронно вызывает сервис wcf (basichttpbinding), как запрос и ответ принимаются между двумя? Установлено ли соединение сокетов между 2 и портом на сервере до получения ответа на клиенте? Как ответ отправляется обратно ожидающему клиенту? Если порт на сервере непригоден для длительной работы, то это будет мешать сервису принимать запрос от другого клиента? Кроме того, как происходит связь в асинхронном вызове службы wcf? Я прочитал этот канал и, следовательно, порт / сокет должен оставаться открытым на обоих концах.
1 ответ
При использовании basichttpbinding это почти то же самое, что и обычная HTTP-связь между браузером и веб-сервером. Если вы нажмете ссылку на веб-странице, запрос от браузера отправляется на соответствующий веб-сервер, который обрабатывает запрос и возвращает содержимое в качестве ответа ожидающему браузеру.
То же самое с WCF basicHTTPBinding. Клиент WCF отправляет запрос на публикацию или получение в указанный веб-сервис (http: //webservice:port/ServiceObj/MethodName) и ожидает ответа. Когда веб-служба заканчивает сбор данных, данные отправляются обратно клиенту в ответе на открытое соединение, которое затем закрывается хостом. Там нет постоянной связи. Таким образом, привязка basichttp не имеет состояния. Как только веб-служба отправляет ответ, соединение перезагружается, и служба готова перейти к следующему запросу.
Если клиент завершил свою связь, он может явно закрыть свое соединение; это лучше Но если он не закроет соединение, он не будет иметь никакого значения для хоста.