Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #33975

Re: Embedded HTTP Server

From heby <heby@poczta.onet.pl>
Newsgroups pl.comp.programming
Subject Re: Embedded HTTP Server
Date 2020-06-07 00:36 +0200
Organization A noiseless patient Spider
Message-ID <rbh5pi$gkn$1@dont-email.me> (permalink)
References <d423a072-9378-441b-ba06-e0657a1fa53bo@googlegroups.com> <rbg2hb$ebs$1@dont-email.me> <42ba89cb-8f2f-40a0-ac17-293f71f43f6fo@googlegroups.com> <rbgtv9$vuf$1@dont-email.me> <6a69d306-af0e-499c-bbdb-e74ae6d72a35o@googlegroups.com>

Show all headers | View raw


On 07/06/2020 00:02, Maciej Sobczak wrote:
> Szkoda prądu. Przecież to jest open-source. Jak ktoś bedzie chciał wymienić standardowe wątki na jakieś inne, to zmienia dosłownie w jednym miejscu to:
>              std::thread th(connection_thread, sock);
> na co tam potrzebuje, no i może jeszcze sygnaturę wołanej funkcji. Robienie abstrakcji na coś, co jest w jednej linijce, jest po prostu niepotrzebne. Łatwiej zmienić tą jedną linijkę.

Niby tak, ale już cooperative tak nie obskoczysz.

Ponadto praktyka pozkauje że zmiana "jednej linijki" w biblitece nie 
jest prawidłową metodą dopasowania się do czegoś bo za chwile tej 
linijki nie będzie w wersji 0.9.3.

> A jeszcze łatwiej zauważyć, że std::thread już jest tą abstrakcją - właśnie abstrakcją czegoś natywnego, bez narzucania konkretnego rozwiązania. I dokładnie taki jest sens istnienia tej klasy w std::. Więc jest też opcja podstawienia innej implementacji tejże standardowej klasy.

To tylko łatwo w teorii, w normalnych systemach "podmienianie" 
std::whatever to jest *gruby* hacking...

> Znowu - prawdziwy cyrk to stos TCP. To tam są smoki. Przerobienie tego serwera na inne wątki to pikuś, ale przestawienie go na inny stos - i to tak, żeby zachować abstrakcję IOStreams (które są z założenia *blokujące*), to już zupełnie inna zabawa.

Niby tak, ale znowu: co dziwnego w tym że robisz własną abstrakcję do 
"ich" abstrakcji?

Tworzysz własny ITcpStream i jakiś adapter do istniejącego/ych. Jak 
IOStreams masz blokujace to masz adapter z wątkami. Jak się da robić 
pooling, to masz inny adapter bez wątków albo z wątkami. Co kto potrzebuje.

Piszesz rdzeń HTTP w oderwaniu kompletnym od tego jaki stos TCP używasz. 
Definiujesz jakieś ITCP, ISTream, IConnection i potem martwisz się w 
napisanie kilku adapterów do tego albo do siamtego rozwiązania.

I przy okazji unit testy wychodzą za friko.

>> brakuje bibliotek w logiką na cooroutines,
> To jest ciekawa uwaga. Pytanie, czy takie podejście ma swoją niszę rynkową, w której mieści się taki przykładowy serwer HTTP.

Owszem, takie event-based są. To nie dokładnie to co coroutines, ale blisko.

> Bo ja nie jestem przekonany, czy zawsze cały program trzeba robić jedną metodą.

Dlatego sugeruje nie zmuszać ludzi do preemptive wątków. Wątki narzucają 
pewne rozwiązania logiki w kodzie w sposób intruzywny, np. bez wątków w 
jakiejś biblitece nie musisz synchronizować danych, ale np. ponieważ 
ktoś w jakiejś biblitece użył wątków to nagle w zupełnie niewątkowym 
kodzie masz race conditions bo się jakiś callback wywołał.

> Może raczej jest tak, że np. komunikację z urządzeniami fizycznymi można zrobić na coroutinach

Tam własnie nie, raczej na przerwaniach które, jak się zamknie jedno 
oko, to są takie prawie wątki.

>, ale interfejsu użytkownika już nie warto.

*wszystkie* interfejsy GUI jakie istnieją w sensownym zastosowaniu są 
event-based czyli takie coroutines/cooperative.

Chyba że masz na myślie coś innego niż GUI.

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-05 13:57 -0700
  Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-06 03:44 -0700
    Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 11:34 -0700
      Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-08 02:39 -0700
        Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 11:33 -0700
  Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-06 14:34 +0200
    Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 11:42 -0700
      Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-06 22:22 +0200
        Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 15:02 -0700
          Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-07 00:36 +0200
            Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-07 12:46 -0700
              Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-07 23:21 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 00:49 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-08 11:52 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 13:43 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-08 23:24 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 14:52 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 00:08 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 13:23 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 22:47 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 14:14 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 23:32 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 11:57 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 22:52 +0200
                Re: Embedded HTTP Server Tomasz Kaczanowski <kaczus@poczta.onet.pl> - 2020-06-10 07:50 +0200
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 08:09 +0200
                Re: Embedded HTTP Server Mateusz Viste <mateusz@xyz.invalid> - 2020-06-08 10:32 +0200
  Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-06 10:10 -0700
    Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-06 12:00 -0700
      Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-08 03:25 -0700
        Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 12:20 -0700
          Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-08 21:32 +0200
            Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 14:44 -0700
              Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 00:22 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 13:43 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-09 23:15 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 12:13 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 22:54 +0200
                Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 13:35 -0700
                Re: Embedded HTTP Server heby <heby@poczta.onet.pl> - 2020-06-10 22:55 +0200
          Re: Embedded HTTP Server Wojciech Muła <wojtek.mula@gmail.com> - 2020-06-23 00:33 -0700
            Re: Embedded HTTP Server Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-23 14:13 -0700

csiph-web