2012-02-19 13 views
11

¿Qué es una aplicación centrada en datos y existe alguna diferencia con un modelo de aplicación orientado a objetos?¿Cuál es la diferencia entre los modelos de aplicación centrados en datos y orientados a objetos?

+0

¿Puede proporcionar algo de contexto con su pregunta? –

+0

[1]: http://en.wikipedia.org/wiki/Database-centric_architecture [2]: http://en.wikipedia.org/wiki/Object-oriented_programming –

+0

Estoy leyendo un libro sobre una arquitectura distribuida y cómo hacer un marco de aplicación. Se habla de un modelo de aplicación centrada en datos y oo, pero no pude entender mucho al respecto. Luego googleé, pero no pude encontrar mucha información sobre esta comparación. –

Respuesta

13

Los dos conceptos son algo ortogonales, un Data Centric Application es uno donde la base de datos juega un papel clave, donde las propiedades pueden influir en las rutas de código que se ejecutan en su aplicación y donde el código es más genérico se define a través de las relaciones y restricciones de la base de datos. OOP se puede usar para crear una aplicación centrada en datos.

Algunas de las grandes arquitecturas multi-tier en las que las personas piensan cuando dicen arquitectura OOP implementan la lógica empresarial en el código y simplemente almacenan los datos en la base de datos. Sin embargo, sería un error pensar que el diseño orientado a objetos necesariamente tiene que ser un sistema de lógica de negocios grande.

Supongamos que tiene que implementar el paso de mensajes entre dos sistemas. Una forma (aunque mala) es hacer que cada uno de los sistemas escriba los mensajes en la base de datos y que el otro sistema los lea de la base de datos de vez en cuando para recoger los mensajes. Este sería un enfoque centrado en los datos ya que se necesita muy poco código además de leer y escribir datos.

El mismo sistema podría implementarse haciendo que los sistemas abran una conexión de socket entre sí y envíen mensajes directamente. De esta forma, hay más código y menos acceso a la base de datos. Este es el enfoque no datacéntrico. Cualquiera de estos podría implementarse utilizando los conceptos de OOP.

Otro ejemplo de mi trabajo implementamos servidores para juegos, un tipo de servidor maneja el juego multijugador para que el usuario presione el botón y la nave espacial dispara el misil a otro jugador. Este servidor no es datacéntrico, está basado en eventos. Otro servidor almacena los puntajes más altos de los usuarios, listas de amigos, etc. Este servidor es una envoltura delgada sobre la base de datos que almacena el puntaje y las listas.

+0

Gracias por la respuesta. ¿Puede proporcionar más información de lo que dice "si sus objetos son genéricos, entonces su aplicación aún puede estar centrada en los datos"? –

+0

Editado para algunos ejemplos –

8

Un diseño centrado en datos es aquel en el que el comportamiento de la aplicación está encapsulado por datos. Un simple ejemplo. Considere la siguiente clase de OOP:

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

Esta es una representación de OOP de un automóvil. Invocar el método 'mover' hará que el automóvil comience a moverse. En otras palabras, cualquier efecto secundario se desencadena al invocar los métodos de clase.

Aquí está la misma clase, pero centrada en los datos:

class Car { 
    int x, y; 
} 

Con el fin de conseguir este coche en movimiento, me "simplemente" cambiar los valores de x e y. En la mayoría de los lenguajes de programación, los miembros cambiantes no permitirán la ejecución de la lógica, por lo que la centricidad de los datos a menudo requiere un marco.

En tal marco, la lógica se ejecuta en C, U y D de CRUD.Dicho marco proporcionará las instalaciones apropiadas para permitir la inserción de código en cualquiera de estos eventos, por ejemplo:

  • DBMS desencadena
  • OMG DDS waitsets/oyentes (DDS es un estándar de mensajería centrada en los datos)
  • corto observadores (Corto es un framework de aplicaciones centradas en datos) de diseño centrado en

de datos tiene muchas implicaciones. Por ejemplo, dado que un estado de la aplicación se representa efectivamente con sus datos, puede mantener la aplicación automáticamente. Una aplicación centrada en datos bien escrita se puede almacenar, detener y restaurar desde una base de datos, y continuar como nunca se había ido.

Los diseños centrados en los datos son una buena opción para las arquitecturas web tradicionales de 3 niveles. Las aplicaciones web suelen ser impulsadas por los contenidos de la base de datos back-end. Por eso, cuando cierras y vuelves a abrir una página web dinámica, sigue teniendo el mismo aspecto (siempre que los datos no hayan cambiado).

Cuestiones relacionadas