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

Вниз

Структура программы   Найти похожие ветки 

 
RayGun ©   (2006-02-17 21:30) [0]

Здравствуйте, уважаемые Мастера!

Согласно современным требованиям при создании более-менее крупного проекта рекомендуется придерживаться разделения структуры классов программы на графический интерфейс (GUI), бизнес-логику, уровень доступа к данным (DAL) и, при необходимости, железный уровень (HAL).
Так вот, вопрос: где провести границу между бизнес-логикой и DAL? Не противоречит ли этой идеологии обращение из GUI  непосредственно к TDataSet и его потомкам, расположенными в DataModule, или же следует использовать для этого дополнительную прослойку в виде классов бизнес-логики с методами типа GetXXX, CreateXXX и UpdateXXX (я не имею в виду формы, содержащие TDBGrid и его аналоги типа UltraGrid и т.п., для них уже как бы есть прослойка)?
Какую посоветуете литературу по правильному проектированию структуры программы?


 
API   (2006-02-17 21:37) [1]

Это смотря насколько абстрагироваться.
Для кого и TDataSet - служба данных.

Какую посоветуете литературу по правильному проектированию структуры программы?

Брандт Д., Architectures. Exam 70-100.- СПб.: Питер, 2001.- 432 с.: ил.

Но лучше - поработать пару лет в группе.
А то можно такого напроектировать...


 
Игорь Шевченко ©   (2006-02-17 21:41) [2]


> Не противоречит ли этой идеологии обращение из GUI  непосредственно
> к TDataSet и его потомкам, расположенными в DataModule


Вообще-то противоречит, но писать полный аналог data-aware controls для разрешения этого противоречия является, на мой взгляд, довольно неблагодарным занятием, так как немалый объяем работы будет потрачен на повторение уже сделанного.


> Какую посоветуете литературу по правильному проектированию
> структуры программы?


Мартин Фаулер, Архитектура корпоративных приложений, но для Delphi оттуда можно взять только часть.

В электронном виде часть материалов выложена на сайте автора
http://www.martinfowler.com на английском языке.


> (я не имею в виду формы, содержащие TDBGrid и его аналоги
> типа UltraGrid и т.п., для них уже как бы есть прослойка)


Для них тоже нет прослойки, потому что такие формы обращаются к Dataset, минуя методы объекта бизнес-логики, отсюда получается, что единой точки доступа к данным с учетом бизнес-правил не существует. кроме того, такие формы работают с данными, а не с объектами, что в общем-то тоже противоречит чистой теории.

Пример альтернативной разработки data-aware controls можно найти в
http://www.techinsite.com.au/tiOPF/Download.htm
(Object Persistent Framework)

С наилучшими,


 
RayGun ©   (2006-02-17 21:50) [3]

Большое спасибо!

В группе работал, но не на Delphi/CPP Builder, а на Visual Studio .Net (C#), там у нас использовался ADO.NET, а теперь возникла задача использовать Delphi или Builder. Вот в связи с этим и приходится разбираться с правильным построением структуры программы на Delphi/Cpp Builder, чтобы не создавать проги, написанные на ButtonClick.


 
Desdechado ©   (2006-02-17 22:41) [4]

<off>
одни бегут с дельфи на C# из-за продажи борландом, а другие мигрируют в обратном направлении
мда....
</off>



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

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

Наверх




Память: 0.46 MB
Время: 0.017 c
3-1138610374
вп
2006-01-30 11:39
2006.03.19
Инкрементальный бэкап в FireBird 2.0


11-1121750231
hunn
2005-07-19 09:17
2006.03.19
Работа с событиями в KOLEcmListEdit


2-1141327432
Purgen
2006-03-02 22:23
2006.03.19
Сервер и форма


2-1141146173
49 Cent
2006-02-28 20:02
2006.03.19
Вопрос о BDE компонентах


6-1134137180
skiermax
2005-12-09 17:06
2006.03.19
Exchange Server 2000&amp;MAPI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский