Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объектный подход при работе с БД, у кого какие наработки 
:(
    Опции темы
Delphist
  Дата 2.3.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Всем, привет! 
Хочется поднять дисскусию по поводу T*DataSet'a и DBGrid*. 
Текущее положение дел:
На сегодняшний состояние программистов Delphi я бы сказал плачевное, да да именно плачевное.  smile 
Это вызвано двумя проблемами.
 1) Не секрет, что IDE Delphi является интерфейсно ориентированной средой.  Генерит код
таким образом что интерфейс( формочка, кнопочки, их обработчики) увязываются с кодом данных, которые 
нужно обработать. Граммотный подход заключается в использовании системы MVC (model view controller),
которая позволяет разделить классы интерфейса и классы обработки данных. MVC широко используется
в таких средах как JBuilder, Eclipse (для языка Java, да и сама Java использует технологию MVC), также 
фундаментом крутой кросплатформенная библиотеки QT является MVC. 
 2) К Дельфи не применим подход ВСЕ ЕСТЬ ОБЪЕКТ

1 и 2 пункт кодеры на Delphi могут конечно же реализовывать сами, но многие Delphi-программеры
не используют эти подходы, а пользуются тем что навивает нам сама IDE.

К чему все я это рассказываю, для работы с БД мы часто используем готовые T*DataSet'ы (TpFibDataSet, TIBDataSet и т.п.) и готовые гриды, в итоге у нас данные завязываются за интерфейсом. У меня БОЛЬШОЙ вопрос, дорогие форумчане, поделитесь, пожалуйста, своими наработками по использованию средст которые позволяли работать с БД с использованием подхода MVC, мож есть какие-то НЕ TDataSet'ы а другие подходы.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 2.3.2009, 20:54 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



И что же ты молчишь? Продолжай.
PM MAIL   Вверх
Felan
Дата 3.3.2009, 08:12 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Цитата(Delphist @  2.3.2009,  17:37 Найти цитируемый пост)
К чему все я это рассказываю, для работы с БД мы часто используем готовые T*DataSet'ы (TpFibDataSet, TIBDataSet и т.п.) и готовые гриды, в итоге у нас данные завязываются за интерфейсом. У меня БОЛЬШОЙ вопрос, дорогие форумчане, поделитесь, пожалуйста, своими наработками по использованию средст которые позволяли работать с БД с использованием подхода MVC, мож есть какие-то НЕ TDataSet'ы а другие подходы. 

А чем тебе эти датасеты не угодили? Работают, и нормально работают, почему не пользоваться?
Причем тут MVC вообще?
Ну не хочешь их на форму кидать, понятно... Да и не правильно это. Для этого надо использовать дата модуль.
Специальный контейнер, для невизуальных компонентов. И все. И пожалуйста, далай себе все в соответствии с MVC.


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Delphist
  Дата 3.3.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Цитата(Delphist @  2.3.2009,  16:37 Найти цитируемый пост)
 мож есть какие-то НЕ TDataSet'ы а другие подходы. 

Akella, так это вопрос был smile 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 3.3.2009, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Есть, конечно. Изучай API соответствующих СУБД.

Добавлено через 38 секунд
Цитата(Delphist @  2.3.2009,  15:37 Найти цитируемый пост)
Хочется поднять дисскусию по поводу T*DataSet'a и DBGrid*. 

Ну так поднимай, в чём же дело.
PM MAIL   Вверх
Delphist
  Дата 3.3.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Цитата(Akella @  3.3.2009,  11:48 Найти цитируемый пост)
Ну так поднимай, в чём же дело.

эт зависит от форумчан. если им тема интересна, то дисскусия возникнет сама собой


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Kbl4AH
Дата 3.3.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Я мало сведущ в таких высоких сферах, но с датасетами работаю...
Delphist, у меня сложилось впечатление, что тебя не устраивают реализации готовых T*DataSet'ов...
Так какие проблемы? Бери TDataSet за основу и пиши свой TDelphistDataSet и делай в нем все так, как тебе хочется...
Может популярный коммерческий продукт сделаешь... smile 
PM MAIL ICQ   Вверх
Akella
Дата 3.3.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Kbl4AH @  3.3.2009,  11:39 Найти цитируемый пост)
Так какие проблемы? Бери TDataSet за основу и пиши свой TDelphistDataSet и делай в нем все так, как тебе хочется...

