powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Data Access Layer - нужен ли он?
12 сообщений из 12, страница 1 из 1
Data Access Layer - нужен ли он?
    #33570128
rgb-dart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Речь идет об использовании объектов доступа к данным в клиент-серверном приложении (учетной системе). Система на WinForms (C#) и MSSQL Server.

1. В чем, по вашему, преимущества использования слоя доступа к данным?
2. Есть ли у вас ссылки на высказывания авторитетных специалистов по этому вопросу (книги, статьи)?
3. Считаете ли вы целесообразным рефакторинг кода наполовину написанной системы, в которой слой доступа к данным не был даже задуман? То есть, считаете ли вы, что потратив время на реализацию слоя доступа к данным для уже "вроде как готовых и работающих" компонент (модулей) можно получить выигрыш по времени за счет сокращения времени на
а) поиск и исправление дефектов в этих модулях
б) реализацию новых меняющихся требований к этим модулям

Интересует мнение опытных специалистов (каковыми, я уверен, являются большинство форумчан). =)
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33570199
steplton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рефакторинг полезен всегда. Даже не минимальный.
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33570290
Один1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, слой доступа к данным полезен. Однако, не развивая эту тему (лень :) ), хотелось бы подчеркнуть, что это не значит что нужно бросать все и переделывать готовые модули.

Я бы написал слой и новые компоненты реализовывал через него.
Изменения в старых вносил бы по мере "реализации новых меняющихся требований к этим модулям"
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33571246
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgb-dart
Если коротко, то полностью согласен с Один1 . Стоит лишь дополнить, что любую полезную идею можно применить "не там и не так".

Если чуть подробнее, то я не уверен, что Вы понимаете под Data Access Layer, поскольку этот термин употребляется в нескольких существенно разных с моей точки зрения смыслах.

Первый смысл - "интеллектуальный адаптер данных". Суть его в том, что приложение работает с данными, удобно организованными с точки зрения их смысла и использования. К примеру, справочники доступны как ассоциативные массивы, parent-child иерархии обсчитаны и собраны удобно для их представления в древовидном интерфейсе, внешние ключи замены ссылками на реферируемые объекты итп. Это безусловно удобно - если требуется в приложении. Для того, чтобы это громоздкое и сильное решение было оправданным, приложение должно осуществлять большую и сложную обработку данных; в целом это подход скорее для серверов приложений и тяжелых клиентов, но не для систем класса "ввод данных плюс отчеты".

Второй смысл - "абстрагирующий слой без претензий". Как правило идет в сочетании с идеями независимости от БД, возможности подключения нестандартных источников данных, каких-нибудь текстовых файлов, итп. Также разумная мысль, полезная при соблюдении одного условия - недовольство существующими классами. К примеру, если считать, что ADO покрывает все мыслимые требования доступа к данным - незачем реализовывать еще один класс, являющийся тупой прокладкой, proxy для вызова соответствующих методов ADO. Если нет - такая прокладка удобна и уместна, чтобы например для Oracle использовать ODP.

Наконец, самый страшный смысл - "абстрагирующий слой ради абстрагирующего слоя". Потому что где-то написано, что так нужно и вообще очень круто. Та самая тупая прокладка, занимающаяся исключительно транзитом данных без какой-либо мысли. Неплохим критерием этого варианта является желание автоматически генерировать код соответствующих классов (вообще, желание автоматически генерировать код с моей точки зрения означает одно из двух: либо убогий язык программирования, с недостаточными для задачи возможностями, либо убогую технологию).


