黑板架构与两层架构相类似,有着某些局限性。最明显的缺点,就是所有的数据之间的完整性需要应用程序员来控制,这对大型应用来说,这是一个恶梦。主要原因是黑板架构中的黑板和两层架构中的数据库都不能对真实世界建模,因而维护这些非常具体的数据的工作量也的确大的惊人。
针对上述问题,在上个世纪的70年代就出现了三层式架构的说法。这里的三层式的三是虚数。实际中往往不止三层。最著名的三层式架构就是Microsoft的DNA(表示层、商业逻辑层和数据服务层)架构。通过学习Martin Fowler的《分析模式》。我的理解 三层式应该有下列五层组成:表示层、应用逻辑层、领域层、数据接口层以及数据源(数据库或其他数据格式)层。
下面简单介绍一下这几层的具体含义。
表示层:
就是直接面向客户的界面层;
应用逻辑层:
在领域层和表示层之间,确切的说是 提供了领域层的外观层。因为领域层对于表示层的程序员来说过于复杂了。利用应用逻辑层进行一下简化,在复杂运用的场合确实是有必要的。关于何为'外观'请参阅参考书目2,设计模式这本经典之作。
领域层:
即为领域的对象模型。在这里, 利用面向对象技术对用户的领域进行建模。 形成反映领域的对象模型。屏蔽数据存储结构和数据位置。需要强调的是, 这里往往反映的是领域知识,而非软件的具体应用。具体应用还是写在应用逻辑层较好。
数据接口层:
提供对数据源访问的功能。
数据源层:
提供数据的存储。
从二层式架构到三层式架构的演化中我们可以清晰的看到软件架构的发展趋势,即抽象度不断提高,单一职责的设计思想不断深化。据说某些大型软件的层数可达数十层。显然,如果没有这种层次的组织,大型软件的开发显然是不可能的。
[参考书目]
1 分析模式 可复用的对象模型 Martin Foller 机械工业出版社
2 设计模式 可复用面向对象软件的基础 Erich Grmma、Richard Helm、Ralph Johnson、John Vlissides 机械工业出版社