Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

DBAware компоненты - за и против 


Кулюкин Олег   (2002-03-12 08:57) [0]

Не раз сталкивался с точкой зрения что лучше не использовать компоненты с закладки "Data Controls", а считывать данные в свои структуры и все операции с ними проводить ручками.
Плюсы такого подхода - полный контроль. Легко передать объект в процедуру. Данные можно визуализировать любым способом, не ограничиваясь Гридами-ДБЕдитами-ДБЛукАпами.
Минусы - то что раньше делалось кликом мыши, теперь требует основательного проектирования, тестирования и т.д (короче, возрастает объем работ).

Кто что думает по этому поводу?
Кто отказадся от DBAware компонентов и почему?



Кулюкин Олег   (2002-03-12 09:02) [1]

2 Модератор
Прошу прощения, это должно было попасть в "Потрепаться".
НЕ туда отправил :(



Виктор Щербаков   (2002-03-12 09:11) [2]

ИМХО, зависит от задачи. Так, например, при разработке ГИС есть все основания отказаться от вышеупомянутых компонент. Но при разработке учетного софта с большим количеством справочников они зачастую дают почти всю необходимую функциональность пользовательского интерфейса.



Polevi   (2002-03-12 09:51) [3]

Можно пользоваться, главное чтобы собственного изготовления были :-)



Роман Василенко   (2002-03-12 10:31) [4]

Эээ... Я долгое время пользовался "альтернативными" методами. Вот что скажу: 95%-97% задач, связанных с какой бы то ни было структурой эффективнее всего решаются посредством обстракции, именуемой TDataSet. А вот, что там уже на голове у него сидит - вопрос другой.



drpass   (2002-03-12 10:39) [5]

Когда как. Если функциональности Data Controls для поставленной задачи вполне хватает, то почему бы ими не пользоваться?
А когда нужно что-то большее (или красившее :), и сроки не поджимают, тогда мы сочиняем свое



Andrey   (2002-03-12 11:08) [6]

Придерживаюсь той же точки зрения что и drpass.

Также хочу предложить пару интересных ссылок противникам DBGrid-а.
http://delphi.bugs.ru/grids.shtml
http://spenov.narod.ru/DBGridEditor/DBGridEditor.html



Sergey13   (2002-03-12 11:16) [7]

Ну тогда и писать лучше на асемблере. Причем желательно в "своей" операционке. Вааще что угодно можно сварганить. Какого контроля тебе не хватает? И как ты собираешся отображать данные? И кто будет поддерживать твои программы(только не я)? И кто будет платить за такие извраты (проектирование и реализация собственных контролов)?



vuk   (2002-03-12 11:26) [8]

У себя мы стандартные гриды не используем. Перешли полностью на компоненты от DevExpress. И, кстати, в этом вопросе не согласен с противниками использования сторонних компонентов. Использовать их можно, и если они решают требуемые задачи - даже нужно, поскольку это экономит время и деньги. Естественно, необходимо тщательное тестирование до принятия решения об использовании.



Кулюкин Олег   (2002-03-12 12:31) [9]

2 Sergey13 © (12.03.02 11:16)
Не покажите ли где шла речь о собственных контролах?


> И как ты собираешся отображать данные?
Есть DrawGrid, TreeView и ListView.



Andrew Kaufman   (2002-03-14 05:27) [10]

2 Кулюкин Олег © (12.03.02 12:31)
> Есть DrawGrid, TreeView и ListView.
Вот только учитывая их (TreeView и ListView) тормознутость и легкую глюкавость, рекомендую VirtualTree by Mike Lischke.
Не так давно перешел на него, и очень доволен. Хотя поработать ручками над немного больше, но и результаты несравненно выше.
Если кто заинтересуется:
http://www.lischke-online.de/VirtualTreeview/VT.html
Полностью бесплатен, с исходниками.



Sergey13   (2002-03-14 09:07) [11]

Кулюкин Олег © (12.03.02 12:31)
>Не покажите ли где шла речь о собственных контролах?

Ну так если ты предлагаешь не использовать "компоненты с закладки "Data Controls",а считывать данные в свои структуры " а про "Есть DrawGrid, TreeView и ListView" ты не писал, то что я должен был подумать? Я и подумал, что ты собираешься изобрести свои методы отображения информации из БД. Ведь если тебе просто не нравится работать со стандартными(из поставки) "Гридами-ДБЕдитами-ДБЛукАпами" и ты предпочитаещь пользоваться другими(своими - чужими не суть) - это совсем другой вопрос. Я и сам ими не пользуюсь, кстати.

