跨平台 C++ 应用程序框架

By | 2015-05-01

目录

简介

跨平台 C++ 中间层应用程序框架, 极少的依赖, 强大的功能

想了解些本框架的独特设计? 可以移步 这里

在线文档: http://ZFFramework.com

Github: https://github.com/ZFFramework/ZFFramework

主要功能

  • 极少的依赖, 只需要 C++03, 不需要 boost, C++11 等特性,
    同时依然能够很好的与现有库和框架共存,
    平台实现层也只需依赖非常基本的一些内容
  • 反射, 序列化等高级特性
  • 只需少量代码即可提供一个新平台的实现层, 并且大多数实现层允许动态加载和动态替换,
    目前已支持 Android/iOS/Qt, 主流平台都可以使用
  • 提供与本地代码和框架的良好交互, 甚至可以和本地 UI 互相嵌套
  • 利用反射实现的 lua 自动绑定, 无需任何 lua 绑定代码

目标

  • 用 20% 的代价做 80% 的事情
  • 用 20% 的代价做 80% 的事情
  • 用 20% 的代价做 80% 的事情, 剩下 20% 的麻烦事, 依旧可以很容易的通过嵌套本地代码来实现
  • 通过跨平台, 尽可能减少应用层代码的同时, 尽可能减少平台实现层的代码
  • 在各大平台都能有良好的码字体验和用户体验

与其他框架的主要差异

  • 这是一个中间层框架, 对平台实现的依赖非常少,
    例如 UI 模块只需要依赖一些基本的 View,
    可以很容易的新增一个平台实现层
  • 完美的模块化, 轻量, 易裁剪, 所有实现层只有在被使用到时才需要,
    大部分实现层可以动态加载
  • 这是一个完整的框架, 但是能与其他库或框架良好的相互嵌套, "即插即用",
    甚至可以作为一个第三方库加载使用, 而不需要影响现有框架

缺点

  • 受限于 C++, 使用了大量的宏, 使用了较为奇怪的继承体系 (设计理念依旧是 class + interface), 语法也较为怪异
  • 同时存在 POD, C++ 对象, 框架对象 (类似其他框架的单根继承体系) 等多种类型, 需要较好的 C++ 基础
  • 反射等高级特性依赖于大量的宏代码生成, 编译输出可能较大, 编译错误可能比较诡异
  • 出于便捷, 跨平台和可读性等方面的考虑, 序列化的数据载体为字符串, 性能不如其他序列化框架
  • 由于锁也是可选模块之一, 且出于一些性能考虑, 大部分接口不是线程安全, 需要手动进行互斥

todo in order

  1. 完善 UI 控件
  2. 可视化 UI 编辑器
  3. 网络通讯
  4. 数据库

转载请注明来自: http://zsaber.com/blog/p/24

既然都来了, 有啥想法顺便留个言呗? (无奈小广告太多, 需审核, 见谅)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注