- 主题:求推荐好用的轻量级http server
这种情况为什么不用 python 搞定。
【 在 blueboats (天·地·魔·鬥) 的大作中提到: 】
: 主要是为了在内部的几个不同语言写的代码块之间实现跨语言调用,调用的接口比较简单、也不需要很复杂的功能比如认证啊,https啊,高并发啊之类的。
: 所以想找一个比较轻量级的,接入比较简明的http server实现,求推荐一个。
--
FROM 112.47.122.*
现在选好哪一个了没有?
我自己也实现了一个超轻量级的 httpd,不过是作为其它服务的基础,没想过被直接使用。
【 在 blueboats (天·地·魔·鬥) 的大作中提到: 】
: 因为我要写一个总控程序来同时调用c++,java和python的代码块,所以需要每个语言的代码块都包装成一个http server让总控程序调用
: 这种情况为什么不用 python 搞定。
--
FROM 112.47.122.*
http server 很轻量了。我从 python 标准库里面抄了一个,不到 500 行代码就能实现一个了:
https://github.com/hgoldfish/qtnetworkng/blob/master/src/httpd.cpp
今天测试了一下,纯输出 helloworld, 在 ryzen 1700 上面单核能跑 45k+ rps,
【 在 hongdiao (hongdiao) 的大作中提到: 】
: 为啥非得用http server呢,这个本身就不够轻量级啊。
--
FROM 112.47.122.*
现在市面上这些 rpc 都太难用了。我做的 rpc 同样实现一个服务器:
// server.cpp
#include "lafrpc.h"
using namespace lafrpc;
class Hello: public QObject
{
Q_OBJECT
public slots:
QString sayHello(const QString &name) { return QStringLiteral("Hello, %1").arg(name); }
};
int main(int argc, char **argv)
{
auto rpc = RpcBuilder(MessagePack).create();
QSharedPointer<Hello> hello(new Hello());
rpc->registerInstance(hello, "demo");
rpc->startServer("tcp://127.0.0.1:8002", true);
return 0;
}
#include "server.moc"
【 在 lushan5436 (密如) 的大作中提到: 】
: 如果用thrift,没多少需要处理的。如果httpserver,libevent简单列子比下面的thrift代码还少
: #include<sys/socket.h>
: #include <thrift/concurrency/ThreadManager.h>
: ...................
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*
客户端代码:
// client.cpp
#include "lafrpc.h"
using namespace lafrpc;
int main(int argc, char **argv)
{
auto rpc = RpcBuilder(MessagePack).create();
QSharedPointer<Peer> peer = rpc->connect("tcp://127.0.0.1:8002");
if (peer.isNull()) {
qDebug() << "can not connect to peer.";
return 2;
}
QString result = peer->call("demo.sayHello", "Goldfish").toString();
qDebug() << result;
return 0;
}
客户端很简单,就是用 MessagePack 序列化一下请求,发送给服务端。服务端使用 qt 的反射来调用 Hello::sayHello(). 很易用,只是速度就不那么快了,而且对于复杂类型,序列化也会麻烦些。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 现在市面上这些 rpc 都太难用了。我做的 rpc 同样实现一个服务器:
: // server.cpp
: #include "lafrpc.h"
: ...................
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*
你的信息过时了,现在变得更大。5.12.6 版本的 QtCore5.dll 未压缩时是 4.6M,压缩后是 1.6M
不过我觉得引入这个容量好处实在太多了。把 boost 的精华都搞过来了。
【 在 billybear04 (billybear04) 的大作中提到: 】
: Qt太大了呀——可能说错了:
: The most up-to-date qtcore4.dll file is a 32bit that has a file size of approx 1.87 MB uncompressed and 0.76 MB after compressing to zip.
--
FROM 112.47.122.*