Эффект внутренней платформы - это тенденция архитекторов программного обеспечения создавать систему, настолько настраиваемую, что она становится точной копией, а часто и плохой копией платформы разработки программного обеспечения, которую они используют. Как правило, это неэффективно, и такие системы часто рассматриваются как примеры анти-паттерна .
Примеры
Примеры видны в программном обеспечении на основе плагинов, таком как некоторые текстовые редакторы и веб-браузеры, в которых разработчики часто создают плагины, воссоздающие программное обеспечение, которое обычно запускается поверх самой операционной системы. Механизм надстройки Firefox использовался для разработки ряда FTP- клиентов и файловых браузеров , которые эффективно воспроизводят некоторые функции операционной системы , хотя и на более ограниченной платформе.
В мире баз данных у разработчиков иногда возникает соблазн обойти СУБД , например, сохраняя все в одной большой таблице с тремя столбцами, обозначенными идентификатором объекта, ключом и значением. Хотя эта модель «сущность-атрибут-значение» позволяет разработчику выйти из структуры, навязанной базой данных SQL , она теряет все преимущества [1], поскольку вся работа, которая могла бы быть эффективно выполнена с помощью СУБД, вынуждена выполнять приложение вместо этого. Запросы становятся гораздо более запутанными, [2] индексы и запросы оптимизатор уже не может эффективно работать, и ограничение достоверности данных не применяется. Производительность и ремонтопригодность могут быть крайне низкими.
Аналогичное искушение существует и для XML , где разработчики иногда предпочитают общие имена элементов и используют атрибуты для хранения значимой информации. Например, каждый элемент может называться item и иметь атрибуты типа и значения . Эта практика требует объединения нескольких атрибутов для извлечения смысла. В результате выражения XPath становятся более запутанными, оценка менее эффективна, а структурная проверка дает мало преимуществ.
Другим примером является феномен рабочих столов в Интернете , где вся среда рабочего стола - часто включая веб-браузер - выполняется внутри браузера (который сам обычно работает в среде рабочего стола, предоставляемой операционной системой ). Рабочий стол внутри рабочего стола может быть необычно неудобным для пользователя, и, следовательно, это обычно делается только для запуска программ, которые не могут быть легко развернуты в системах конечных пользователей, или путем скрытия внешнего рабочего стола.
Шаблон « Спецификация» создает логические объекты, которые комбинируются с функциями And (), которые сложно объединить в группы с предложениями Or (). Обычно это легче сделать с помощью базовых логических условных операторов.
Эффект
Разработчики программного обеспечения обычно создают библиотеку пользовательских функций, относящихся к их конкретному проекту. Эффект внутренней платформы возникает, когда эта библиотека расширяется, чтобы включить функции общего назначения, которые дублируют функциональность, уже доступную как часть языка программирования или платформы. Поскольку каждая из этих новых функций обычно вызывает ряд исходных функций, они, как правило, работают медленнее и, если плохо закодированы, также менее надежны. [ необходима цитата ]
С другой стороны, такие функции часто создаются для представления более простого (и часто более переносимого) уровня абстракции поверх сервисов более низкого уровня, которые либо имеют неудобный интерфейс, либо слишком сложны, непереносимы или недостаточно переносимы, либо просто плохо переносятся. соответствует коду приложения более высокого уровня.
Соответствующее использование
Внутренняя платформа может быть полезна по причинам переносимости и разделения привилегий - другими словами, чтобы одно и то же приложение могло работать на самых разных внешних платформах, не затрагивая ничего за пределами песочницы, управляемой внутренней платформой. Например, Sun Microsystems разработала платформу Java для достижения обеих этих целей.
Смотрите также
Рекомендации
- ^ Celko, Джо (1 февраля 2011). «Таблицы поиска в SQL» . Архивировано из оригинального 23 сентября 2016 года . Проверено 25 апреля 2016 года .
- ^ Петерсон, Дон (8 сентября 2004 г.). "Безумие таблицы поиска" . Архивировано из оригинального 10 августа 2018 года . Проверено 25 апреля 2016 года .