powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перевод проекта с IBX на FireDAC
25 сообщений из 111, страница 1 из 5
Перевод проекта с IBX на FireDAC
    #40111303
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть большой проект на Delphi 2007 - больше 400 тысяч строк.

Весь проект построен главным образом на базе

TIBDatabase, TIBTransaction, TIBQuery, TDataSource, TDBGrid

(разумеется, есть еще много используемых компонентов - но это основное)



Проблема в IBX в том, что это устаревшее решение и медленно работает при подключении к базам данных через Интернет-соединение. Например, если ping между 2 компьютерами 20 миллисекунд - выполнением одного небольшого Select (даже возвращающего всего 1 запись) занимает около 80-100 миллисекунд (то есть в 4-5 раз дольше, чем обычный ping).

Другое дело в случае с правильно настроенным FireDAC. Время выполнения Select может быть 20-40 миллисекунд (то есть 1-2 обычных ping вместо 4-5). Соответственно, если всё приложение перевести с IBX на FireDAC - скорость его работы существенно возрастёт при подключении к базе данных через Интернет (где ping между компьютерами не 1-2 миллисекунды, как в локальной сети, а даже 20 мс считается хорошим).



Теперь остаётся вопрос в том - как перевести проект с IBX на FireDAC - чтобы программный код проект этого "почти не заметил"?

Как я понимаю, потребуется переопределить классы TIBDatabase, TIBTransaction, TIBQuery - чтобы они работали на базе FireDAC (используя классы TFDConnection TFDTransaction TFDQuery) и подключить переопределённые классы ко всем формам проекта - после подключения стандартных модулей IBX.

При обращении приложения - скажем, к TIBQuery.Open промежуточный класс должен образаться к TFDQuery и т. д. Еще в приложении для TIBQuery используется множество обработчиков событий AfterScroll, OnGetText и т. д. - они тоже должны перенаправляться на FireDAC. Чтобы не менять (или почти не менять) программный код приложения (там более 200 форм) - но чтобы при этом перевести его на FireDAC.



Есть ли какое-нибудь готовое решение для этого или идея бесперспективная? Занимался ли кто-нибудь подобным? Как лучше всего безболезненно перевести проект с IBX на FireDAC?
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111305
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

Переход на Firedac не поможет. Проблема в Firebird.
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111308
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Фролов
Наталья87,

Переход на Firedac не поможет. Проблема в Firebird.


Если заново делать на базе FireDAC - работает всё значительно быстрее. Проблема в том, что переписывать код 400 форм это несколько месяцев работы. Потому и хочется какого-то решения - как перейти с IBX на FireDAC, не переписывая приложение.

Уходить с Firebird в планах нет, у каждой СУБД есть плюсы и минусы, Firebird не является какой-то особо плохой СУБД (минусы у Firebird есть - но например, у Firebird зато выдающаяся работа с транзакциями, это многоверсионник так что какая СУБД хуже какая лучше можно оставить за рамками данной темы).
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111309
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ФроловПроблема в Firebird.

Не совсем, но переход действительно не поможет. Аффтарше вообще ничего не поможет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111310
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> Другое дело в случае с правильно настроенным FireDAC.

Вы уже пробовали протестировать на реальном
примере или это умозрительные рассуждения?

> Есть ли какое-нибудь готовое решение для этого

Вряд ли. У FireDAC был IIRC некий мигратор с BDE,
но сомневаюсь, что есть нечто подобное с IBX и т.п.

P.S. Сначала попробуйте различные решения, не
требующие изменения кода - ZeBeDee, VPN и пр.
Если не поможет - тогда думайте менее "активном"
взаимодействии клиента с сервером, bried-case и пр.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111312
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамP.S. Сначала попробуйте различные решения, не требующие изменения кода -
ZeBeDee, VPN и пр.

Мёртвому припарка. Протокол в Firebird 2.5 был оптимизирован под способ, которым
его использует IBX. В тройке добавили сжатие, что делает бесполезным ЗиБиДи.
Если даже с этим оно работает медленно - нужно рихтовать архитектуру, а у
аффтарши "400 тысяч строк". (Хотя мы-то помним, что большая часть из них это
хаки для стандартных компонент чтобы заставить их работать так как разработчикам
и в страшном сне не могло присниться.)
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111316
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Наталья87> Другое дело в случае с правильно настроенным FireDAC.
Вы уже пробовали протестировать на реальном
примере или это умозрительные рассуждения?


Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум.
Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше.
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111318
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
(Хотя мы-то помним, что большая часть из них это
хаки для стандартных компонент чтобы заставить их работать так как разработчикам
и в страшном сне не могло присниться.)


Нет - бОльшая часть кода - это формы, построенные на базе TIBDatabase, TIBTransaction, TIBQuery, TDataSource, TDBGrid
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111320
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Гаджимурадов РустамP.S. Сначала попробуйте различные решения, не требующие изменения кода -
ZeBeDee, VPN и пр.

Мёртвому припарка. Протокол в Firebird 2.5 был оптимизирован под способ, которым
его использует IBX. В тройке добавили сжатие, что делает бесполезным ЗиБиДи.
Если даже с этим оно работает медленно - нужно рихтовать архитектуру, а у
аффтарши "400 тысяч строк". (Хотя мы-то помним, что большая часть из них это
хаки для стандартных компонент чтобы заставить их работать так как разработчикам
и в страшном сне не могло присниться.)

