Esistono alcuni svantaggi concettuali per la creazione di un'app Web con C ++ e MySQL?

10

Ho ereditato un progetto piuttosto interessante in cui c'è una buona opportunità di prendere un pezzo di software esistente e trasformarlo in un'app web SaaS. Poiché il progetto è ereditato, il codice base / framework è già definito come C ++ e MySQL. L'app stessa è compilata ed eseguita come EXE su Windows Server. L'interfaccia utente è basata sul Web e l'app funziona come una sorta di server. Da quello che so delle moderne applicazioni web, questa è forse una scelta insolita. In questi giorni, molte persone sembrano optare per un framework PHP o Ruby on Rails. Certamente questa è l'impressione che ottengo leggendo i blog sull'argomento. Quindi, sono molto interessato a sapere se un EXE C ++ supportato da MySQL è una solida base per un'applicazione web, o se dovremmo cercare di costruire in un altro modo?

    
posta jnthnclrk 07.09.2012 - 15:38
fonte

4 risposte

20

È OK fare un'applicazione web usando C ++ SE i benefici superano il costo, ovviamente. Google, Amazon, Facebook sono tutti costruiti con C ++ per l'efficienza in termini di velocità, memoria ed energia, ovvero i costi dei server.

Tuttavia, come hai indovinato, ci sono degli svantaggi nell'usare C ++ per questo. Dipende dai tuoi strumenti però.

Prima lasciatemi citare cppcms sito web su questo:

When CppCMS Should Be Used.

C++ language is far from being popular for Web development for many reasons: lack of appropriate tools, skills of developers and many more.

However, there are areas where C++ web programming with CppCMS becomes very useful and efficient, and some where it is just a waste of time.

When CppCMS should or can be used?

1.High load web sites and application with hundreds and thousands hits per second, where high performance, efficiency and scalability is required.

2.Application that require scalable Comet/Server Push technologies --- CppCMS can efficiently handle hundreds and thousands simultaneous HTTP connection with minimal resources usage.

3.Embedding web interface into existing C++ applications/services with a small cost of additional library.

4.Embedded underpowered devices -- CppCMS allows creation of rich applications with relatively low cost of hardware that would perform reasonably fast.

When Not To Use?

If you create small web applications that do not require high loads and require very short time-to-market period -- probably tools like Django or RoR would be more appropriate for such tasks.

Gli svantaggi specifici di C ++ sono:

  • I tempi di compilazione possono essere molto molto molto lenti rispetto alle altre lingue. Ciò potrebbe influire sulle iterazioni, sull'intervallo di rilascio ma anche sul morale dello sviluppatore. Assicurati che ne valga la pena.
  • La maggior parte delle volte è necessario compilare le modifiche. Può essere evitato ma è il solito.
  • Scrivere un C ++ moderno lo rende facile (per imparare, leggere, scrivere, eseguire il debug, ecc.), ma molti sviluppatori C ++ non sanno cos'è il Modern C ++. Quindi, se lavori in team, devi avere una buona conoscenza di Modern C ++ da tutto il team. Altrimenti, ti ritroverai facilmente in insetti molto complicati. Detto questo, è più un problema di persone che un problema di lingua. È solo che la cronologia del C ++ non ha aiutato a renderlo facile da capire. Un buon insegnamento non è comune come nelle lingue più moderne (storicamente).
  • Unicode è ancora mal supportato dal linguaggio core C ++, rendendolo una potenziale fonte di grande dolore. Usa semplicemente UTF-8 ovunque e alcune librerie (guarda in boost) per gestirlo.
  • Lo standard C ++ non sa cosa sia una libreria. Quindi usiamo metodi convenzionali per gestirli su diversi compilatori / linker / OS. Questo potrebbe essere un problema se si inizia a entrare in un codice multipiattaforma che ha bisogno di caricare / scaricare "al volo" alcuni moduli.

Forse dai un'occhiata a CPPCMS? O forse se vuoi creare un sito Web in stile GUI?

Controlla anche queste domande:

risposta data 07.09.2012 - 16:23
fonte
3

