В чем разница между ориентированными на данные и объектно-ориентированными моделями приложений? - PullRequest
12 голосов
/ 19 февраля 2012

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

Ответы [ 2 ]

14 голосов
/ 19 февраля 2012

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

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

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

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

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

8 голосов
/ 17 мая 2015

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

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

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

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

class Car {
   int x, y;
}

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...