Ajouter un commentaire

oat++ : un framework de Web Services entièrement écrit en C++

Par:
fredericmazue

lun, 15/10/2018 - 17:09

A découvrir, pour ceux qui ont besoin de mettre en place un Web Service très performant.

oat++, totalement écrit en C++ ne requiert aucune dépendance et est 'extrêmement rapide' pour reprendre l'expressions de ses créateurs.

oat++ fournit un serveur multithread et asynchrone, capable de supporter jusqu'à 30 000 connexions simultanées. Il est agnostique au niveau de la connexion (socket, pipe, fichier, etc.) car il ne travaille qu'avec le flux HTTP. oat++ suporte le protocole HTTP1.1. Le support du protocole HTTP2.0 doit arriver prochainement.

Il peut fonctionner en deux modes

1/ le mode API SIMPLE. C'est une approche multithread avec interdictions des IO. Avec ce mode un point de terminaison se crée ainsi

ENDPOINT ( "GET" , "demo / api / hello" , hello) {
   return createResponse (Status :: CODE_200, "Hello World!" );
}

Si le point de terminaison doit recevoir des arguments, le code devient :

ENDPOINT ( "GET" , "demo / api / param / {param}" , getWithParams,
         PATH (String, param)) {
  return createResponse (Status :: CODE_200, "param =" + param);
}

Il est possible de retourner du JSON :

ENDPOINT ( "GET" , "demo / api / json" , getJson) {
  auto dto = MyDto :: createShared ();
  dto-> statusCode = 200;
  dto-> message = "Hello json" ;
  return createDtoResponse (Status :: CODE_200, dto);
}

2/ le mode API Sync. Il s'agit d'une approche avec IO non bloquantes qui utilise des coroutine. Sous ce mode, un point de terminaisons se crée ainsi :

ENDPOINT_ASYNC("GET", "demo/api_async/hello", HelloAsync) {
  ENDPOINT_ASYNC_INIT(HelloAsync)
  Action act() override {
    return _return(controller->createResponse(Status::CODE_200, "Hello World Async API!"));
  }
};

Et s'il doit recevoir des arguements :

ENDPOINT_ASYNC("GET", "demo/api_async/param/{param}", GetWithParamsAsync) {
  ENDPOINT_ASYNC_INIT(GetWithParamsAsync)
  Action act() override {
    auto param = request->getPathVariable("param");
    return _return(controller->createResponse(Status::CODE_200, "param=" + param));
  }
};

oat++ est disponble sur GitHub

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  AA   RRRR   Y   Y   GGG   ZZZZZ 
A A R R Y Y G Z
AAAA RRRR Y G GG Z
A A R R Y G G Z
A A R RR Y GGG ZZZZZ