本图描述了Dorado5展现中间件的运行机制

1.其中全图可分为Server端和Client端两个区域,分别展示了Dorado5在Server端和Client端的实现机制;
名词解释:
ViewModel:视图模型。一种用于封装界面逻辑操作逻辑的对象。即视图中包含哪些数据、这些数据以什么方式展现、视图中包含哪些控件、这些控件会激发什么操作等等。 ViewModel一般不用于定义各种控件最终在显示的布局,控件布局应通过其它方式进行定义,例如JSP或者Html。
Dataset: 数据集。 数据集是Dorado5架构的核心,用来管理一组数据。结构类似于关系型数据库中的表或视图。 Dataset在运行时会有Server端和Client端两种实例。 Dataset不可以直接显示,一般须通过数据控件来展示其中的数据。
Control: 各种可视化的控件。 包含数据控件和非数据控件。 其中非数据控件一般与数据操作没有直接关系(例如:按钮,菜单等)。 而数据控件是指可以直接用于显示或编辑数据的控件(例如:数据表格,编辑框,树状列表等)。 数据控件可以直接与Dataset进行绑定并自动对Dataset中的数据进行展现。
BRich客户端: 即Browser Rich Client。是指运行与纯浏览器环境中的具有富客户端表现能力的客户端。

2.图中的数字标示处的详细介绍如下:
2.1:首先Dorado5将根据用户的配置和定义创建ViewModel对象, ViewModel中包含了各种Control和Dataset并且将根据配置自动的建立其Control和Dataset之间的绑定关系。 ViewModel可通过两种途径将自己输出到客户端, 详见2.3和2.4。
2.2:此处的外部数据既可以是直接来自于数据库中的数据,例如ResultSet; 也可以是来自于业务逻辑层的数据,例如DTO(Data Transfer Object)或VO(Value Object)。 这些数据将根据ViewModel的配置被填充到一个或多个Dataset当中。
2.3:由于ViewModel本身并不负责界面的布局,因此须利用JSP等技术等对各种Control进行排列和布局。在JSP中我们可以使用Taglib对布局方式进行定义。
2.4 :利用JSP,ViewModel的界面模板将以HTML+XML的形式通过HttpResponse被输出到浏览器当中。== 注意:此过程输出的内容只包含各种控件的定义和界面布局,并不包含真正的业务数据。== 业务数据将通过步骤2.5、2.6输出至Client端。 这种实现方式符合AJAX的4个基本原则中的前两条。
2.5:ViewModel中的数据部分将直接以Dataset的形式交付给Dorado Servlet***。 Dorado Servlet是一个专门用于实现Dorado的Server端和BRich客户端进行数据交换的服务。它既可以实现由Server端向Client端输出数据,也可以接受从BRich客户端向Server端提交的数据,还可以独立地响应Client端发出的数据请求,以实现BRich客户端中的局部数据刷新等功能
2.6:Dorado Servlet将ViewModel交付的数据转化为XML并输出到BRich客户端中。 同时,如果接受到了BRich客户端以XML提交的数据时, Dorado Servlet也会将其解析为Dataset对象并交换给ViewModel。刷新页面时是通过HttpResponse方式把数据以XML方式输出到页面并给BRich客户端解析*,而Dataset数据刷新和页面数据提交是通过Ajax把Server端数据转化为XML到BRich客户端解析或者通过Ajax把BRich客户端数据转化为XML到Server端。
2.7:当2.4和2.6的输出转递到浏览器中后,首先将由Dorado提供的BRich Engine对这些信息进行处理。 其中步骤2.6输出的XML数据将被BRich Engine还原为一个或多个Dataset。如果界面的操作需要对Dataset中的数据进行动态局部刷新(指不刷新整个页面,而只是对其中的数据进行刷新)或提交处理,那么这些数据也将由BRich Engine进行封装以XML的形式通过Ajax发送给Dorado Servlet。
2.8:步骤2.4输出的HTML/XML界面模板将被解析并还原为各种真正可见的Control。有一些静态的Control通过HttpResponse的方式输出Html就可以显示出来,有些动态显示数据的Control就需要通过DHtml的方式结合Dataset和Control的属性和数据来动态构建显示的Control。例如: 数据表格,编辑框,树状列表,按钮,菜单等。同时根据这些Control在ViewModel中的定义,还原他们与Dataset之间的绑定关系,以便与最终将数据呈现给用户。
转自:
资料库

Dorado5学习笔记相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. 高校选课成绩管理系统
  2. 浅析网站开发的未来前景如何?
  3. Google JAVA编程风格
  4. 每天学习java一小时_java再学感受 - 编程一小时的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. Python学习笔记:I/O编程
  6. C# 快速高效率复制对象另一种方式 表达式树
  7. mysql慕课网笔记_mysql学习笔记
  8. JavaScript 第四课 案例研究:JavaScript图片库
  9. 【Scala】使用Scala程序实现WordCount--词频统计(代码)
  10. 记录——《C Primer Plus (第五版)》第十章编程练习第六题
  11. mysql 5.7 sys schema_案例详细说明MySQL5.7中 performance与sys schema中的监控参数
  12. 编译自己功能定制的Fedora7内核
  13. listary文件查找程序下载和使用
  14. echarts官网在线编辑的图表如何导出svg
  15. 进程同步问题(二)——信号量机制
  16. Leaflet vs. OpenLayers3哪个是更好的JavaScript 地图客户端
  17. 【10.24】一个只属于程序员的节日
  18. 管理经济学 知识点总结(一)
  19. 如何写出更具有Python风格的代码
  20. 网页版简易计算器(仅加减乘除)

热门文章

  1. “AI+”将比“互联网+”落地更容易
  2. [纵横网络靶场社区]组态软件分析
  3. 数据可视化软件有哪些?
  4. html中搜索栏怎么写,html搜索框怎么做
  5. 基础不牢靠,何以争朝夕?Java基础面试82道详细解析(更新中)
  6. Go 语言中 = 和 := 有什么区别
  7. CSS关于传统网页中的三大布局方式,手动码字+大白话
  8. File的了解与使用
  9. 前端基础——css进阶(三)
  10. Vue.js使用CSS美化