2Кулюкин Олег © (12.03.02 08:57)
>Минусы - то что раньше делалось кликом мыши, теперь требует >основательного проектирования, тестирования и т.д (короче, >возрастает объем работ).
Ты же сам себе отвечаешь в своем вопросе. Чем больше кода пишешь тем потенциально больше ошибок, тем меньше производительность (как правило), тем труднее сопровождение, тем...8-( Кроме этого, такой подход плох еще и тем, что начинаешь больше думать не о функционале программы которую пишешь, а о всяких "интерфейсных" делах, и на это уходит все больше времени. В результате можно сделать "красиво и оригинально", но при этом "тормозно и глюкаво".
Хотя я не отрицаю, что для каких то специфических работ такие вещи необходимы. Но таких случаев я при работе с БД, я думаю много меньше 1%.



Кулюкин Олег   (2002-03-14 10:51) [12]

2 Виктор Щербаков © (12.03.02 09:11)
> Но при разработке учетного софта с большим количеством справочников они зачастую дают почти всю необходимую функциональность пользовательского интерфейса.
ДА, тут поспорить не могу.


2 Andrew Kaufman (14.03.02 05:27)
> Вот только учитывая их (TreeView и ListView) тормознутость и легкую глюкавость, рекомендую VirtualTree by Mike Lischke.
Наслышан, посмотрю.

2 Sergey13 © (14.03.02 09:07)
> Я и подумал, что ты собираешься изобрести свои методы отображения информации из БД
Нет :) Дорого обойдется.
Но, ИМХО, DBAware контролы хороши исключительно для отображения справочников. Да и то в гриде начинаешь ручками ячейки раскрашивать...



Sergey13   (2002-03-14 11:27) [13]

>Кулюкин Олег © (14.03.02 10:51)
А мне кажется что работа с БД на 99% и состоит из работы со справочниками и другими ТАБЛИЧНЫМИ данными. И не мудрено, так как БД это, в конечном итоге, и есть набор ТАБЛИЦ.

>Да и то в гриде начинаешь ручками ячейки раскрашивать...
Мне вообше кажется(я уже писал) что ты, по моему, слишком много внимания уделяешь "раскрашенности". Иногда это и не плохо, но чаще, кроме ряби в глазах, ничего не дает. Только мешает. ИМХО чем стандартнее интерфейс, тем лучше.



paul_shmakov   (2002-03-14 15:41) [14]

есть в паскале такое соглашение: "к данным и методам класса, объявленным в секции private могут обращатся: 1) методы этого класса; 2) все, что находится в том же модуле (unit)".

то, что под цифрой 2), должно использоваться с очень большой осторожностью и в очень редких случаях. программисты borland это предостережение слишком часто игнорируют.

в итоге получается ситуация, когда очень сложно (а иногда и невозможно) написать своего потомка от стандартных.

например, TDBLookupListBox является потомком TDBLookupControl. оба класса описаны в одном модуле. это позволяет TDBLookupListBox обращаться к private членам своего родителя.
наш потомок от TDBLookupControl, естесственно, будет располагаться в другом модуле и private члены родителя ему не видать, как своих ушей. а нужны!

borland должен был сделать эти нужные члены protected, но у них (благодаря одному модулю) были развязаны руки и о нас они не думали.

вот это главная претенция к vcl и dbaware в частности.



paul_shmakov   (2002-03-14 16:40) [15]

но есть и другая проблема. особенно в больших системах удобно представлять архитектурные абстракции ввиде классов, а не записей в базе данных.
классы реализуются на сервере, а клиенты работают со свойствами и методами этих классов. т.е. клиенту вообще не интересно, есть ли там база данных на сервере или нет.

это нормальный и правильный подход (dcom, corba, ejb и т.д. - все о том). и хотя borland декларирует и поддержку com, corba и т.п., но ничего не делают для помощи написания клиентских приложений. контролы в клиентском приложении уже должны не с полями в бд взаимодействовать, а с атрибутами объектов. стандартных компонентов таких нет.

такую поддержку можно ввести, написав какие-либо потомки TDataSet, которые будут, например, через IDispatch получать список пропертей объекта и представлять их в виде полей для работы обычных dbaware-компонентов.
вариантов много, но стандартного от borland ничего нет :(

это еще одна претензия.



Donal_Graeme   (2002-03-14 17:14) [16]

> чем стандартнее интерфейс, тем лучше.

а кто устанавливает стандарты и что именно считать стандртом? :-)
по-моему стандарт в данном случае понятие расплывчатое. Кто к чему привык, тот то стандартом и считает.



Кулюкин Олег   (2002-03-14 17:22) [17]

2 paul_shmakov
> но есть и другая проблема. особенно в больших системах удобно представлять архитектурные абстракции ввиде классов
Точно!
Об этом я и говорил начитая тему.
Если нужно манипулировать сложными данными на клиенте, то лучше хранить эти данные в своих классах.




Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.77 MB
Время: 0.033 c
1-69901           d_oleg                2002-04-09 11:44  2002.04.22  
передача объектов из dll в вызыващщее приложение


14-69983          ссс                   2002-03-14 14:26  2002.04.22  
PHP Submit


1-69790           Lame1                 2002-04-10 12:24  2002.04.22  
Чтение записей из файла


14-69997          MBo                   2002-03-14 17:16  2002.04.22  
книга Лишнера


1-69863           erw                   2002-04-09 09:51  2002.04.22  
Запуск дефолтного почтового клиента