Sviluppo Web C ++ per API REST [chiuso]

2

Sono stato sviluppatore C # da molto tempo, incentrato principalmente su ASP MVC. Due anni fa, basicamente dovuto ai costi più bassi e alla facilità di implementazione / gestione, ho iniziato a migrare i miei progetti su Linux usando Node.js per servire HTML e Mono per tutte le operazioni di back-end. Si parlano tra loro usando l'API REST HTTP.

Dato che le mie capacità in Linux sono migliorate sempre di più, trovo che la combinazione Node.js / Mono sia strana. Mono è una grande cosa ma ci sono problemi di tanto in tanto, più legati all'implementazione stessa che al linguaggio.

Ora ho a disposizione tre settimane tra i vari progetti e mi piacerebbe tuffarmi nel C ++ come backend. Ho provato alcuni Python e mi è piaciuto molto, ma ho bisogno di risposte più veloci, ecco perché il C ++ è venuto da me. Java non è un'opzione, perché anche se il linguaggio stesso è abbastanza vicino a C #, ha un sacco di cose con cui non mi dispiacerebbe occuparmi (Maven per dirne una) e alla fine della giornata, ciò ridurrebbe il mio produttività, almeno finché diventerò più efficiente su Java (la semplice configurazione di Eclipse per un tutorial su Jersey mi ha richiesto 2 ore!).

Non ho davvero bisogno di niente di speciale, dato che tutto ciò che node.js fa per me serve html / css / javascript, alcune notifiche in tempo reale (socket.io) e il gioco è fatto. I miei backend sono più leggendo da tabelle, trasformazione SQL complessa e convalida dei dati inviati dal client. Il motore di template che uso è Jade, che è bello dato che digito di meno, ma non mi dispiacerebbe passare a HTML semplice. Il 99% del lavoro nei miei progetti viene eseguito utilizzando Angular.js tramite chiamate JSON. La maggior parte di essi sono applicazioni a singola pagina con molta logica sul client e che utilizzano le API REST.

Mi piacerebbe davvero tagliare tutte le dipendenze Mono / .NET e sviluppare qualcosa di più nativo per Linux. Allo stesso tempo vorrei dire addio a Node.js anche in commercio per un back-end per servire la mia API e le pagine HTML statiche.

Se sei già stato qui prima, fammi sapere quali sono le scelte attuali e qualsiasi cosa possa aiutarmi in questo esperimento.

Grazie mille in anticipo per aver dedicato del tempo a leggere le mie preoccupazioni.

EDIT: Ho dimenticato di menzionare che ho letto del progetto di Casablanca. Sembra promettente ma, ancora una volta, appartiene a Microsoft sotto le copertine dell'open source bianco, proprio quello che ho evitato ultimamente.

    
posta mau 07.05.2014 - 05:30
fonte

1 risposta

3

Recentemente ho dovuto implementare alcune funzionalità del web server in un'applicazione esistente e ho usato Mongoose per questo (in realtà io usato CivetWeb, la versione non GPL), il suo server web incorporato molto semplice - aggiungi 2 file al tuo progetto, leggi le opzioni, chiama la funzione server e implementa un callback per ogni route di url. Banalmente semplice ed è molto veloce.

ad es.

CivetServer myServer(options);
myServer.addHandler("/route", new CallbackHandlerClass());

Quindi implementa un metodo handleGet () nella classe del gestore. Puoi ottenere i parametri da querystring e qualsiasi altra cosa tu debba fare lì dentro.

È progettato per sistemi embedded, ma non c'è motivo per cui non possa funzionare per più ambienti ricchi di funzionalità. Ovviamente, potresti avere problemi ad estendere le tue applicazioni in quanto dovrai ricompilare e poi riavviare il server: non modificare un file di script e copiarlo sul server in questo tipo di ambiente compilato e nativo, ma suppongo che tu sia già usato con .NET

Se vuoi saperne di più, ci sono altri sistemi scritti in C ++ che sono disponibili. CppCMS mi viene in mente che consente il ricaricamento dinamico degli oggetti condivisi in modo da poter cambiare i gestori in modo dinamico.

Oppure puoi provare l'opzione Boost - boost :: asio include il codice per un semplice server http ma non sono sicuro che lo vorremmo per la produzione come singolo thread (ma questo non ha danneggiato node.js!)

Tutto sommato, dopo aver lavorato con il server web incorporato, penso di preferirlo semplicemente per la sua semplicità. Tutto lo sforzo che devi compiere per far funzionare un ambiente Apache o IIS è finito, è sufficiente codificare un servizio ed eseguirlo.

Infine, controlla questo SO link che ha un link a alcuni benchmark per diversi server web C ++.

    
risposta data 07.05.2014 - 09:37
fonte

Leggi altre domande sui tag