Есть проект. Требуется не изменяя исходного кода проекта менять его работу под потребности заказчика, т.е. писать плагин, со следующими возможностями:
- добавлять новые реквизиты на форму,
- перепрописывать события существующих,
- вызывать процедуры из подулей объектов.
Возможно ли такое? Если да - то где бы про это почитать, на каких принципах это строится?
Как писать плагины к готовому проекту?
Модератор: Модераторы
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Для начала - в проекте должна быть предусмотрина возможность - процедуры, подключения плагинов. БЕз этого - никак.
По первой части вопроса ответ однозначный, если это не было изначально заложено в архитектуру, то решить можно будет только костылями, если вообще возможно.
Начать с чтения трудов уважаемых людей)tria писал(а):где бы про это почитать, на каких принципах это строится?
- BlackShark
- новенький
- Сообщения: 44
- Зарегистрирован: 20.05.2019 11:52:15
- Контактная информация:
Нужно определиться какие плюшки даст вам система плагинов в ПО и оценить насколько это дорого в реализации, возможно ли и уместно ли в текущей архитектуре вообще. ИМХО всё из перечисленного про ООП, и решаемо без плагинов. Хотя плагины тоже ООП, те же программные интерфейсы, позволяют изолировать код, добавить абстракции, со всеми вытекающими +-, но если эти реализации интерфейсов включить в сам проект, то уже наверное не скажешь что у тебя система плагинов, чистый ООП. Опять ИМХО, системы плагинов оправданы в бэк-сервисах работающих в режиме 7/24, в которых с помощью тех же плагинов легко расширять функциональность, масштабировать, локализовывать проблемы. Подобные вещи позволяют сместить фокус разработки от программиста к инженеру, инженер легко становится архитектором сервисов, программисту легко реализовывать поставленные задачи, т.к. задача легко декомпозируется на отдельные плагины, тестировать unit-тестами, а так же автотестами если предусмотреть такую утилиту для системы, которая по заданному сценарию подаёт на вход сигнал/данные и сверяет выходной отклик с эталоном. Есть конечно ещё ниши просмотровых форм для разных типов данных, например как в Total Commander, но это наверное самый простой вариант - объяви базовый интерфейс (контракт) и реализуй его в своих плагинах (dll/bpl/unit).tria писал(а):Есть проект. Требуется не изменяя исходного кода проекта менять его работу под потребности заказчика, т.е. писать плагин, со следующими возможностями:
- добавлять новые реквизиты на форму,
- перепрописывать события существующих,
- вызывать процедуры из подулей объектов.
Возможно ли такое? Если да - то где бы про это почитать, на каких принципах это строится?
То что вы хотите сделать не плагин, а патч или даже кряк (от английского crack) программы. Если это не сказывается на формате данных то подобное в принципе возможно но довольно ограниченно и не всегда надежно.tria писал(а):Есть проект. Требуется не изменяя исходного кода проекта менять его работу под потребности заказчика, т.е. писать плагин, со следующими возможностями:
- добавлять новые реквизиты на форму,
- перепрописывать события существующих,
- вызывать процедуры из модулей объектов.
Возможно ли такое? Если да - то где бы про это почитать, на каких принципах это строится?
Я когда-то делал программу для конвертации данных из одной версии некой коммерческой программы в другую просто читая данные из формы в окне "исходной программы" и эмулируя ввод в окне "новой версии" ( при этом эмулировался весь клавиатурный набор и нажатия "на кнопки в форме" в обоих программах )
Народ это тогда спасло (форматы данных были не шифрованы, но бинарны, несовместимы и не стандартны, а базы данных там копились годами), но довольно часто в подобных ситуациях надежнее и быстрее сделать "инженерный анализ " и просто написать "функциональный двойник" программы с новыми функциями. ( Особенно если нет нужды в переносе данных или как вариант старая-БД имеет понятный и/или стандартный формат )
