Bagaimana satu antarmuka C ++ dengan web (di Google, misalnya)?

12

Google terkenal dengan jumlah konyol C ++ yang telah mereka kodekan selama bertahun-tahun. Perbaiki saya jika saya salah, tetapi sebagian besar mesin pencari inti Google ditulis dalam C ++, bukan? Bagaimana cara mengambil program yang ditulis dalam C ++ dan menghubungkannya dengan situs web?

Catatan: Saya tidak mencari bagaimana Google khususnya melakukan ini, hanya bagaimana hal itu dapat dilakukan secara umum.

Ilmu Maniak
sumber
Nah, Google telah membangun sebagian besar aplikasi mereka dalam python dan sekarang Java juga terlihat banyak digunakan. Google tidak akan membatasi penggunaan bahasa. Untuk antarmuka web, soket digunakan. Bukan C ++, tapi C apis. C ++ tidak memiliki sendiri !!
user1708086

Jawaban:

16

Perangkat lunak web apa pun hanya akan mengirim dan menerima pesan melalui soket, itu saja. Anda dapat menggunakan bahasa apa pun untuk melakukan ini, itu tidak spesifik untuk bahasa.

Namun, Anda sebaiknya tidak menemukan kembali roda untuk jenis pekerjaan ini sehingga sebagian besar bahasa yang digunakan untuk melakukan aplikasi web memiliki kerangka kerja yang melakukan komunikasi dasar untuk Anda, untuk memungkinkan Anda berkonsentrasi pada kekhususan proyek Anda. Ruby memiliki ROR, Python memiliki Django dan lainnya, Java sebagai ... dll.

C ++ secara historis tidak memiliki kerangka kerja yang serupa sampai saat ini:

  • cara modern-C ++ melakukannya adalah dengan menggunakan sesuatu seperti CPPCMS ;
  • ada juga upaya untuk menata perpustakaan standar untuk pengembang web. di C ++, salah satunya adalah cpp-netlib ;
  • Baru-baru ini telah ada rilis REST API library lintas platform untuk C ++ 11 dari Microsoft bernama Casablanca yang juga membantu;

Sekarang, "jumlah konyol C ++" yang dibangun Google diperlukan karena Anda harus memiliki modul berkinerja sangat tinggi untuk menyelesaikan jenis masalah yang dipecahkan Google. Selamat mencoba melakukan hal yang sama tanpa modul yang ditulis dalam bahasa yang berfokus pada kinerja. Saya sarankan membaca wiki CPPCMS tentang hal ini untuk lebih memahami. Untuk fakta sejarah, Amazon, Google, Facebook (lihat Hip Hop dan wawancara Alexandrescu baru-baru ini) dan beberapa layanan web yang sangat besar lainnya memiliki inti dalam C ++, untuk alasan komputasi yang jelas yang lebih penting daripada waktu yang hilang pada produktivitas programmer.

CPPCMS dan cpp-netlib menjadi open source, Anda dapat mempelajarinya jika Anda ingin tahu cara membuat aplikasi berfungsi sebagai layanan web menggunakan C ++. Yang mengatakan, aplikasi apa pun yang dapat mendengarkan port dan mengirim data ke port berpotensi melakukan ini, ini semua tentang protocole (TCP / IP, HTTP, dll.) , Bukan kode.

Klaim
sumber
Tidak dapat memilih diam, tetapi saya telah menerima jawaban Anda. Saya tidak tahu apa-apa seperti CPPCMS ada, tapi itu baik untuk diketahui. Terima kasih!
Ilmu Pengetahuan Maniacal
1
Saya mengerti, ini cukup baru dibandingkan yang lain. Solusi miskin lainnya (dalam saran saya sendiri) sudah ada sebelumnya tetapi saya pikir yang satu ini lebih cocok untuk bahasa dan masalahnya.
Klaim
1
C ++ memang memiliki kerangka kerja seperti itu - web dulunya dijalankan sepenuhnya dengan aplikasi cgi, atau MS ISAPI dll, atau bahkan ATLServer dari Microsoft. Saat ini, kami memiliki beberapa kerangka kerja c ++, dan Microsoft sedang mengerjakan Casablanca, yang memberi Anda c ++ sebagai layanan cloud.
gbjbaanb
Harus disebutkan bahwa sebagian besar aplikasi web hidup di belakang server ujung depan dan berbicara dengannya CGI, yang meneruskan data dalam lingkungan, stdin dan stdout atau FCGI, yang menggunakan soket dan protokol yang agak lebih sederhana daripada HTTP.
Jan Hudec
3

