Wpis z mikrobloga

Mam aplikację konsolową przetwarzającą dane ze standardowego wejścia i wypluwającą je na standardowe wyjście.

Akurat napisana w #cpp ale to samo dotyczyłoby aplikacji napisanej w #java #python #csharp która działa jako aplikacja CLI.

Czy spotkaliście się z jakimś narzędziem, które pozwoliłoby na łatwe "owrapowanie" takiej apki jakimś interfejsem webowym, żeby zrobić z tego mikroserwis docelowo do wrzucenia w #docker - tak, żeby na zewnątrz udostępnić np. metodę HTTP POST z której request body stanie się wejściem a wyjście wróci jako response body?
  • 11
@PaaD: https://stackoverflow.com/questions/8149828/read-the-output-from-java-exec cos takiego.
A jeżeli aplikacja nie działa w trybie ciągłym i odpalasz ją osobno dla każdego wejścia, no to po prostu przy każdym wywołaniu odpalasz apkę i zwracasz to co wydaliła.
Do tego dowolny lekki javowy framework webowy typu javalin i gotowe. No musisz jeszcze zadbać o lockowanie i zdefiniowanie końca wiadomości, bo strumyk z procesu przecież nie będzie miał końca.
@gdanska_onuca: no właśnie napisanie tego wydaje się najprostszym rozwiązaniem, ale wydaje mi się że problem jest na tyle powtarzalny, że zapewne już dawno ktoś stworzył coś podobnego co hula gdzieś jakoś standard, więc jeśli nie jest to nieuniknione to nie chciałbym wymyślać koła na nowo
@zetisdead: O paaanie, już zapomniałem o tym, a nawet korzystałem z tego kiedyś, i w czasach przed VPS jedynym hostingiem w okolicy który na to pozwalał na wykonywanie tak aplikacji był nasz ulubiony Home (wtedy z ich magicznym IdeaWebServer opartym na FreeBSD). Dzięki za ten trop, to ma być dokładnie takie zachowanie, tylko może trochę uwspółcześnione ( ͡° ͜ʖ ͡°)
tylko może trochę uwspółcześnione


@PaaD: to wtedy użyj fast-cgi.

FastCGI is a protocol for connecting web servers with programs that generate content. The protocol is described in detail at the FastCGI website.


Googiel zwraca trochę różnych bibliotek do tego.

Pierwsza lepsza z brzegu:
https://github.com/eddic/fastcgipp
Przykład:
https://github.com/eddic/fastcgipp/blob/master/examples/helloworld.cpp

Kolejna:
http://cgi.sourceforge.net/
Przykład:
http://cgi.sourceforge.net/docs/fastcgi___cgi/examples/cgi_examples.html#fastcgi___cgi.examples.cgi_examples.hello_world