用C++创建高性能网络服务器

Laz*_*abs 16 c++ linux network-programming boost-asio

我需要用C++为交易应用程序创建一个网络服务器.此网络服务器需要执行以下任务:

  • 处理客户端的身份验证并为每个会话提供会话ID.

  • 处理来自客户的订单并告知客户他们的执行情况.

  • 处理客户端要求的其他数据请求并将数据发送回给他们.

我打算使用Boost.Asio网络库和Google协议缓冲区来实现从客户端发送到服务器的消息.基于XML-RPC或SOAP的方法是严格的禁忌,因为延迟是一个大问题.

我对stackoverflow社区有以下问题:

  1. 使用协议缓冲区实现这些消息是一个好主意吗?我也在考虑发送消息Boost序列化库来实现这个.当我查看代码时,我发现自己更有信心通过boost序列化来实现这一点,并且Google protobuf标题看起来过于重量级.以下哪种方法a)更易维护,b)需要更少的努力?我想,这两种方法都适用于不同的平台.

  2. 除了Boost.Asio之外,还有其他任何网络库我应该看看吗?我发现ACE有点过时,就C++编码风格而言.

  3. 最后我想让这个网络服务器在SSL上运行,但是,我没有任何实施SSL的经验.稍后迁移到SSL需要多少工作量.我应该从SSL开始还是稍后可以添加?

  4. 有没有人知道一个很好的开源网络项目,可能已经使用Boost.Asio实现了类似的网络服务器,从中受到启发?

npc*_*diu 4

您还应该看看Apache Thrift(起源于 Facebook)或Apache Etch(最初由 Cisco 开发)。它们是 RPC 框架,可以轻松开发满足您的需求(或多或少)的服务器和客户端。对于使用 protobuf 和 boost.asio 开发的框架,请查看server1 项目