Seperti bahasa lainnya ....

Buka soket TCP, kirim dan terima pesan http. Pisahkan mereka dan lakukan hal-hal berdasarkan konten.

Lihatlah Qt untuk contoh pada kerangka c ++ yang mendukung beberapa fungsi dasar http.

Ada juga kerangka kerja khusus untuk C ++. Tidak banyak atau banyak digunakan, AFAIK. Mungkin karena jika Anda melakukan web melalui C ++, Anda tetap melakukan sesuatu yang sangat khusus dan ingin kontrol penuh atas semuanya.

Macke
sumber
Aku mungkin seharusnya bisa memikirkan ini untuk diriku sendiri. Satu-satunya pemrograman web yang saya lakukan adalah melalui Django, jadi semuanya disarikan.
Maniacal Science
Saya pikir itu. Django itu bagus, tetapi jika Anda menggali lebih dalam, Anda akan melihat bahwa bagian intinya tidak terlalu rumit. Sekarang, menulis setara Django di C ++, ada tantangan yang menyenangkan. ;)
Macke
@ Macke Yah saya kira CPPCMS adalah tantangan yang menyenangkan, meskipun tidak yakin. Kurangnya jaringan standar di C ++ tidak membantu tetapi ada banyak solusi untuk bekerja dengannya. Masalah utama dengan C ++ saya kira lebih pada kenyataan bahwa sulit untuk membuat pembaruan tanpa me-restart executable, dan itu juga begitu lama untuk dikompilasi kadang-kadang. CPPCMS membantu dengan itu.
Klaim
Btw, untuk jaringan c ++ library yang modern dan bagus, saya merekomendasikan perpustakaan ASIO, tersedia sebagai bagian dari paket Boost yang sangat baik. Saya telah menulis beberapa aplikasi klien / server TCP / UDP sederhana, dan itu cukup indah.
Macke
2

Dari perspektif klien, jika Anda memiliki program C / C ++ dan Anda ingin menggunakannya untuk berbicara dengan internet Anda akan menggunakan libcurl. Ini cukup banyak perpustakaan standar (dan komprehensif) untuk terhubung ke url http untuk mengirim dan menerima data. Ada beberapa perpustakaan lain - Microsoft memiliki beberapa, ada beberapa yang open source.

Nah, itu untuk URL lama biasa melalui http (atau SMTP, atau FTP, atau Gopher, atau .. libcurl sangat komprehensif!) Jika Anda mencoba untuk menggunakan layanan web melalui SOAP, maka Anda dapat menggunakan salah satu dari banyak perpustakaan lain seperti gsoap

Untuk sisi server, Anda memerlukan server web atau kerangka kerja yang mengekspos kode C ++ Anda. Sekali lagi ada banyak cara untuk melakukan ini - program web paling awal adalah semua C / C ++, ditulis sebagai program CGI di mana server web menyebut aplikasi Anda menggunakan bentuk IPC. Sejak itu, kami memiliki Wt, Qt, cppCMS, ffead, dan semua yang dari Microsoft (ISAPI, ATLServer, dan sekarang Casablanca).

Saya pikir alasan no-onne benar-benar menggunakan C ++ untuk program web mereka adalah karena bahasa lain sudah dipaket dengan pustaka ini. C ++ (seperti biasa) Anda harus pergi mencari perpustakaan untuk digunakan, sedangkan PHP baru saja siap untuk pergi ke web.

gbjbaanb
sumber
-4

Arsitektur client-server memungkinkan ini terjadi.

C ++ dapat digunakan untuk mengembangkan server.

Di sisi klien, teknologi web dapat digunakan untuk berkomunikasi dengan server.

Programmer In Paradise
sumber