2012-02-19 68 views
11

什么是以数据为中心的应用程序?与面向对象的应用程序模型有什么不同?以数据为中心和面向对象的应用程序模型有什么区别?

+0

你能提供一些你的问题的背景吗? – 2012-02-19 05:29:49

+0

[1]:http://en.wikipedia.org/wiki/Database-centric_architecture [2]:http://en.wikipedia.org/wiki/Object-oriented_programming – 2012-02-19 05:38:27

+0

我在读一本关于分布式体系结构的书以及如何制作应用程序框架。有一个关于以数据为中心和oo应用程序模型的讨论,但我不能理解它。然后我谷歌它,但我无法找到关于这个比较的很多信息。 – 2012-02-19 05:41:25

回答

13

这两个概念有点正交,Data Centric Application是数据库扮演关键角色的角色,其中数据库中的属性可能影响在您的应用程序中运行的代码路径,以及代码更通用以及所有/大多数业务逻辑通过数据库关系和约束来定义。 OOP可以用来创建一个以数据为中心的应用程序。

一些大的multi-tier体系结构,人们认为当他们说OOP体系结构在代码中实现业务逻辑并将数据存储在数据库中时。然而,认为面向对象的设计必然是一个大型的业务逻辑缠身系统是错误的。

假设你必须在两个系统之间实现消息传递。一种方式(尽管是一种坏方法)是让每个系统都将消息写入数据库,并且每隔一段时间从数据库中读取其他系统以拾取消息。这将是一种以数据为中心的方法,因为除了读取和写入数据之外,所需的代码非常少。

可以通过让系统彼此打开套接字连接并直接发送消息来实现相同的系统。以这种方式,有更多的代码和更少的数据库访问。这是非数据中心的方法。其中任何一个都可以使用OOP概念实现。

我的工作的另一个例子是我们实现游戏的服务器,一种类型的服务器处理多玩家游戏,因此用户按下按钮并且飞船在其他玩家处发射导弹。该服务器不是基于事件的数据中心。另一台服务器存储用户高分,朋友列表等,这个服务器是存储分数和列表的数据库的薄包装。

+0

感谢您的回答。你能否提供更多的信息,你所说的是“如果你的对象是通用的,那么你的应用程序仍然是以数据为中心的”? – 2012-02-19 05:48:58

+0

编辑了一些示例 – 2012-02-19 09:59:25

8

以数据为中心的设计是应用程序行为被数据封装的设计。一个简单的例子。考虑以下OOP类别:

class Car { 
    void move(x, y); 
private: 
    int x, y; 
} 

这是一辆汽车的OOP表示。调用'移动'方法将触发汽车开始移动。换句话说,通过调用类方法触发任何副作用

下面是同一类,但数据中心:

class Car { 
    int x, y; 
} 

为了得到这辆车的移动,我会“只是”改变x和y的值。在大多数编程语言中,更改成员不允许执行逻辑,这就是数据中心通常需要框架的原因。

在这样的框架中,逻辑运行在CRUD的C,U和D上。这种框架将提供适当设施在任何这些事件,以使代码插入,例如:

  • DBMS触发
  • OMG DDS waitsets /听众(DDS是数据中心的消息收发标准)
  • CORTO观察员(CORTO是数据中心的应用程序框架)

数据中心的设计具有很多影响。例如,由于应用程序状态实际上由其数据表示,因此可以自动保留应用程序。一个写得很好的以数据为中心的应用程序可以被存储,停止并从数据库中恢复,并继续像从未消失。

以数据为中心的设计与传统的3层Web架构非常匹配。 Web应用程序通常由后端数据库的内容驱动。这就是为什么当你关闭并重新打开一个动态网页时,它仍然看起来一样(只要数据没有改变)。

相关问题