小编Laz*_*abs的帖子

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

我需要用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实现了类似的网络服务器,从中受到启发?

c++ linux network-programming boost-asio

16
推荐指数
1
解决办法
5990
查看次数

QuickFIX C++库 - 关于ThreadedSocketInitiator的一般问题

我是QuickFIX的新手,我有一些关于QuickFix的基本问题:

1)考虑到一次,接受者和发起者之间只有一个修复会话.我不太了解ThreadedSocketInitiator和ThreadedSocketAcceptor类的目的.

或者这些类是否存在以促进多个会话,其中多个"发起者"可以与不同的接受者交谈,反之亦然?

2)QuickFIX是否具有某种消息持久性,例如,如果消息在传输过程中丢失会发生什么?引擎是否负责重新发送消息?

c++ quickfix

9
推荐指数
1
解决办法
2262
查看次数

Thrift:是否可以只使用C++ Thrift库进行序列化?

使用C++ Apache Thrift库,是否可以仅使用序列化/反序列化而不使用RPC服务?

据我了解,从这个页面,就可以与Java库做.但是,我找不到类似的C++库类.

c++ serialization thrift

9
推荐指数
1
解决办法
6224
查看次数

将数据从Django传递到C ++应用程序并返回

我们正在创建一个交易应用程序,其后端完全使用C ++(使用QuickFix引擎)。我们想在此后端之上的Django中构建一个Web应用程序,用户可以在此下订单。Django(python)和C ++应用程序都将在各自的进程和地址空间中运行。您认为将订单/消息从Django传递到C ++的最佳想法是什么?

另外,这是一个交易应用程序,因此延迟是最大的问题。因此,我不想将订单从Django下放到数据库中,然后再从C ++应用程序中获取。

我目前正在考虑通过共享内存或其他IPC机制来实现。这是一个好主意吗?

c++ python architecture django quickfix

5
推荐指数
1
解决办法
2728
查看次数

cmake:安装可执行文件并创建指向它们的链接

我正在使用cmake和cpack来构建我的项目并构建包.我创建我的项目数的可执行文件,让我们给他们打电话EXE1EXE2.

在创建这些可执行文件的不同版本时,我想命名以反映可执行文件的版本(比方说EXE1_1.0.0).我可以通过执行更改目标的输出名称set_target_properties.

但是,现在在做的时候install,我想创建一个符号链接到这个可执行文件的版本名称,即我想要

  • 安装在bin目录中的"版本化"可执行文件,即EXE1_1.0.0
  • 创建一个符号链接到"版本化"的可执行文件,即创建EXE1指向的符号链接EXE1_1.0.0

有人可以建议我怎么做吗?

第二个问题是:如何安装配置文件/ etc/MYPROJECT /目录?我需要将什么目的用于配置文件,比如我bin用于可执行文件和lib库?使用绝对路径就像/etccmake可接受的做法一样?

cross-platform cmake

5
推荐指数
1
解决办法
2592
查看次数