Речь идет об использовании объектов доступа к данным в клиент-серверном приложении (учетной системе). Система на WinForms (C#) и MSSQL Server.

1. В чем, по вашему, преимущества использования слоя доступа к данным?
2. Есть ли у вас ссылки на высказывания авторитетных специалистов по этому вопросу (книги, статьи)?
3. Считаете ли вы целесообразным рефакторинг кода наполовину написанной системы, в которой слой доступа к данным не был даже задуман? То есть, считаете ли вы, что потратив время на реализацию слоя доступа к данным для уже "вроде как готовых и работающих" компонент (модулей) можно получить выигрыш по времени за счет сокращения времени на
а) поиск и исправление дефектов в этих модулях
б) реализацию новых меняющихся требований к этим модулям

Интересует мнение опытных специалистов (каковыми, я уверен, являются большинство форумчан). =)[/quot]
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33571817
rgb-dart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer

авторК примеру, если считать, что ADO покрывает все мыслимые требования доступа к данным - незачем реализовывать еще один класс, являющийся тупой прокладкой, proxy для вызова соответствующих методов ADO
Не согласен. Представьте, что у вас обращения к базе идут прямо с форм. Прямо в обработчиках всяких событий от GUI. Не страшно? А если всю логику обращения к БД вынести в отдельные классы и из GUI обращаться к методам этих объектов для полкчения и модификации данных, то это уже не так страшно. При этом вызовы будут иметь какое-то осмысленное название OrderListDB.GetOrders, OrderListDB.UpdateOrder(...) и т.д. вместо многострочных конструкций по созданию sqlcomand, заполнению их параметров и т.п. (здесь OrderListDB - объект доступа к данным, который просто "тупо" выполняет запросы к базе).

Смысл в том, что форма не должна знать ничего про какие-то sql-запросы... она должна отображать данные и говорить кому-то - как их пользователь хочет изменить. Кому-то = объекту доступа к данным или бизнес-объекту если система сложная.

2 steplton
Я с тем же успехом могу сказать "Рефакторинг полезен НЕ всегда. Даже минимальный". И? Аргументы? Ссылки на авторитетные источники?

2 Один1
авторЯ бы написал слой и новые компоненты реализовывал через него.
Изменения в старых вносил бы по мере "реализации новых меняющихся требований к этим модулям"
Именно это я и делаю. =) Но обосновывать необходимость такого подхода приходится с трудом.
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33571880
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgb-dartЯ с тем же успехом могу сказать "Рефакторинг полезен НЕ всегда. Даже минимальный". И? Аргументы? Ссылки на авторитетные источники?

А кто у Вас сегодня в авторитетах ходит? :)
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33574361
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgb-dartНе согласен. Представьте, что у вас обращения к базе идут прямо с форм.......
Я упомянул, что понятие DAL имеет существенно разные трактовки, разные смыслы - и естественно, я назвал только направления, в то время как в реальных проектах часто оказываются реализованными те или иные компромиссы между этими подходами.

Вы описываете то, что довольно близко к названному мной первому смыслу. Нисколько не возражаю и сам же упомянул; нормальный для своей ситуации подход. Но! Вы возражаете на то, что я сказал о другом подходе, номер два в моей трактовке. Это другой подход со своими плюсами и минусами. Подумайте над смыслом Вашей фразы: "Я полагаю, что названное softwarer-ом условие применимости метода2 неверно, потому что я предпочитаю метод1". Странновато звучит, правда?

Теперь по поводу "страшно". Может быть страшно, может быть нестрашно. Зависит от задачи и самое главное - от программиста. Сами по себе технологии - не хороши и не плохи; это просто некоторое обобщение опыта хороших программистов; опыта, который можно вдумчиво применить и который куда чаще применяется тупо и неправильно. DAO здесь - не исключение.

Могу сказать так. У меня был проект, в котором заказчик настоял на использовании объектного слоя и по итогам этого проекта я так и не увидел, чтобы этот проект получил с него что-то кроме увеличения времени разработки. У меня сейчас идет проект, который без объектного слоя просто загнулся бы. Все зависит от конкретного случая.
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33577309
steplton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgb-dart
2 steplton
Я с тем же успехом могу сказать "Рефакторинг полезен НЕ всегда. Даже минимальный". И? Аргументы? Ссылки на авторитетные источники?


