以前为了完成课程作业,临时学了不少Python和Java的Web编程技术,如Django、Spring Boot,这两个框架可以很容易编写Restful接口供前端调用,而且这个也是我在编写C++程序所从未使用过的,所以我十分好奇C++是否可以编写Restful接口呢?于是我到GitHub上逛了一圈:
果然,开源社区有不少用C++编写的Restful接口的库,star数最多的还是巨硬开源的一个C++库。国外有一老哥甚至做了一个评测,他撸了一个benchmark测试工具,针对下面几个C++ Restful库做了一个系统的对比:
Restful库 | 98%请求中的最大时间(越小越好) | 每秒平均处理的请求数(越大越好) | Sample代码的行数 |
---|---|---|---|
C++ : cpprestsdk / default JSON implementation | 51 | 30.70 | 48 |
C++ : cpprestsdk / RapidJSON | 44 | 47.06 | 47 |
C++ : restbed | 7 | 224.18 | 39 |
C++ : pistache | 6 | 319.99 | 40 |
PHP : Native implementation | 10 | 146.95 | 14 |
表格中第二列和第三列是性能指标,第四列体现易用性。从表中,我们可以很容易发现,巨硬(微软)开源的Restful库的性能最差,甚至不如PHP语言实现的,这简直是对C++的侮辱啊!其中性能最好的库——pistache,性能大约是PHP版本的2.17倍,不过易用性跟PHP差了很多:PHP仅仅用14行就可以写出一个Restful接口,而C++需要大约40行。
从上面的评测,我们可以看到不论是性能还是易用性方面,pistache在所有C++实现的Restful库中表现最为出色。