Saya ingin masuk ke pengembangan web menggunakan C ++ sebagai "bahasa scripting" di sisi server. Infrastruktur server saya berbasis * nix, jadi melakukan pengembangan web di C ++ pada Azure tidak berlaku dan C ++ / CLI ASP.NET juga tidak berlaku.
Terpisah dari aplikasi CGI lama, dapatkah pengembangan web dilakukan menggunakan C ++?
web-development
c++
Scott Davies
sumber
sumber
,
yang.
diarahkan ke soket.Jawaban:
Benar.
Bahkan ada beberapa kerangka kerja untuk mengembangkannya, termasuk Wt , cppcms , CSP , dan lainnya. Implementasi utama FastCGI adalah dalam bahasa C, dan secara langsung mendukung beberapa bahasa , termasuk C ++.
Bahasa pemrograman apa pun yang dapat mengurai string dapat digunakan dalam CGI atau servlet. Bahasa apa pun yang dapat menerapkan binding dengan pustaka C juga dapat digunakan untuk mengembangkan modul untuk server yang kompatibel dengan ISAPI atau Apache.
Ini tidak terlalu mudah di C ++, dan mesin templating yang baik sedikit dan jarang, tetapi bisa dilakukan.
Tentu saja, pertanyaan apakah ini ide yang bagus adalah masalah lain. :)
Perhatikan: Situs web utama seperti Amazon.com, eBay, dan Google menggunakan C ++ untuk sebagian infrastrukturnya. Namun, sadari bahwa Google hanya menggunakan C ++ untuk sistem kecepatan kritis, dan Amazon.com relatif baru saja beralih dari Lisp (yang membuat marah beberapa staf senior mereka :).
Facebook sebelumnya mengkompilasi PHP ke C ++, tetapi kompiler HipHop mereka (sebagian ditulis dalam C ++) sejak itu telah diperhalus sebagai mesin virtual bytecode.
sumber
Kenapa tidak?
Situs kencan OkCupid dibuat dengan C ++. Mungkin ada contoh lain.
Ada juga toolkit yang terinspirasi Qt untuk mengembangkan aplikasi web dengan C ++ yang disebut Wt .
sumber
Jika Anda berencana untuk menulis aplikasi web Anda dalam C ++, akan sia-sia total untuk kemudian antarmuka sebagai CGI.
Saran saya adalah membangunnya asinkron menggunakan ASIO (Asynchronous I / O). Dengan itu Anda dapat membangun layanan web cepat (gabungkan dengan nginx sebagai server reverse-proxy dan statika untuk efek terbaik); Gabungkan dengan pustaka template seperti Wt dan Anda siap melayani puluhan ribu permintaan per detik dari satu server.
Apakah ini merupakan alternatif praktis untuk kerangka kerja bahasa dinamis adalah masalah lain.
sumber
Jawaban singkatnya adalah, APA SAJA dapat digunakan untuk menulis halaman web asalkan dapat membaca input, menulis output yang dapat ditafsirkan, dan dapat dieksekusi oleh server web.
Secara teknis, bahasa apa pun dapat digunakan sebagai skrip CGI asalkan:
Ada juga cara lain juga. Perl memiliki kemampuan untuk dibangun sebagai pembungkus di sekitar kode c / c ++, bertindak sebagai lapisan penafsiran di antara keduanya (dan ini tidak termasuk modul perl yang flat out dikompilasi sebagai C).
sumber
pada awalnya, itu cukup umum - situs web pertama yang saya kerjakan pada akhir 1990-an adalah ekstensi ISAPI yang ditulis dalam C ++, dan mereka bekerja dengan cukup baik.
sumber
Tampaknya Microsoft juga berpikir demikian. Lihat Casablanca yang merupakan seperangkat alat baru untuk (tampaknya) Azure menggunakan C ++.
sumber
Untuk PHP Anda dapat menulis ekstensi C / C ++ Anda sendiri dan mendapatkan manfaat kinerja yang baik seperti itu. Jika saya memiliki bagian intensif CPU dari aplikasi web saya, saya mungkin akan membuat perpustakaan C ++ kecil yang membongkar pemrosesan itu ke ekstensi dan kemudian mengembalikan hasilnya kembali ke PHP dan kemudian PHP output ke browser.
Hal lain yang orang tidak sering pertimbangkan adalah membongkar pemrosesan CPU tertentu ke sisi klien misalnya JavaScript / jQuery. Jika saya punya server web, saya mungkin memerlukan CPU 3Ghz untuk melakukan pemrosesan intensif CPU untuk fungsi tertentu (mungkin beberapa pemrosesan data). Perusahaan saya membayar uang untuk server itu setiap bulan agar tetap berjalan. Jika saya ingin meningkatkan operasi untuk 100 pengguna bersamaan yang menjalankan tugas intensif CPU pada saat yang sama, maka mungkin saya perlu beberapa CPU dan server, meningkatkan biaya untuk bisnis saya. Jika saya melepas tugas intensif CPU ke sisi klien, maka setiap pengguna yang mengunjungi situs web dapat melakukan pemrosesan sendiri pada data dan saya tidak perlu meningkatkan kemampuan server saya sehingga menghemat uang.
Setelah semua dengan semua kekuatan kolektif 100+ desktop / tablet / ponsel melakukan pemrosesan untuk Anda, itu jauh lebih banyak kekuatan daripada server Anda duduk di pusat data di suatu tempat menghabiskan uang bisnis Anda setiap bulan untuk terus berjalan. Berpotensi maka semua server Anda akan melakukan akan mengambil data dari database, melayani konten dan sedikit pemrosesan pra / post dan validasi data sebelum menyimpan kembali dalam database. Jelas Anda tidak akan membuat kode sisi klien terlalu intensif CPU yang dapat memblokir / membekukan UI browser web, Anda dapat menjalankan permintaan AJAX ke server, mengambil data dan kemudian memproses data secara asinkron sisi klien, meninggalkan web -browser UI sepenuhnya dapat digunakan.
sumber
Ya, itu bisa digunakan. Yang lain telah menyebutkan berbagai pendekatan. Ini pendekatan saya sendiri. Keuntungannya adalah ini benar-benar portabel dan mandiri, semua perpustakaan yang dipilih hanya bergantung pada ANSI C. Pengaturannya hanya membutuhkan Kernel Linux dan kompiler C (Dan hal-hal yang jelas seperti Busybox, bash, dll) (atau Windows dan kompiler), tidak ada perpustakaan tambahan yang diperlukan, tidak ada instalasi besar yang mewah.
Hasilnya adalah sebuah program tunggal yang merupakan server web dan generator halaman dinamis (Mengganti "apache" dan "php"), itu juga akan memiliki akses database melalui sqlite.
Perpustakaan yang digunakan:
createElement
Sisa dari jawaban ini adalah panduan pengaturan lengkap untuk Linux. Baik SQlite dan MiniXML adalah opsional, tetapi panduan ini mencakup instalasi lengkap. Terserah Anda untuk mengomentari bagian yang tidak diperlukan jika Anda tertarik untuk menonaktifkan sqlite atau MiniXML.
1. Unduh 3 perpustakaan
2. Siapkan folder Anda
sqlite3.c , sqlite3.h
mongoose.c , mongoose.h
mxml.h
3. Kompilasi mxml
Anda mungkin telah memperhatikan bahwa mxml.c tidak ada, ini karena kami perlu membuat perpustakaan mxml statis. Buka folder tempat mxml tar.gz diunduh dan lakukan:
Setelah kompilasi selesai, banyak file akan dihasilkan, satu-satunya file yang menarik bagi kami adalah
libmxml.a
, salin file itu ke folder utama.3.1 Doublecheck
Periksa apakah folder utama memiliki yang berikut:
mongoose.c, mongoose.h
libmxml.a, mxml.h
sqlite.c, sqlite.h
4. main.c
Mari kita buat program yang sebenarnya, buat
main.c
file di folder utama, di sini ada kerangka untuk Anda mulai.Akhirnya, kompilasi!
Mari kita kompilasi.
cd
ke folder utama Anda dan jalankan ini:Sekarang, jalankan server.out dengan
/server.out
, dan navigasikan kelocalhost:8080/hello
Selesai :)
sumber
Saya kira beberapa sistem tertanam (mis. Router, printer, ...) memiliki beberapa server web yang digerakkan C ++.
Secara khusus, Anda dapat menggunakan beberapa pustaka server HTTP seperti libonion untuk menambahkan beberapa kemampuan web ke beberapa program C atau C ++, atau untuk mengembangkan server yang ringan dengan beberapa antarmuka web.
Beberapa orang sedang mengkode server Web mereka atau antarmuka HTTP mereka di Ocaml menggunakan Ocsigen . Tidak semua web adalah PHP. Dan dengan FastCGI Anda dapat memproses web dinamis di / ke aplikasi Anda.
sumber