xwaf框架
胡乐秋 2020-04-28 17:33:06 new new

xwaf

介绍

在我们日常使用的web程序中, 最普遍的操作是对各种对象的增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。CRUD主要牵涉两个方面的问题,一个是需要执行数据持久层的基本操作,另一个是需要一个后台管理操作界面供系统管理员进行数据维护。这两种操作使用相当频繁,且具备通用性。

xwaf(XML-based web application framework)是一个基于xml描述的应用框架,它提供这两个方面的通用功能实现,辅助快速开发基于web的应用。

  • xml描述 + 数据库引擎 ==> 数据库
  • xml描述 + 界面引擎 ==> 后台管理页面

设计思想

  • 不作恶原则: 虽然是一个框架, 但不强制使用。
  • 拥抱变化: 支持对象字段的变化。
  • 可替换: 整个框架和每个模块均可替换。
  • 可定制: 针对特定类型,可数据库和界面定制。
  • 可扩展: 针对特定类型,可实现数据库和界面扩展。

xwaf提供了什么

  • 一个数据库引擎
  • 一个界面引擎
  • 一个权限组件
  • 一个附件插件

依赖

  • nginx: 反向代理实现负载平衡
  • cherry: 实现多线程
  • bootle: 处理路由
  • jinja2: 模板引擎
  • bootstrap + adminLTE: 提供后台管理页面、页片、及部件元素

设计原则

  • 使用插件框架扩展模块
  • 使用"dispatch/invoke"中介者模式提供服务的发布与调用, 解耦模块依赖
  • 使用"notify/observer"观察者模式提供状态改变和事件通知
  • 每个模块尽量以"dispatch"方式发布基本查询服务和部分命令;以"notify"方式发布状态变化与事件通知
  • 插件初始化期间加载所有的服务模块(xxx_service.py)
  • 插件间尽量不直接引用模块,特定的初始化例程除外
  • 插件内尽量减少模块引用,特别是视图推荐仅引用对应模块