Pertanyaan Metode terbaik untuk membuat aplikasi c ++ untuk berkomunikasi dengan nginx


Saya perlu menulis antarmuka C ++ yang dapat membaca struktur data kami dan menyediakan o / p berdasarkan permintaan menggunakan protokol http.

Kebutuhan Server
Itu harus dapat melayani 100 klien pada saat yang sama.

Mengapa C ++
Semua kode sudah ditulis dalam C ++. Jadi kita hanya perlu menulis layer http di C ++. Itu sebabnya saya memilih C ++ daripada bahasa pemrograman web yang lebih konvensional.

Saya berpikir untuk menggunakan nginx untuk melayani file statis dan menggunakan pass proksi untuk berkomunikasi dengan C ++.

Ada dua pendekatan yang saya temukan:

  • Tulis modul FastCGI c ++.

  • Tulis modul node.js c ++.

  • Silakan saja saran lain jika Anda punya

Bisakah Anda mencantumkan pro dan kontra untuk setiap metode berdasarkan pengalaman sebelumnya?


32
2018-01-31 17:14


asal


Jawaban:


Tidak seorang pun di sini tampaknya telah membahas pertanyaan yang sebenarnya, meskipun beberapa pekerjaan yang bagus telah ditawarkan. Saya sudah bisa membangun modul C ++ untuk nginx dengan beberapa perubahan kecil.

  1. Ubah nama file sumber modul untuk diakhiri dengan .cpp jadi gcc menyadari bahwa ini berhubungan dengan C ++.
  2. Pastikan semua nginx Anda termasuk (mis. Ngx_config.h, ngx_core.h, dll.) Dibungkus dengan struktur "C" eksternal {}. Demikian pula pastikan fungsi yang dipanggil melalui pointer fungsi nginx dideklarasikan dengan pembungkus.
  3. Tambahkan --with-ld-opt = "- lstdc ++" ke permintaan "configure" Anda saat mengatur nginx.

Dengan tiga langkah tersebut, modul Anda harus menyusun, membuat, menautkan, dan benar-benar berfungsi.


18
2018-04-21 01:23



Apa yang Anda tanyakan pada dasarnya adalah bagaimana mengubah proses c ++ yang menahan strutures data Anda menjadi server web. Itu mungkin bukan cara terbaik untuk melakukannya. (Kemudian lagi, mungkin itu ada dalam situasi Anda. Itu tergantung pada kerumitan antarmuka proses c ++ yang Anda coba tunjukkan.)

Bagaimanapun, saya akan mencoba untuk menempelkan frontend http kecil di antara proses c ++ dan klien yang dapat melakukan pekerjaan http dan berkomunikasi dengan proses c ++ backend menggunakan beberapa protokol pesan sederhana seperti ZeroMQ / zmq.

zmq di c / c ++ cukup lurus ke depan, dan sangat efisien dan sangat cepat. Menggunakan zmq Anda dapat dengan cepat mengatur frontend webserver sederhana dalam python, atau bahasa apa pun yang Anda sukai zmq bindings, dan memiliki frontend yang berkomunikasi secara asinkron atau sinkron dengan proses backend c ++ menggunakan zmq.

Itu c ++ contoh dan Petunjuk adalah titik awal yang bagus jika Anda mencari menggunakan zmq.

Untuk Node.js ada juga beberapa contoh.


10
2018-02-11 11:01



Saya pikir saya akan maju dengan modul devlopment Nginx http://www.evanmiller.org/nginx-modules-guide.html 

Kenapa?

  1. Ini tidak memerlukan ketergantungan perpustakaan lain seperti fastcgi dan lain.
  2. Saya bisa menggunakan semua fitur nginx di dalam modul saya.

10
2018-02-16 04:29



Coba G-WAN, ini memungkinkan Anda untuk menggunakan aplikasi c ++ Anda secara langsung.


5
2018-06-14 23:46