Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 12:27 25.06.24 
Клубове/ Компютри и Интернет / Delphi Пълен преглед*
Информация за клуба
Тема Re: Относно наследника на TDataSet [re: andrew_nikoloff]
Автор asy777 (непознат )
Публикувано02.03.06 13:45  



Първо благодаря за отговора.

Значи, нещата са много дълги и сложни и заплетени, и предполагам, че ще отегча хората...

Първо аз излъгах малко (за да не обяснявам на дълго и широко), за TIBDataSet. Всъщност тоя Wrapper class ми е необходим само за да мога по лесно да ползвам DB aware контроли. Ако TDataSource беше направен така че да може да се наследи щях да ползвам него но уви... Т.е. идеята ми (от която вече се отказах) беше wrapper-а да си взима данните от каквото и да е (не непременно от друг TDataSet)...

Системата е нещо като ERP. Имам ApplicationServer който не се връзва директно към Database а между тях има оше един layer който аз наричам Storage (TStorage да речем). AppServer-a очаква TStorage, или наследник на TStorage от който да взима данните (по установен протокол - серия от методи и т.н.). Самият TStorage не е много ясно от къде взима данните - той е базов абстрактен клас, неговите наследници взимат данни от някъде [TextFile..SQLServer]. Причината да ползвам междинен layer между AppSrv и DB е че системата не трябва да зависи от Phisical Storage или от точно определен вид бази данни. Пример: мода да имам TIBStorage, TMSSQLServerStorage, TOracleStorate, TMySQLStorage, TXMLStorage, TCSVStorage и т.н... Конкретния Storage стои в .bpl (package) и се зарежда според конфигурацията. TStorage има възможността да записва обекти "директно" (обектите който ползва AppServer) и разни други неща.

Пример за Storage:
-----------------------------------
TStorage = class;
TSQLStorage = class(TStorage);
TFIBStorage = class(TSQLStorage);
TFIBPlusStorage = class(TFIBStorage);

TStorage (Знае как да записва обектите) <
< TSQLStorage (добавя функционанност за запис в ANSI99 SQL Server) <
< TFIBStorage (съобразен със спецификите при Interbase,Firebird) <
< TFIBPlusStorage (конкретна имплементация с помоща на FIBPlus компонентите);
-----------------------------------

"API"-то на TStorage наподобява DBVCL в много отношения, но и в много се различава. Щеше ми се (понеже съм мързелив) да направя наследник на TDataSet към който да връзвам DB контроли, а той да си взима данните от Storage-a, но се отказах защото разликите се оказаха повече от приликите. Например навигацията при TDataSet (или изобщо при базите данни) запис напред, запис назад (first,next,prior...) не се връзва с навигацията в моята система (която е по скоро като да се разхождаш по "дърво")... абе беше доста тъпа идея. После мислех за TDataSetProvider което пак се оказа тъпа идея. И сега правя нещо като DataSource който да взима данни от Storage и да ги слага във визуални контроли. Нещо като mapper, binder...

Това е много накратко казано, но ме мързи да пиша защото е много (особено за сървъра, клиентите, връзката между тях и т.н.)

Това което казваш, че да правиш такива неща при обектно ориантираното програмиране е "анатема" е абсолюто вярно. Аз обаче понякога го правя с цел оптимизация или ако класа(овете) от които наследявам не са измеслени много добре (или поне на мен не ми се връзват с идеологията). Има и нещо друго - мързел:)



Цялата тема
ТемаАвторПубликувано
* Help!!! Open Array parameters asy777   21.02.06 16:58
. * Re: Help!!! Open Array parameters andrew_nikoloff   21.02.06 17:42
. * Re: Help!!! Open Array parameters eмил   22.02.06 11:05
. * Re: Help!!! Open Array parameters asy777   23.02.06 15:07
. * Re: Help!!! Open Array parameters EFEX   23.02.06 15:46
. * Re: Help!!! Open Array parameters asy777   23.02.06 17:19
. * Re: Help!!! Open Array parameters eмил   23.02.06 16:44
. * Re: Help!!! Open Array parameters asy777   23.02.06 17:37
. * Относно наследника на TDataSet andrew_nikoloff   23.02.06 20:48
. * Re: Относно наследника на TDataSet asy777   02.03.06 13:45
. * Ами освен... andrew_nikoloff   02.03.06 14:27
. * Re: Help!!! Open Array parameters eмил   24.02.06 10:05
. * нещо като TClientDataSet Йopдaн   24.02.06 13:39
. * Re: нещо като TClientDataSet Pechenia   02.03.06 20:35
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.