【发布时间】:2011-10-04 18:10:19
【问题描述】:
我需要用 C++ 为交易应用程序创建一个网络服务器。此网络服务器需要执行以下任务:
处理客户端的身份验证并为每个客户端提供会话 ID 会议。
处理来自客户的订单并通知客户 他们的执行。
处理客户端要求的其他数据请求并发送回数据 给他们。
我计划使用 Boost.Asio 网络库和 Google 协议缓冲区来实现从客户端发送到服务器的消息。基于 XML-RPC 或 SOAP 的方法是严格禁止的,因为延迟是一个大问题。
我对 stackoverflow 社区有以下问题:
使用协议实现这些消息是个好主意吗 缓冲区?我也在考虑发送消息Boost序列化 库来实现这一点。当我看代码时,我发现自己 更有信心通过增强序列化来实现这一点 Google protobuf 标头看起来太重了。这些方法中的哪一个 将a)更易于维护并且b)需要更少的努力?我猜, 这两种方法都适用于不同的平台。
还有其他我应该看看的网络库吗 来自 Boost.Asio.?我发现 ACE 在 C++ 编码方面有点过时 风格很重要。
最终我想让这个网络服务器在 SSL 上运行, 但是,我没有任何实现 SSL 的经验。如何 以后迁移到 SSL 需要付出很多努力。我应该开始吗 使用 SSL 还是可以稍后添加?
有谁知道一个好的开源网络项目,可能 已经使用 Boost.Asio 实现了一个类似的网络服务器,以获取 灵感来自?
【问题讨论】:
-
看看cpp-netlib。
-
您可能希望尽快考虑包含 ssl。我不知道有多少交易者会欢迎他们在网上公布的所有买卖订单。但我可能错了:也许这只是因为我认识的唯一交易员是偏执、多疑、贴近马甲的交易员,他们戴着环绕式墨镜并携带上膛的枪。
-
一些问题。有多少客户端将连接到服务器?客户在执行交易后是否保持连接?为什么您认为 SOAP 会增加太多延迟?哪个操作系统 - Linux、Windows Server 或其他?
-
是的,一定要尽快解决 SSL。
-
客户端对延迟有多敏感?预期带宽是多少?你要在后端连接什么?你会提供时间和销售吗?
标签: c++ linux network-programming boost-asio