Changes between Version 1 and Version 2 of Akka.HTTP.Client
- Timestamp:
- May 29, 2019, 2:02:45 AM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Akka.HTTP.Client
v1 v2 1 1 = Akka.HTTP.Client 2 2 3 Всего одна функция, `string get(string url)`. Никаких тасок и акторов в типе! 3 `Akka.HTTP.Client` - обычный класс/модуль. Не актор. 4 4 5 И один актор `Akka.HTTP.Client.Actor` 5 Может содержать какие-нибудь врапперы, синглтоны и фектори, если в этом будет смысл 6 6 7 По старту системы создается `Akka.HTTP.Client.Actor` который принимает 7 Один актор `Akka.HTTP.Client.Actor` 8 8 9 - сообщения !GetRequest, посылаемые из get 10 - сообщения !GetResponse? посылаемые самому себе 9 Два сообщения: 11 10 12 По приходу сообще он создает таску и результат её посылает обратно себе в виде сообщения, через `Task.PipeTo(Self)` 11 - `HTTPRequest` 12 - `HTTPResponse` 13 13 14 По старту системы создается `Akka.HTTP.Client.Actor`, который 15 - принимает сообщения `HTTPRequest` (`HTTPResponse` только отправляет) 16 - создает обычный дотнетовский `Task<HTTPResponse>` 17 - отправляет результат таска отправителю через `.PipeTo()`: 14 18 19 {{{ 20 HTTPRequest m = message as HTTPRequest; 21 Task<HTTPResponse> foo = myget(m.url); 22 foo.PipeTo(Sender); 23 }}} 15 24 25 === Клиент биржи 26 27 `Collector.bitstampUSD.Orderbook` - это таким образом актор, принимающий 2 сообщения, `Go` (пустое) и `HTTPResponse`: 28 29 По приходу `Go` он: 30 - сохраняет `Sender` 31 - отправляет `HTTPRequest` нашему `Akka.HTTP.Client.Actor` 32 33 По приходу `HTTPResponse`: 34 - переформатирует JSON 35 - отправляет его через `.Tell()` сохранённому отправителю `Go` 36 37 === Гирман-сервер 38 39 Живёт снаружи акторов. Просто через await bitstampActor.Ask(new Go) шлёт сообщения клиенту, принимает результат и отдает его обратно в гирман.