Платформа корпоративных объектов
Enterprise Objects Framework , или просто EOF , была представлена компанией NeXT в 1994 году как новаторский продукт объектно-реляционного картографирования для ее платформ разработки NeXTSTEP и OpenStep . EOF абстрагирует процесс взаимодействия с реляционной базой данных , сопоставляя строки базы данных с Java или Objective-C объектами . Это во многом освобождает разработчиков от написания низкоуровневого кода SQL . [1]
В середине 1990-х годов EOF пользовалась определенным успехом среди финансовых учреждений, которых привлекли преимущества объектно-ориентированной платформы NeXT в быстрой разработке приложений. После слияния Apple Inc с NeXT в 1996 году EOF превратился в полностью интегрированную часть WebObjects , сервера приложений, также родом из NeXT. Многие из основных концепций EOF вновь появились как часть Core Data , которая дополнительно абстрагирует базовые форматы данных, позволяя основываться на хранилищах, отличных от SQL.
История
[ редактировать ]В начале 1990-х годов компания NeXT Computer осознала, что подключение к базам данных необходимо для большинства предприятий, но в то же время потенциально сложно. Каждый источник данных имеет свой язык доступа к данным (или API ), что увеличивает затраты на изучение и использование продукта каждого поставщика. Инженеры NeXT хотели применить преимущества объектно-ориентированного программирования , заставив объекты «общаться» с реляционными базами данных. Поскольку эти две технологии сильно различаются, решением было создать уровень абстракции, изолирующий разработчиков от написания низкоуровневого процедурного кода ( SQL ), специфичного для каждого источника данных.
Первая попытка была предпринята в 1992 году с выпуском Database Kit (DBKit), который охватывал любую базу данных объектно-ориентированной структурой. К сожалению, NEXTSTEP в то время был недостаточно мощным, а DBKit имел серьезные конструктивные недостатки.
Вторая попытка NeXT была предпринята в 1994 году с версией 1 Enterprise Objects Framework (EOF), полностью переписанной , которая стала гораздо более модульной и совместимой с OpenStep . EOF 1.0 был первым продуктом, выпущенным NeXT с использованием Foundation Kit, и представил сообществу разработчиков автоматически выпускаемые объекты. В команде разработчиков на тот момент было всего четыре человека: Джек Гринфилд, Рич Уильямсон, Лайнус Апсон и Дэн Уиллхайт. EOF 2.0, выпущенный в конце 1995 года, еще больше усовершенствовал архитектуру, представив контекст редактирования. На тот момент в команду разработчиков входили Дэн Уиллхайт, Крейг Федериги , Эрик Нояу и Чарли Кляйсснер.
EOF достиг скромного уровня популярности в сообществе финансового программирования в середине 1990-х годов, но он стал самостоятельным с появлением Всемирной паутины и концепции веб-приложений . Было ясно, что EOF может помочь компаниям подключить свои устаревшие базы данных к Интернету без какой-либо перезаписи этих данных. Благодаря добавлению фреймворков для управления состоянием, балансировки нагрузки и динамической генерации HTML компания NeXT смогла запустить в 1996 году первый объектно-ориентированный сервер веб-приложений WebObjects с EOF в основе.
В 2000 году Apple Inc. (которая объединилась с NeXT) официально отказалась от EOF как отдельного продукта, а это означало, что разработчики не смогут использовать его для создания настольных приложений для будущей Mac OS X. Однако он по-прежнему будет неотъемлемой частью новой крупной версии WebObjects. WebObjects 5, выпущенный в 2001 году, был важен тем, что его среда была перенесена с родного языка программирования Objective-C на язык Java . Критики этого изменения утверждают, что большая часть возможностей EOF была побочным эффектом его корней Objective-C и что EOF потерял красоту и простоту, которые он когда-то имел. Сторонние инструменты, такие как EOGenerator , помогают восполнить недостатки, привнесенные Java (в основном из-за потери категорий ).
База кода Objective-C была вновь представлена с некоторыми изменениями разработчикам настольных приложений как Core Data , часть Apple Cocoa API , с выпуском Mac OS X Tiger в апреле 2005 года.
Как работает ЭОФ
[ редактировать ]Enterprise Objects предоставляет инструменты и платформы для объектно-реляционного сопоставления. Технология специализируется на предоставлении механизмов получения данных из различных источников данных, таких как реляционные базы данных через каталоги JDBC и JNDI, а также механизмов передачи данных обратно в эти источники данных. Эти механизмы разработаны на основе многоуровневого абстрактного подхода, который позволяет разработчикам думать о извлечении и передаче данных на более высоком уровне, чем конкретный источник данных или поставщик источника данных.
Центральным элементом этого сопоставления является файл модели («EOModel»), который вы создаете с помощью визуального инструмента — либо EOModeler, либо подключаемого модуля EOModeler для Xcode . Отображение работает следующим образом:
- Таблицы базы данных сопоставлены с классами.
- Столбцы базы данных сопоставляются с атрибутами класса.
- Строки базы данных сопоставляются с объектами (или экземплярами классов).
Вы можете создавать модели данных на основе существующих источников данных или создавать модели данных с нуля, которые затем использовать для создания структур данных (таблиц, столбцов, объединений) в источнике данных. В результате записи базы данных можно транспонировать в объекты Java.
Преимущество использования моделей данных заключается в том, что приложения изолированы от особенностей источников данных, к которым они обращаются. Такое отделение бизнес-логики приложения от логики базы данных позволяет разработчикам изменять базу данных, к которой обращается приложение, без необходимости изменения самого приложения.
EOF обеспечивает уровень прозрачности базы данных, которого нет в других инструментах, и позволяет использовать одну и ту же модель для доступа к базам данных разных поставщиков и даже позволяет устанавливать связи между базами данных разных поставщиков без изменения исходного кода.
Его мощь заключается в представлении базовых источников данных в виде управляемых графов постоянных объектов. Проще говоря, это означает, что он организует уровень модели приложения в набор определенных объектов данных в памяти. Затем он отслеживает изменения в этих объектах и может отменить эти изменения по требованию, например, когда пользователь выполняет команду отмены. Затем, когда приходит время сохранить изменения в данных приложения, оно архивирует объекты в базовые источники данных.
Использование наследования
[ редактировать ]При разработке Enterprise Objects разработчики могут использовать объектно-ориентированную функцию, известную как наследование . Например, объект «Клиент» и объект «Сотрудник» могут наследовать определенные характеристики от более общего объекта «Человек», такие как имя, адрес и номер телефона. Хотя такое мышление присуще объектно-ориентированному проектированию, реляционные базы данных не имеют явной поддержки наследования. Однако, используя Enterprise Objects, вы можете создавать модели данных, отражающие иерархии объектов. То есть вы можете проектировать таблицы базы данных для поддержки наследования, а также разрабатывать корпоративные объекты, которые сопоставляются с несколькими таблицами или определенными представлениями таблицы базы данных.
Корпоративные объекты (EO)
[ редактировать ]Enterprise Object аналогичен тому, что в объектно-ориентированном программировании часто называют бизнес-объектом — классу, который моделирует физический или концептуальный объект в бизнес-сфере (например, клиент, заказ, товар и т. д.). Что отличает EO от других объектов, так это то, что данные его экземпляра сопоставляются с хранилищем данных. Обычно корпоративный объект содержит пары «ключ-значение», которые представляют строку в реляционной базе данных. Ключ — это, по сути, имя столбца, а значение — это то, что было в этой строке в базе данных. Таким образом, можно сказать, что свойства EO сохраняются после окончания срока службы любого конкретного запущенного приложения.
Точнее, Enterprise Object — это экземпляр класса, реализующего интерфейс com.webobjects.eocontrol.EOEnterpriseObject.
У корпоративного объекта есть соответствующая модель (называемая EOModel), которая определяет соответствие между объектной моделью класса и схемой базы данных. Однако корпоративный объект не знает явно о своей модели. Этот уровень абстракции означает, что поставщиков баз данных можно менять, не затрагивая при этом код разработчика. Это дает Enterprise Objects высокую степень возможности повторного использования.
EOF и основные данные
[ редактировать ]Несмотря на общее происхождение, эти две технологии разошлись: каждая технология сохранила подмножество функций исходной базы кода Objective-C, но добавила некоторые новые функции.
Функции, поддерживаемые только EOF
[ редактировать ]EOF поддерживает собственный SQL; общие контексты редактирования; вложенные контексты редактирования; а также предварительная выборка и пакетная обработка связей — все функции исходной реализации Objective-C, не поддерживаемые Core Data. Core Data также не предоставляет эквивалент EOModelGroup — класс NSManagedObjectModel предоставляет методы для слияния моделей из существующих моделей и для извлечения объединенных моделей из пакетов.
Функции, поддерживаемые только Core Data
[ редактировать ]Core Data поддерживает извлеченные свойства; несколько конфигураций в модели управляемых объектов; местные магазины; и агрегирование магазинов (данные для данного объекта могут быть распределены по нескольким магазинам); настройка и локализация имен свойств и предупреждений проверки; и использование предикатов для проверки свойств. Эти функции исходной реализации Objective-C не поддерживаются реализацией Java.
Внешние ссылки
[ редактировать ]Ссылки
[ редактировать ]- ^ Уорнер, Роберт и Приват, Майкл. Pro Core Data для iOS, второе издание . Нидерланды, Апресс, 2011. 2.