2007-11-25

GUI 的架构设计

Views: 22376 | Add Comments

当前的 GPU 仍然拘泥于像素的计算, 它们应该建立更高的逻辑, 正如在某些领域, 硬件单元在整合原来的软件功能. 当前应用程序的 GUI 的特点是文本和图片堆砌.

1. 建议的 GUI 架构

应用程序的 GUI 应该和应用的计算是完全分离的. 当前的 GUI 在架构上和应用的计算在二进制代码层面是不区分的, 而且在编程语言层面也没有区分, 两者是高度耦合的.

在编程语言层面, GUI 和应用的计算不应该通过变量引用耦合在一起, 而是应该通过单一的通信通道进行通信.

在二进制代码层面, GUI 和应用的计算应该分离, 例如在计算机的体系结构上引入 GUI 处理器, 将 GUI 的渲染, 编程等交由 GUI 处理器处理. GUI 处理器在硬件级别上和 CPU 进行通信, 当然, 这种通信应该建立在某种较高的层面上.

2. GUI 的特点

在很多 GUI 应用中, 界面是稳定的, 结构化的, 组合性的.

例如在一个文本编辑软件中, 虽然文本编辑区域不断增删文本, 但是, 菜单栏, 工具栏, 状态栏等的结构几乎不改变. 这种稳定性决定了可以使用描述性的文本来描述界面.

继续上面的例子. 工具栏的按钮可能动态地(在运行时)增加或者减少几个, 但是, 这种变化是结构化的, 可以使用 DOM 方式进行操作.

因为界面是结构化的, 所以可组合性比较高.

3. GUI 的开发

GUI 开发 = 结构描述语言 + 样式描述语言 + 结构操作语言 + 虚拟机(包含渲染器, 命令解释器). 一个例子是 HTML + CSS + JavaScript + Web Browser.

3.1 使用声明式语言来描述界面的结构和外观

当前的 GUI 开发往往使用 C, C++, Java 等命令式语言来描述界面的结构和外观, 但是, 声明式语言更适合这项工作.

假设使用 XML 来描述界面的结构, 那么 XML 文本文档的结构很直观的反映了界面的结构. HTML/XHTML, GTK Glade, ASP.NET, Mozilla XUL, WPF 等使用 XML(或类 XML) 来描述界面.

CSS 之类的样式语言可以用来描述界面的外观.

外观和结构分离.

3.2 使用命令式语言来改变界面的结构和外观

命令式语言被用来改变界面的结构和外观, 可以使用 DOM 方式. 同时, 命令式语言用来同外界通信. 当然, 虚拟机可以内置部分的通信功能.

3.3 要求

上面提到的语言应该是解释型的.

TODO: 某些概念有些模糊

Related posts:

  1. 获取动态加载的图片大小的正确方法
  2. P2P服务中心的开发
  3. SSDB 现在已经支持 Java 语言了!
  4. 用C语法来写Python代码
  5. 如何使用ServletContextListener
Posted by ideawu at 2007-11-25 10:58:48 Tags:

Leave a Comment