Имеет смысл перейти с Firebird 2.5 на Firebird 3.0? Ну так это в планах. Но задачу, описанную в рамках данной темы - всё равно придётся решать. Чтобы с IBX перейти на FireDAC.

Неужели разработчики FireDAC не предусмотрели каких нибудь оберток для перехода со старого кода? IBX по сути не такой уж сложный чтобы его как надо обернуть ... может, на GitHub что-нибудь для этого есть?
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111324
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> Именно на реальном примере. Всё работает
Наталья87> действительно быстрее. Раза в два как минимум.

Что ж, удачи в переезде. Сообщите о результатах, ради интереса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111326
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> бОльшая часть кода - это формы, построенные
Наталья87> на базе TIBDatabase, TIBTransaction, TIBQuery

Формы не строят "на базе DB-компонент".
Коннект у вас один, надеюсь, или тоже у
каждой формы свой?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111327
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Наталья87> Именно на реальном примере. Всё работает
Наталья87> действительно быстрее. Раза в два как минимум.

Что ж, удачи в переезде. Сообщите о результатах, ради интереса.


Так переезд не получается. Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC. Неужели только вариант самостоятельно писать?

Понятно что если писать с нуля то надо использовать Firebird 3.0 и FireDAC, но уже используется Firebird 2.5 и IBX ...
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111328
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> Неужели разработчики FireDAC не предусмотрели
Наталья87> каких нибудь оберток для перехода со старого кода?

Разработчик FireDAC сюда заглядывает, может
прокомментирует... Но вообще да, недоработка,
должна быть и обёртка для перехода, и обёртка
для оптимизации, и обёртка для сделать хорошо. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111329
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Наталья87> бОльшая часть кода - это формы, построенные
Наталья87> на базе TIBDatabase, TIBTransaction, TIBQuery

Формы не строят "на базе DB-компонент".
Коннект у вас один, надеюсь, или тоже у
каждой формы свой?


Коннект один - TIBDatabase. Как и положено, не в обычной форме, а в DataModule.
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111332
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Наталья87> Другое дело в случае с правильно настроенным FireDAC.
Сначала попробуйте различные решения, не
требующие изменения кода - ZeBeDee, VPN и пр.
Если не поможет - тогда думайте менее "активном"
взаимодействии клиента с сервером, bried-case и пр.


Все, что можно было сделать в этом направлении - уже сделано. IBX уже "хакнутый". Но все равно так быстро, как FireDAC, не работает ...
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111333
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> Нужны обертки-переходники классов для
Наталья87> IBX чтобы они работали на базе FireDAC.

Как Вы себе это представляете? Чтобы Вы в коде
вызывали свойства/методы классов IBX, а они -
невидимо и самостоятельно - "заменялись" на
методы/свойства FireDAC? Или как?

Ну, мне так, для себя ... (с) КВН
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111335
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> IBX уже "хакнутый". Но все равно так быстро, как FireDAC, не работает ...

В топик призывается МП.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111336
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ReplaceStr('TIB', 'TFD', [ReplaceAll])
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111339
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам

Как Вы себе это представляете? Чтобы Вы в коде
вызывали свойства/методы классов IBX, а они -
невидимо и самостоятельно - "заменялись" на
методы/свойства FireDAC? Или как?


Да - именно так. Написать модуль - наследники классов IBX, чтобы они использовали FireDAC.
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111340
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal
ReplaceStr('TIB', 'TFD', [ReplaceAll])


Я полагаю, может сработать. Но по сложности и подводным камням будет сопоставимо с переходом с D2007 на D XE8.
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111341
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC.

Не нужны. Просто кладёте TFDConnection рядом с TIBConnection, одной строчкой
кода шарите им хэндл, а потом не торопясь постепенно заменяете компоненты на
формах по одной. Это будет быстрее и надёжнее, чем любый ваши самописные обёртки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111342
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Наталья87Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC.

Не нужны. Просто кладёте TFDConnection рядом с TIBConnection, одной строчкой
кода шарите им хэндл, а потом не торопясь постепенно заменяете компоненты на
формах по одной. Это будет быстрее и надёжнее, чем любый ваши самописные обёртки.


Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же принципу. Может, так и сделаю ...
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111346
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Я полагаю, вручную на 2-3 формах заменить
На каких 2-3 формах заменить, если
Наталья87
Коннект один - TIBDatabase. Как и положено, не в обычной форме, а в DataModule.
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111348
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а
потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же
принципу.

Нет. Не пытайтесь умничать и отвлекаться. Ручками. Поэтапно. Каждую форму
индивидуально с тестированием после каждой. Иначе времени потратите больше на
отлов глюков, которые полезут везде и сразу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевод проекта с IBX на FireDAC
    #40111352
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Наталья87Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а
потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же
принципу.

Нет. Не пытайтесь умничать и отвлекаться. Ручками. Поэтапно. Каждую форму
индивидуально с тестированием после каждой. Иначе времени потратите больше на
отлов глюков, которые полезут везде и сразу.


Страшно подумать. Это же жуть, столько ручной работы в век автоматизации. Хочется автоматизировать и написать обёртку ...
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 1 из 5
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перевод проекта с IBX на FireDAC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]