![]() |
|
|
![]()
|
|
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 1 Всего: 3 |
Всем, привет!
Хочется поднять дисскусию по поводу T*DataSet'a и DBGrid*. Текущее положение дел: На сегодняшний состояние программистов Delphi я бы сказал плачевное, да да именно плачевное. Это вызвано двумя проблемами. 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-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
И что же ты молчишь? Продолжай.
|
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
А чем тебе эти датасеты не угодили? Работают, и нормально работают, почему не пользоваться? Причем тут MVC вообще? Ну не хочешь их на форму кидать, понятно... Да и не правильно это. Для этого надо использовать дата модуль. Специальный контейнер, для невизуальных компонентов. И все. И пожалуйста, далай себе все в соответствии с MVC. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 1 Всего: 3 |
Akella, так это вопрос был -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 1 Всего: 3 |
эт зависит от форумчан. если им тема интересна, то дисскусия возникнет сама собой -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
Я мало сведущ в таких высоких сферах, но с датасетами работаю...
Delphist, у меня сложилось впечатление, что тебя не устраивают реализации готовых T*DataSet'ов... Так какие проблемы? Бери TDataSet за основу и пиши свой TDelphistDataSet и делай в нем все так, как тебе хочется... Может популярный коммерческий продукт сделаешь... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
| cemick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 6 |
Я так понял, что не нравится изолированность данных и отображения.. только ни как не могу понять причемс тут TDataSet и TDBGrid. ИМХО это надуманная проблема В сложный проектах всегда используются патерны, когда нужна масштабируемость, расширяемость, а в простых могут быть совершенно другие цели, где можно обойтись без всяких MVC Если внимательно узучишь компоненты от DevExpress, то там как раз твой MVC и реализован. Думаю и обычный TDBGrid построен на тех же принципах(сто лет его уже не трогал). Это сообщение отредактировал(а) cemick - 3.3.2009, 15:12 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
но в Dev тоже все на датасетах
|
|||
|
||||
| cemick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 6 |
Датасет выступает только как хранилище данных, в TcxGrid есть на него сслыка, а интерфейс реализуется в TcxGridView, а связывает TcxGridView и TdataSet контроллер TcxCustomDataController. То есть интерфейс ничего не знает о дата сторадже с его заморочками, у него есть лишь набор строк которые надо отображать Это сообщение отредактировал(а) cemick - 3.3.2009, 15:13 |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
Не понимаю, чем вам датасет не угодил. Типа наработка. Смотри на это дело так: Dataset - модель. Форма - View. DataModule - контроллер. Все датасеты - держать только на DataModule. Весь код не имеющий отношения к отображению - только на DataModule. Форма должна уметь только показывать данные, а в обработчикаъ вызывать только соответствующие методы DataModule-я. Вот и будет MVC. Другое дело, что создавать прокси-классы обычно лень, вот и пишем логику прямо в форме. Да и код вроде как понятнее становится. А из минусов "обычного программирования" - для подобного кода становится очень сложно писать юнит-тесты. |
|||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 1 Всего: 3 |
Да уж, вижу что никто не пытается применять что-то особенное. Стандартная схема эт, конечно, как говориться как ВСЕ так и я. Хм.. в определенных случаях это избавляет от некоторого гемора, но существующий подход не позволяет легко реализоавть MVC.
Тему я затеял, чтобы узнать чем дышит народ. А то DataSet да DataSet мож что нового появилось, но похоже ничего... -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| vladimir74 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 28.11.2006 Репутация: 2 Всего: 3 |
хм.. не всегда стоит повторно изобретать велосипед. Ткм более когда задачей является станок для мотороллеров.... да и Bose, привел ИМХО практически стандартный MVC. То что им не часто пользуются, мое ИМХО это уже сработаная привычка, в малых проектах на которое отводится мало времени - это лишнии затраты, часто более код более наглядный. С большими проектами которые ведутся уже более 10 лет - тоже не будешь весь переписывать, а менять модель посередине проекта глупо, потом вообще концов не найдешь. Да и вообще, MVC - это хорошо, но не панацея. Всегда надо смотреть на поставленную задачу. --------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ. |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 5 Всего: 20 |
Delphist, почитай, может найдешь для себя че нить интересное
-------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |