• 2007-08-23

    软件体系结构模式-层

    Views: 11157 | No Comments

    关于体系结构模式

    软件系统的开发过程涉及到三种模式:

    • 体系结构模式
    • 设计模式
    • 惯用法

    体系结构模式关于软件系统的整体结构. 而设计模式是比体系结构模式规模小的中等规模的模式, 它主要关注 API 的协作. 模型-视图-控制器(MVC)模式是最著名的体系结构模式.

    层(Layer)是一种体系结构模式, 它将系统水平分割为多个抽象的层次. TCP/IP 网络是层模式的最著名例子.

    层通信

    通信可以分为两种模式: 推模式和拉模式. 下面我们以一个5层结构的系统分析层通信的主要模式.

    1. 层直接调用(API)的拉模式

             read            read            read            read
    Layer 1 ------> Layer 2 ------> Layer 3 ------> Layer 4 ------> Layer 5
    

    在这种通信模式中, 层直接调用相邻层的 API 完成通信. 活动从 Layer 1 开始, 它调用 Layer 2 的 read 方法获取数据, Layer 2 再调用 Layer 3 的 read 方法, 如此. 在代码中, 这种模式的最重要表现是某一层包含了另一层的一个引用.

    2. 层直接调用(API)的推模式

             write           write           write           write
    Layer 1 <------ Layer 2 <------ Layer 3 <------ Layer 4 <------ Layer 5
    

    这种通信模式和上一种很相似. 但活动从 Layer 5 开始, 它将数据压入 Layer 4, 并等待 Layer 4 处理完该数据再返回.

    3. 层是一个独立的处理机(stand-alone)

                ___
    Layer 1 ===[___]=== Layer 2 ...
    

    在这种通信模式中, 层作为一个独立运行的进程或者线程. 层通信通过一个管道(通道), 层从管道中读取数据, 将数据定义管道. 管道中一般有缓冲区. 层与层之间是完全分离的, 不存在相互调用的问题. 管道既可以通过 API 来实现(在线程中), 也可以使用操作系统的管道, Socket 通信等方式.

    在上面的三种层通信模式中, 前两种通过 API 调用来通信, 所以导致层之间耦合度太大, 不利于测试. 即使使用编程语言的接口特性(如 Java 中的 interface)也无法解决这些问题. 而且, 一个层不再被调用时, 它就不会执行.

    第三种通信模式是最典型, 一个例子是 TCP/IP 网络. 每一层作为一个独立的处理机, 就可以独立编写和测试每一个层, 而且层的运行不再受其它层的影响, 只受到管道的影响.

    参考文献

    面向模式的软件体系结构-卷1:模式系统, Frank Buschmann 等著, 机械工业出版社.

    Posted by ideawu at 2007-08-23 08:19:49
  • 2007-07-16

    使用 DocBook 编写书籍和文档

    Views: 10853 | No Comments

    我一直都从各种外国人编写的文档中受益. 例如 Spring Framework 参考文档, Hibernate 参考文档, Gimp 帮助文档, Vim 参考文档等. 最近我才知道它们都是出自一个叫 DocBook 的工具.

    DocBook 是一套 XML 词汇, 你可以使用它来编写表现无关的访求, 关注你的内容的逻辑结构. 使用自由的工具, 结合 DocBook XSL 样式表, 你可以把你的内容发布为 HTML 页面或者 PDF 文件, 或者其它的多种格式.

    Posted by ideawu at 2007-07-16 08:48:48
  • 2007-01-06

    AMD收购ATI 的意义

    Views: 11377 | 1 Comment

    AMD收购ATI只是一种经济行为吗? 不可能. 现代社会已经没有单纯了. 在和这种经济行为一起的, 还有一种技术活动.

    这种技术活动主要是确定CPU和GPU的分工. 比如字符的产生, 是CPU的行为还是GPU的行为? 窗口呢?

    早期的显卡只是一个字符产生器, 包含一个存储字符的ROM和读取电路. 后来, ROM被磁盘和RAM取代了. 字符的产生是操作系统的任务, 也就是CPU的任务.

    在2D游戏流行起来后, CPU通过移动内存数据方式来产生动画的能力已经捉襟见肘, 于是产生了bitblit这样的显存操作. 后来的3D游戏的发展, 也是CPU向GPU交权的过程.

    CPU向GPU交的下一个权利是什么? GUI处理是其中一个. 在很多方面, 硬件会取代软件, 而软件会与人类行为更加接近. 所以, CPU会向更多的设备交出权利, 同时, 它也会取得新的权利.

    我需要查阅更多的资料来支撑我的观点.

    Posted by ideawu at 2007-01-06 20:39:06
  • 2006-12-31

    我以后将研究的内容

    Views: 14996 | No Comments

    我以后将研究下面的内容:

    1. 计算机体系结构.
    2. GUI系统.
    3. Web应用.
    Posted by ideawu at 2006-12-31 10:14:11 Tags:
|<<<5678910111213>>>| 13/13 Pages, 76 Results.