Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

Как модель предметной области совместить с гридом?   Найти похожие ветки 

 
by ©   (2004-11-18 14:02) [0]

Есть модель предметной области, есть классы. Класс который представляет одну сущность через маппер отражается на базе данных.
Например:
Класс                                                БД
TBank.MFO                                        BANK.MFO
                              OR Mapper    
TBank.Name                                       BANK.NAME
С эти примерно все понятно.
А как поступать с классами типа TBankList - которые представляют набор записей БД. Как это реализовать, чтобы использовать возможности гридов?


 
clickmaker ©   (2004-11-18 14:05) [1]


> Как модель предметной области совместить с гридом?

через DataSet и DataSource


 
Игорь Шевченко ©   (2004-11-18 14:07) [2]


> Как это реализовать, чтобы использовать возможности гридов?


Могу посоветовать завести промежуточный DataSet, например, ClientDataSet, настроить Grid на него, и заполнять этот DataSet элементами коллекции (с обратным преобразованием, разумеется)


 
by ©   (2004-11-18 14:14) [3]

[2] Игорь Шевченко ©   (18.11.04 14:07)
Т.е. сначала данные из БД загружаются в объект, объекты формируют коллекцию, а коллекция заполняет Grid?
Но если объектов много (например 5-10 тыс и более), то не загнется ли все это? Как быть в случаях если объектов много?


 
Игорь Шевченко ©   (2004-11-18 14:19) [4]

by ©   (18.11.04 14:14) [3]


> Как быть в случаях если объектов много?


Ограничивать выборку, разумеется. Какой смысл помещать в Grid 5-10 тысяч записей ?


 
Суслик ©   (2004-11-18 14:24) [5]

А можно сначала попробовать - может и с 5-10 тыс нормально работать будет.
Тогда и делать ничего не надо.


 
Суслик ©   (2004-11-18 14:33) [6]

Вот еще мое имхо...

Решение сильно зависит от задачи. Если у тебя толстенный клиент, то гнать на него нужно то, что в зависимости от бизнес-процессов может понадобиться одновременно.


 
Суслик ©   (2004-11-18 14:32) [7]

Вот еще мое имхо...

Решение сильно зависит от задачи. Если у тебя толстенный клиент, то гнать на него нужно то, что в зависимости от бизнес-процессов может понадобиться одновременно.


 
by ©   (2004-11-18 15:36) [8]

Есть задача:
Есть набор данных, список звонков абонентов, 3 млн. записей. Нужно по каждому звонку расчитать его стоимость, основываясь на данных абонента.
Если не городить трехзвенки, то есть два варианта:
1) попробовать засунуть логику и расчет в хранимую процедуру на сервере БД. Плюсы: близость к данным, нет лишнего трафика. Минусы: на сервере БД не все можно сделать, размазывается логика между клиентом и БД
2) Выбираем записи, формируем коллекцию объектов (а память где брать?), осуществляем расчеты и пишем объекты в БД

Кто как относится к этим методам? Или есть еще третий, четвертый?


 
clickmaker ©   (2004-11-18 15:38) [9]


>  [8] by ©   (18.11.04 15:36)

а что есть такого в расчете стоимости, чего нельзя сделать на сервере БД?


 
by ©   (2004-11-18 15:41) [10]

[9] clickmaker ©   (18.11.04 15:38)
Согласен, можно сделать практически все. Разве что кроме отображения прогресса выполнения )
Но как быть с размазыванием логики? Все выполнять на сервере?
Но тогда в чем выиграш от использования объектов если вся логика в БД?


 
Игорь Шевченко ©   (2004-11-18 15:42) [11]

by ©   (18.11.04 15:36) [8]

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


 
clickmaker ©   (2004-11-18 15:45) [12]


> [10] by ©   (18.11.04 15:41)
> [9] clickmaker ©   (18.11.04 15:38)
> Разве что кроме отображения прогресса выполнения )

Если поднапрячься, то и это можно. Через extended-хранилки и оповещение клиентов. Только стоит ли игра свеч.
В общем, согласен с [11]


 
by ©   (2004-11-18 15:47) [13]

[11] Игорь Шевченко ©   (18.11.04 15:42)
[12] clickmaker ©   (18.11.04 15:45)

Т.е. зашиваем всю логику в БД, а клиент служит только для ввода данных и их представления через вызовы соответствующих хранимок?


 
clickmaker ©   (2004-11-18 15:52) [14]


>  [13] by ©   (18.11.04 15:47)

Ну я бы задачу ставил так: если для обработки данных не нужно их присутствие на клиенте и саму обработку можно организовать средствами сервера БД, то на клиент данные тянуть нет смысла.
Т.е. обсчитал то что нужно, потом с клиента параметрический запрос, чтоб урезать выборку - и смотри скока влезет


 
by ©   (2004-11-18 15:59) [15]

[2] Игорь Шевченко ©   (18.11.04 14:07)

> Как это реализовать, чтобы использовать возможности гридов?
Могу посоветовать завести промежуточный DataSet, например, ClientDataSet, настроить Grid на него, и заполнять этот DataSet элементами коллекции (с обратным преобразованием, разумеется)


А кто нибудь встречал реализацию подобного ввиде статьи в инете или чего либо в электронном виде? Или в какой-то книге (кроме Архитектуры Фаулера, её читаю)


 
Суслик ©   (2004-11-18 16:17) [16]

я тоже за первый варинат, т.е. на сервере.
у билинга свои требования, в первую очередь скорость.


 
by ©   (2004-11-18 16:23) [17]

[16] Суслик ©   (18.11.04 16:17)
А если откинуть то что это биллинг? то тоже лучше все на сервере?
А в каких случаях лучше отказаться от логики на сервере?


 
clickmaker ©   (2004-11-18 16:28) [18]


> А в каких случаях лучше отказаться от логики на сервере?

только если ее не реализовать средствами sql. Но на этот счет как раз и есть трехзвенка.
Вообще, дешевле увеличивать мощность одного сервера, чем всех клиентских тачек. Кроме того, обновление и поддержка системы упрощаются.


 
Игорь Шевченко ©   (2004-11-18 16:35) [19]

by ©   (18.11.04 15:59) [15]


> А кто нибудь встречал реализацию подобного ввиде статьи
> в инете или чего либо в электронном виде?


У Фаулера может быть, точно сказать не могу. Я делал подобную реализацию для отображения объекта (одного) с подчиненными коллекциями (разумеется, количество элементов коллекций было разумным) еще до того, как ознакомился с упоминаемой книгой Фаулера.


 
DiamondShark ©   (2004-11-18 16:43) [20]


> А в каких случаях лучше отказаться от логики на сервере?

Ни в каких, кроме контроля ввода от пользователя.



Страницы: 1 вся ветка

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

Наверх




Память: 0.5 MB
Время: 0.052 c
14-1100646539
Andy BitOff
2004-11-17 02:08
2004.12.05
Что с этим можно сделать?


9-1091703136
pavel_pavel
2004-08-05 14:52
2004.12.05
TBitmap побыстрее


1-1101285570
Erik1
2004-11-24 11:39
2004.12.05
Перекрытие невиртуальный процедуры?


1-1101079371
TechnoDreamer
2004-11-22 02:22
2004.12.05
Удаление ветки с дочерними элементами TTreeView


6-1096368986
Луарвик
2004-09-28 14:56
2004.12.05
TidHTTP.Request: как юзать ContentRangeStart и ContentRangeEnd





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский