动态数据管理系统
1. Datasource Management System(DMS)数据管理系统
1.1. 欢迎来到DMS的世界
DMS的目标是使用友好易用的方式让普通的用户可以发布自己的网站,博客,电子书。
1.2. DMS是什么?
DMS 是Data Management System的缩写,意为数据管理系统。是一个简单的站点生产机器。它有一个动态的视图目录,和包含原始文本格式的文档,通过DMS,你可以将html,Markdown等文本转化为一个完整的可发布的站点。
我们使用类似 Liquid 语法,这个语法广泛的用在Ruby on rails和Django等网页框架中。你可以使用 DMS 的服务来搭建你的项目页面、博客或者网站,还可以生成Word,PDF或其它流行的电子文档,而且是完全免费的。
1.3. 通过链接访问或分享电子书
wget http//ebook.abs51.com/bookno/
2. 关于设计
2.1. 内容
- 首先是入口,即url.
- 然后是内容,内容又分为
- 结构(通常以html组织)
- 数据(通常以api提供,以json或xml为形式)
- 资源(比如静态文件,其它一些复杂的文件)
2.2. Url Map
- Distinguish the environment (Developement Staging Production)
- Get Url ( host , path and query)
- Get Site Setting By host
- Get Path with paramaters
- 静态文件处理
- 动态内容处理
- 反向代理处理
2.3. 实现
- StaticFile
- 业务描述
- 系统会优先处理静态文件,所以用户定义的路由要避免被静态文件截获。
- 用户可以在后台上传一个文件,多个文件(使用zip格式整体上传)
- 用户可以设置前缀避免名称冲突
- 业务处理 1. 判断静态文件的前缀(由用户后台设置) 2. 判断请求文件是否存在
- 业务描述
- 动态文件 - 自定义的插件
- 业务描述
- 利用模板展示页面结构
- 内容保存到数据库中
- 用户可以设置页面的属性和是否启用缓存
- 业务处理 1. Find Page By Path 2. Render Page By Page Setting
- IMap 设置
- 路由组成
Get ‘url template’ with defaults:[]
- HTTP方法 - 目前只支持GET
- URL Template
- 默认参数 - 定义Area, Controller, Action, Data, Query, PageIndex, PageSize
- Template组成
/Stage/$controller=Home/$action=Index/$active:bool/$id?- 以/分隔每个节点
- 以$开头表示参数输出,紧跟其后的=后面的值为默认值。
- 使用:后面的数据作为约束,约束可以是int,bool,string,date,regex,以?结束的参数表示可以为空
- data 指定repository,query,and paged
eg: data(product,”category=$controller and price>110“, pageIndex=2,pageSize = 10)
- 路由组成
Get ‘url template’ with defaults:[]
- 业务描述
- 反向代理 - 使用WebClient得到外部内容
设置动态url /user/get/{id} 设置目标域名 http://target/abc/{id} 设置返回内容
- 预览 & 发布
2.4. WebFile中间件
2.5. HtmlContent中间件
使用在线编辑工具编辑
2.6. MultiTenant多租户
- 首先在管道中增加一个处理,得到当前的请求的host地址
- 然后从配置文件中得到相关网站的设置