Wordpress in esecuzione in PHP con alcuni plug-in installati porta il mio server Winders in ginocchio. Quindi non ho alcun problema con l'idea di implementare un'applicazione web in C ++. La velocità è una parte fondamentale dell'esperienza web.

Tende grafiche per guidare la maggior parte dei progetti web. PHP è un linguaggio di scripting oscuro che viene eseguito all'interno di HTML. Permettendo agli autori di PHP di entrare e uscire dall'HTML. Di conseguenza, ci sono molti vantaggi nel lavorare con HTML.

Tuttavia, è possibile implementare qualsiasi numero di soluzioni di template HTML in C ++.

Si potrebbe fornire una lunga lista di framework Python e PHP che consentono uno sviluppo rapido, ma se hai un sacco di tempo allora il C ++ è sicuramente possibile.

Quello che non capisco è la tua decisione di fare C ++ su Windows. lol

    
risposta data 07.09.2012 - 17:30
fonte
1

È certamente una scelta insolita. C ++ non è stato progettato pensando alle applicazioni Web, e mentre le librerie esistono per scrivere, ad esempio, le applicazioni FastCGI con C ++, devi fare molto più lavoro per ottenere l'applicazione di base. I "linguaggi web" di solito fanno un sacco di cose per te che devi ottenere da altre parti in C ++, come implementare il protocollo HTTP, generare HTML, ecc.

Inoltre, le applicazioni web sono per lo più su stringhe, che non sono esattamente il lato più strong del C ++ - non c'è alcun tipo di stringa incorporato nella lingua stessa, e questo porta a qualche stranezza e rende l'elaborazione delle stringhe più maldestra di quella che sarebbe in più lingue di alto livello. Gestire correttamente le codifiche dei caratteri nei bordi C ++ sulla magia nera. E C ++ può bloccarsi molto duramente, su un codice dall'aspetto abbastanza innocente, che è molto meno probabile con un linguaggio di livello superiore (anche loro possono bloccarsi, ma nella maggior parte dei casi, il web server può recuperare con garbo, specialmente su piattaforme che usano un -request lifecycle model, come PHP).

Detto questo, se hai già scritto la maggior parte del codice, C ++ potrebbe essere ancora una scelta valida. Dovrai trovare alcune librerie per coprire tutti i tipi di cose sul web (in particolare, vuoi essere in grado di integrare un server web HTTP standalone nel tuo programma, o collegarti ad Apache, tramite FastCGI o compilando per un modulo, vorrete anche una sorta di libreria di template per rendere indolore il rendering dei documenti HTML.

Infine, c'è il problema del mercato degli sviluppatori. Ci sono un sacco di sviluppatori C ++ disponibili e ancora più sviluppatori web, ma la sovrapposizione non è probabilmente così grande, quindi se hai mai bisogno di assumere persone per lavorare su questa cosa, avrai un tempo un po 'più difficile che con, diciamo, PHP.

    
risposta data 07.09.2012 - 15:56
fonte
1

Come altri hanno detto, concettualmente, il C ++ è un ottimo ambiente per lo sviluppo di un server web. Ci sono comunque alcune considerazioni quando prendi questa decisione.

La popolarità dei linguaggi di scripting per la progettazione di server Web è volta al tempo. Semplici cambiamenti possono essere fatti facilmente con la dimostrazione di risultati quasi immediati. Scoprirai che qualsiasi buona progettazione di server web offrirà funzionalità simili. In effetti, il C ++ è un ambiente eccellente per raggiungere questo obiettivo.

La chiave per costruire un buon sistema di applicazioni per server Web è una separazione dell'interfaccia utente dal codice. Un obiettivo nella creazione di un ambiente di applicazioni Web è evitare "L'interfaccia utente è nel mio codice e il codice è nella mia interfaccia utente".

Vorrei attentamente con sistemi come cppcms. Mi aspetterei che offra qualcosa di simile.

Non hai bisogno di un linguaggio di scripting per offrire flessibilità e prestazioni.

    
risposta data 10.09.2012 - 16:52
fonte

Leggi altre domande sui tag