В чем разница между ориентированными на данные и объектно-ориентированными моделями приложений?

Что такое приложение, ориентированное на данные, и есть ли разница с объектно-ориентированной моделью приложения ?

2 ответов


эти два понятия несколько ортогональны, a Data Centric Application - это тот, где база данных играет ключевую роль, где свойства в базе данных могут влиять на пути кода, запущенные в вашем приложении, и где код более общий, а вся/большая бизнес-логика определяется через отношения и ограничения базы данных. ООП можно использовать для создания приложения, ориентированного на данные.

некоторые из больших многоуровневая архитектуры, которые люди думают когда говорят, что архитектура ООП реализует бизнес-логику в коде и просто хранит данные в базе данных. Однако было бы неправильно думать, что объектно-ориентированный дизайн обязательно должен быть большой бизнес-логической системой.

скажем, вам нужно реализовать передачу сообщений между двумя системами. Один из способов (хотя и плохой) - заставить каждую из систем записывать сообщения в базу данных, а другую систему читать из базы данных так часто, чтобы получать сообщения. Это будет подход, ориентированный на данные, поскольку требуется очень мало кода, кроме чтения и записи данных.

такая же система смогла быть снабжена путем иметь системы раскрывают соединение гнезда друг к другу и отправляют сообщения сразу. Таким образом, больше кода и меньше доступа к базе данных. Это не datacentric подход. Любой из них может быть реализован с использованием концепций ООП.

другой пример из моей работы мы реализуем серверы для игр, один тип серверных ручек многопользовательская игра, поэтому пользователь нажимает кнопку, и космический корабль запускает ракету на другого игрока. Этот сервер не является datacentric он основан на событиях. Другой сервер хранит высокие баллы пользователей, списки друзей и т. д. этот сервер является тонкой оболочкой над базой данных, в которой хранится оценка и списки.


дизайн, ориентированный на данные, - это тот, где поведение приложения инкапсулируется данными. Простой пример. Рассмотрим следующий класс OOP:

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

Это представление ООП автомобиля. Вызов метода "move" вызовет автомобиль, чтобы начать движение. Другими словами, любой побочные эффекты запускаются путем вызова методов класса.

вот тот же класс, но данные ориентированы:

class Car {
   int x, y;
}

чтобы заставить этот автомобиль двигаться, я бы "просто" измените значения x и y. В большинстве языков программирования изменение членов не позволяет выполнять логику, поэтому для централизации данных часто требуется структура.

в такой структуре логика работает на C, U и D CRUD. Такая структура обеспечит соответствующие возможности для вставки кода в любом из этих событий, например:

  • СУБД триггеры
  • OMG DDS waitsets/слушателей (ДДС стандартная ориентированных сообщений)
  • Корто наблюдатели (corto-это платформа приложений, ориентированных на данные)

дизайн, ориентированный на данные, имеет много последствий. Например, поскольку состояние приложения эффективно представлено его данными,можно автоматически сохранить приложение. Хорошо написанное приложение, ориентированное на данные, можно хранить, останавливать и восстанавливать из базы данных и продолжать так, как никогда ушедший.

проекты, ориентированные на данные, хорошо подходят для традиционных 3-уровневых веб-архитектур. Веб-приложения обычно управляются содержимым бэкэнд-базы данных. Вот почему при закрытии и повторном открытии динамической веб-страницы она по-прежнему выглядит одинаково (при условии, что данные не изменились).