投资菜地

屋后的一亩三分绿色菜园地

2017-03-09

动态数据管理系统

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. 内容

  1. 首先是入口,即url.
  2. 然后是内容,内容又分为
    • 结构(通常以html组织)
    • 数据(通常以api提供,以json或xml为形式)
    • 资源(比如静态文件,其它一些复杂的文件)

2.2. Url Map

  1. Distinguish the environment (Developement Staging Production)
  2. Get Url ( host , path and query)
    • Get Site Setting By host
    • Get Path with paramaters
      • 静态文件处理
      • 动态内容处理
      • 反向代理处理

2.3. 实现

  1. StaticFile
    1. 业务描述
      1. 系统会优先处理静态文件,所以用户定义的路由要避免被静态文件截获。
      2. 用户可以在后台上传一个文件,多个文件(使用zip格式整体上传)
      3. 用户可以设置前缀避免名称冲突
    2. 业务处理 1. 判断静态文件的前缀(由用户后台设置) 2. 判断请求文件是否存在
  2. 动态文件 - 自定义的插件
    1. 业务描述
      1. 利用模板展示页面结构
      2. 内容保存到数据库中
      3. 用户可以设置页面的属性和是否启用缓存
    2. 业务处理 1. Find Page By Path 2. Render Page By Page Setting
    3. IMap 设置
      1. 路由组成 Get ‘url template’ with defaults:[]
        1. HTTP方法 - 目前只支持GET
        2. URL Template
        3. 默认参数 - 定义Area, Controller, Action, Data, Query, PageIndex, PageSize
      2. Template组成
        /Stage/$controller=Home/$action=Index/$active:bool/$id?
        1. 以/分隔每个节点
        2. 以$开头表示参数输出,紧跟其后的=后面的值为默认值。
        3. 使用:后面的数据作为约束,约束可以是int,bool,string,date,regex,以?结束的参数表示可以为空
      3. data 指定repository,query,and paged
        eg: data(product,”category=$controller and price>110“, pageIndex=2,pageSize = 10)
  3. 反向代理 - 使用WebClient得到外部内容

    设置动态url /user/get/{id} 设置目标域名 http://target/abc/{id} 设置返回内容

  4. 预览 & 发布

2.4. WebFile中间件

2.5. HtmlContent中间件

使用在线编辑工具编辑

2.6. MultiTenant多租户

  1. 首先在管道中增加一个处理,得到当前的请求的host地址
  2. 然后从配置文件中得到相关网站的设置

开源项目(更多)