我目前正在学习 C++,并且对可以像 C++ 后端部分一样快的 Web 前端感兴趣。哪些前端可以构成良好的组合?
不寻找最好的,只寻找那些可以在不使用cgi的情况下加入cpp的。所以请不要投反对票。
---更新------
我实际上是用 Java 开发 Web 应用程序的,这很不错。我正在研究 C++ 方面,因为我想尝试一下。三年前,我在大学课程中学习了一点 C++,现在我正在阅读 Deitel 第 8 版书籍,以弥补我错过的内容并回顾我之前学到的内容。我将阅读您的所有建议,并在生产力和速度之间选择平衡。我承认我是一个表演迷,这就是我对此感兴趣的原因。在问这个问题之前,我认为 Python 可以用作 Web 前端。但也许它不接近 C++ 性能,这就是为什么你没有提到它。
-----更新#2------
使用 python Web 框架或 java servlet 作为 Web 引擎,然后将其连接到 C++ 可以有什么行为? tomcat或python服务器会成为瓶颈吗?
一种可能的解决方案可能是带有“百老汇”后端的 Gtk 。它的工作原理如下:首先运行 GTK Broadwayd 服务器,然后通过传递 env 来运行应用程序。连接到服务器的变量。在我的实验中,如您所料,没有图形也能正常工作。
默认服务器提供服务http
。要使其使用
https
生成证书并传递到broadwayd服务器两条路径-c cert.pem -k key.pem
。这是一个通过 Gtk 实现的简单的 hello world Web 前端:
test.cpp
:
#include <gtk/gtk.h>
static void activate(GtkApplication *app, gpointer user_data) {
GtkWidget *window = gtk_application_window_new(app);
// web frontend can't have top bar and be non-maximized
gtk_window_maximize(GTK_WINDOW(window));
gtk_window_set_decorated(GTK_WINDOW(window), false);
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_halign(box, GTK_ALIGN_CENTER);
gtk_widget_set_valign(box, GTK_ALIGN_CENTER);
gtk_window_set_child(GTK_WINDOW(window), box);
GtkWidget *button = gtk_button_new_with_label("Hello World");
gtk_box_append(GTK_BOX(box), button);
gtk_window_present(GTK_WINDOW(window));
}
int main(int argc, char **argv) {
GtkApplication *app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
int status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}
g++ test.cpp -o a $(pkg-config --cflags --libs gtk4) -g3 -O0
gtk4-broadwayd -p 8085
运行百老汇服务器
GDK_BACKEND=broadway ./a
方式运行应用程序
[14:21:32] <mclasen> a good reminder that we should document broadway more clearly as an experiment
[14:26:10] <mclasen> it was written as a one-off experiment, and is not actively developed
[14:26:37] <mclasen> it works and supported the gtk 4.0 features, but it is falling behind newer developments
[14:37:14] <ebassi> […]: what mclasen said. Broadway is an experiment
[14:37:25] <ebassi> if you want to use it, you get to fix it