так в том то и дело, что не хочеццо ему работать через датасет
PM MAIL   Вверх
cemick
Дата 3.3.2009, 12:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Цитата(Akella @  3.3.2009,  12:34 Найти цитируемый пост)
так в том то и дело, что не хочеццо ему работать через датасет

Я так понял, что не нравится изолированность данных и отображения.. только ни как не могу понять причемс тут TDataSet и TDBGrid.

ИМХО это надуманная проблема
В сложный проектах всегда используются патерны, когда нужна масштабируемость, расширяемость, а в простых могут быть совершенно другие цели, где можно обойтись без всяких MVC

Если внимательно узучишь компоненты от DevExpress, то там как раз твой MVC и реализован. Думаю и обычный TDBGrid построен на тех же принципах(сто лет его уже не трогал). 

Это сообщение отредактировал(а) cemick - 3.3.2009, 15:12
PM MAIL WWW   Вверх
Akella
Дата 3.3.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



но в Dev тоже все на датасетах
PM MAIL   Вверх
cemick
Дата 3.3.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Цитата(Akella @  3.3.2009,  14:33 Найти цитируемый пост)
но в Dev тоже все на датасетах

Датасет выступает только как хранилище данных, в TcxGrid есть на него сслыка, а интерфейс реализуется в TcxGridView, а связывает TcxGridView и TdataSet контроллер TcxCustomDataController. То есть интерфейс ничего не знает о  дата сторадже с его заморочками, у него есть лишь набор строк которые надо отображать

Это сообщение отредактировал(а) cemick - 3.3.2009, 15:13
PM MAIL WWW   Вверх
Bose
Дата 4.3.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 9
Всего: 51



Цитата(Akella @  3.3.2009,  13:33 Найти цитируемый пост)
но в Dev тоже все на датасетах

Не понимаю, чем вам датасет не угодил.


Цитата(Delphist @  2.3.2009,  14:37 Найти цитируемый пост)
К чему все я это рассказываю, для работы с БД мы часто используем готовые T*DataSet'ы (TpFibDataSet, TIBDataSet и т.п.) и готовые гриды, в итоге у нас данные завязываются за интерфейсом. У меня БОЛЬШОЙ вопрос, дорогие форумчане, поделитесь, пожалуйста, своими наработками по использованию средст которые позволяли работать с БД с использованием подхода MVC, мож есть какие-то НЕ TDataSet'ы а другие подходы.

Типа наработка. 
Смотри на это дело так:
Dataset - модель.
Форма - View.
DataModule - контроллер.

Все датасеты - держать только на DataModule. Весь код не имеющий отношения к отображению - только на DataModule. Форма должна уметь только показывать данные, а в обработчикаъ вызывать только соответствующие методы DataModule-я.  
Вот и будет MVC.

Другое дело, что создавать прокси-классы обычно лень, вот и пишем логику прямо в форме. Да и код вроде как понятнее становится. А из минусов "обычного программирования" - для подобного кода становится очень сложно писать юнит-тесты.
PM MAIL WWW Skype   Вверх
Delphist
Дата 4.3.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Да уж, вижу что никто не пытается применять что-то особенное. Стандартная схема эт, конечно, как говориться как ВСЕ так и я. Хм.. в определенных случаях это избавляет от некоторого гемора, но существующий подход не позволяет легко реализоавть MVC.
Тему я затеял, чтобы узнать чем дышит народ. А то DataSet да DataSet мож что нового появилось, но похоже ничего...


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
vladimir74
Дата 4.3.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: 2
Всего: 3



Цитата(Delphist @  4.3.2009,  09:26 Найти цитируемый пост)
Да уж, вижу что никто не пытается применять что-то особенное. Стандартная схема эт, конечно, как говориться как ВСЕ так и я

хм.. не всегда стоит повторно изобретать велосипед. Ткм более когда задачей является станок для мотороллеров....
да и Bose, привел ИМХО практически стандартный MVC. То что им не часто пользуются, мое ИМХО это уже сработаная привычка, в малых проектах на которое отводится мало времени - это лишнии затраты, часто более код более наглядный. С большими проектами которые ведутся уже более 10 лет - тоже не будешь весь переписывать, а менять модель посередине проекта глупо, потом вообще концов не найдешь.

Да и вообще, MVC - это хорошо, но не панацея. Всегда надо смотреть на поставленную задачу.

--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
jsa
Дата 4.3.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 5
Всего: 20



Delphistпочитай, может найдешь для себя че нить интересное


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.