Changes between Version 1 and Version 2 of Akka.HTTP.Client


Ignore:
Timestamp:
May 29, 2019, 2:02:45 AM (5 years ago)
Author:
andy
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Akka.HTTP.Client

    v1 v2  
    11= Akka.HTTP.Client
    22
    3 Всего одна функция, `string get(string url)`. Никаких тасок и акторов в типе!
     3`Akka.HTTP.Client` - обычный класс/модуль. Не актор.
    44
    5 И один актор `Akka.HTTP.Client.Actor`
     5Может содержать какие-нибудь врапперы, синглтоны и фектори, если в этом будет смысл
    66
    7 По старту системы создается `Akka.HTTP.Client.Actor` который принимает
     7Один актор `Akka.HTTP.Client.Actor`
    88
    9 - сообщения !GetRequest, посылаемые из get
    10 - сообщения !GetResponse? посылаемые самому себе
     9Два сообщения:
    1110
    12 По приходу сообще он создает таску и результат её посылает обратно себе в виде сообщения, через `Task.PipeTo(Self)`
     11- `HTTPRequest`
     12- `HTTPResponse`
    1313
     14По старту системы создается `Akka.HTTP.Client.Actor`, который
     15- принимает сообщения `HTTPRequest` (`HTTPResponse` только отправляет)
     16- создает обычный дотнетовский `Task<HTTPResponse>`
     17- отправляет результат таска отправителю через `.PipeTo()`:
    1418
     19{{{
     20HTTPRequest m = message as HTTPRequest;
     21Task<HTTPResponse> foo = myget(m.url);
     22foo.PipeTo(Sender);
     23}}}
    1524
     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) шлёт сообщения клиенту, принимает результат и отдает его обратно в гирман.