数据中心和面向对象的应用程序模型之间有什么区别?

时间:2012-02-19 05:26:58

标签: oop architecture distributed

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

2 个答案:

答案 0 :(得分:14)

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

当人们说OOP架构在代码中实现业务逻辑并将数据存储在数据库中时,人们会想到一些大型multi-tier架构。但是,认为面向对象设计必然是一个大型的业务逻辑驱动系统是错误的。

假设您必须在两个系统之间实现消息传递。一种方法(尽管是一种糟糕的方式)是让每个系统将消息写入数据库,而另一个系统每隔一段时间就从数据库中读取消息。这将是一种以数据为中心的方法,因为除了读取和写入数据之外,只需要很少的代码。

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

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

答案 1 :(得分:8)

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

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

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

这是同一个类,但以数据为中心:

class Car {
   int x, y;
}

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

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

  • DBMS 触发器
  • OMG DDS waitsets / listeners(DDS是一种以数据为中心的消息传递标准)
  • corto 观察员(corto是一个以数据为中心的应用程序框架)

以数据为中心的设计有很多含义。例如,由于应用程序状态由其数据有效表示,因此您可以自动保留应用程序。一个编写良好的以数据为中心的应用程序可以从数据库中存储,停止和恢复,并且可以继续,就像它从未消失一样。

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