Жизнь и практика лучший источник.

Рефакторинг по сути, улучшение кода, понимаемости программы.
Инициатором рефакторинго являетесь ВЫ. Интуитивно чувствуете что программа становится
слишком замудренной, что становиться неудобно (или даже неприятно)
с ней работать, используйте рефакторинг.

Если не чувствуете, пока устаивает - не используйте рефакторинг. Все просто. :)
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33580606
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Безопасность можно делать и не в клиенте, только небольшие коррекции...
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33587474
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе согласен. Представьте, что у вас обращения к базе идут прямо с форм. Прямо в обработчиках всяких событий от GUI. Не страшно? А если всю логику обращения к БД вынести в отдельные классы и из GUI обращаться к методам этих объектов для полкчения и модификации данных, то это уже не так страшно.
....
Смысл в том, что форма не должна знать ничего про какие-то sql-запросы... она должна отображать данные и говорить кому-то - как их пользователь хочет изменить. Кому-то = объекту доступа к данным или бизнес-объекту если система сложная
Самое интересное, что я не увидел здесь ни одного аргумента в пользу DAL. Страшно-не страшно... Почему так вам страшно, а эдак нет, непонятно. Аргументами могут быть - эффективность (как разработки, так и работы), расширяемость и пр.

ИМХО, я один раз только встречал систему, где вынесение доступа к БД было оправдано - т.к. там доступ мог осуществляться как из GUI, так и в режиме робота.

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33590588
rgb-dart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aag авторНе согласен. Представьте, что у вас обращения к базе идут прямо с форм. Прямо в обработчиках всяких событий от GUI. Не страшно? А если всю логику обращения к БД вынести в отдельные классы и из GUI обращаться к методам этих объектов для полкчения и модификации данных, то это уже не так страшно.
....
Смысл в том, что форма не должна знать ничего про какие-то sql-запросы... она должна отображать данные и говорить кому-то - как их пользователь хочет изменить. Кому-то = объекту доступа к данным или бизнес-объекту если система сложная
Самое интересное, что я не увидел здесь ни одного аргумента в пользу DAL. Страшно-не страшно... Почему так вам страшно, а эдак нет, непонятно. Аргументами могут быть - эффективность (как разработки, так и работы), расширяемость и пр.

ИМХО, я один раз только встречал систему, где вынесение доступа к БД было оправдано - т.к. там доступ мог осуществляться как из GUI, так и в режиме робота.

Nobody faults but mine... (LZ)

В случае если придется переделывать GUI, вам будет легче это сделать, если логика получения данных вынесена в отдельные классы а не находится на форме. "Страшным" я называю код, который сложно модифицировать (поддерживать). Опять-таки, если у вас несколько форм получают данные из одних и тех же таблиц - зачем дублировать код на каждой форме, когда можно сделать метод в DAL-слое, который будет обслуживать обе формы? Мне продолжать?...
...
Рейтинг: 0 / 0
Data Access Layer - нужен ли он?
    #33590994
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgb-dartВ случае если придется переделывать GUI, вам будет легче это сделать, если логика получения данных вынесена в отдельные классы а не находится на форме.
К сожалению, не факт. Я до сих пор вспоминаю одну систему, в исходниках которой мне довелось порыться, написанную в парадигме "все на сервере". В результате на сервере оказались хранимки, суть которых была теснейше привязана к интерфейсу (практически подготовка данных в удобном для интерфейса виде), и в результате для модификации интерфейса (что собственно меня попросили сделать) пришлось лезть еще и дорабатывать хранимки.

Повторюсь: вопрос в программисте. Плохой программист, формально соблюдая самые хорошие принципы, напишет черт знает что; хороший программист, не думая ни о каких формальных теориях, напишет хорошо, в том числе с точки зрения этих самых теорий.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Data Access Layer - нужен ли он?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]