C++应用程序框架

C++应用程序框架

    • C++编程中的遇到的问题
    • 框架给了我们什么便利
    • 应该有一个什么样的框架
    • 都有什么功能
    • 附代码库

C++编程中的遇到的问题

C++编程中遇到的最大的问题莫过于没有统一的编程框架;
在没有框架的情况下团队写代码就像一锅粥,不利于维护和复用。

框架给了我们什么便利

一方面框架基本上实现我们编码过程中常用的功能,不需要再次编写;
另外就是框架给出了一组编程约束规则,团队成员之间合作编码如果遵守规则,那么相互之间协作会更高效。

应该有一个什么样的框架

软件工程中最常提到的就是:模块间低耦合,模块内高内聚
所以开发一个应用框架首先就是可以将业务关系不大的代码模块化;
相互之间需要通过消息进行通信;
另外就是需要支持多线程以充分利用CPU资源。
依照这个思路我构建了以下这个框架
C++应用程序框架_第1张图片

基于微内核的设计思想,框架本身只负责消息传递和调度,微内核调度的是进程,而该框架调度的是一个个拆分过的模块(actor/worker),把需要处理的模块放到线程池中运行;

都有什么功能

  1. 你可以将业务逻辑拆分成一个个actor/worker:
    actor/worker之间通过消息进行通信,这样就可以避免多线程间访问修改变量锁来锁去的问题了;
  2. 业务逻辑拆成了一个个actor/worker,模块划分也清晰起来了;
  3. actor是基于消息触发的形式被动执行的(也提供定时器定时执行),有些场景不适合这样做,所以它也可以自定义worker(也就是独立线程), 可以通过消息与actor进行交互;
  4. 任意个actor/worker组成服务,通过配置文件配置需要创建哪些actor/worker,增加删除业务灵活方便;
  5. 提供脚本创建自定义模块工程,生成动态库供框架调度;
  6. 提供必要的定时器功能,当然你也可以自己实现;
  7. 采用任务分发机制,多线程得到充分的利用,适用于高并发的业务场景;
  8. 多线程框架,对模块间交互数据不需要序列化和反序列化(也不需要加锁),相比多进程更高效。

附代码库

https://github.com/lkpworkspace/myframe

你可能感兴趣的:(C++,软件工程,linux,c++,linux,开源软件,架构)