Любой, кто имеет опыт работы с платформой Salesforce, будет знать, что он может по существу использоваться в качестве бэкэнд для многих веб-приложений. Они позволяют конечным пользователям определять пользовательские объекты и поля на этих объектах. Так, например, вместо того, чтобы иметь некоторый объект как строго типизированный класс в коде, у них есть общий «пользовательский объект», поведение и данные которого определяются выбранными вами полями и триггерами и правилами, которые вы применяете к нему. Поэтому им не нужно обновлять код, перекомпилировать и переустанавливать каждый раз, когда пользователь добавляет его (что, учитывая, что они являются веб-сервисом, было бы непрактичным и приводило к серьезному простою, много).Имеет ли это название «слишком общий» тип программирования?
Я думал, как это может быть реализовано, и я думаю, что Salesforce может сделать это очень сложным образом, но я специально думаю, что I может реализовать это. До сих пор я пришел к следующему:
- «Объект defintion», содержащий все метаданные для определенного типа записи. Эквивалент определения класса жесткого кода.
- Общая «запись», возможно, с каким-либо словарем/привязкой карты к идентификаторам полей, которые существуют в определении объекта.
- При работе с пользовательскими данными, как запись, так и определение объекта должны быть в памяти, чтобы можно было проверить целостность данных. Поведение, обычно предоставляемое методами, может быть применено с использованием какой-либо триггерной системы (опять же, я использую пример Salesforce здесь, потому что это лучший пример, который я знаю) с определенными действиями/событиями.
Вся эта система кажется очень неуклюжей, медленной (без серьезной оптимизации), и, как будто она будет подвержена проблемам, которые не будут поражать 99% программных проектов, поэтому я хотел бы узнать больше об этом, но я понятия не имею, с чего начать искать.
Является ли идея, изложенная выше уже существующей парадигмой, и если да, то что она называется?