powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
25 сообщений из 27, страница 1 из 2
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441267
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет
Есть стандартный подход при проектировании приложений при котором между представлением данных и самими данными лежат два уровня - уровень доступа к данным, где происходит непосредственное обращение к БД, и бизнес-уровень, где эти данные как-то обрабатываются.
Предположим, что нажатие какой-то кнопки на форме приводит к нескольким вызовам БД-процедур. Поскольку вызываются они гарантировано пачкой то есть смысл (настоятельно) все процедуры выполнять в рамках одного открытого БД-подключения. В этом и вопрос - где открывать подключение? Если делать это на уровне данных то там должна быть отдельная процедура, которая только устанавливает подключение и в рамках его выполняет набор процедур. Если при этом есть промежуточные расчёты то их придётся делать здесь же, а это уже вынос бизнес-уровня на уровень доступа к данным.

С другой стороны, если вызов процедур делать на бизнес-уровне то и БД-подключение надо разворачивать там, а это уже вынос уровня доступа к данным на бизнес-уровень.

Если же выполнять каждую процедуру в рамках отдельного подключения - то есть каждая будет открывать и закрывать БД-подключение то это трата ресурсов.

Есть ли какой-то рациональный подход для решения такой проблемы?
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441269
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortis, какие такие ресурсы будут тратиться? Соединение будт открыто и отправлено в пул.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441278
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, каждая процедура выполняется внутри блока using (на C#), при выходе из блока соединение будет закрыто.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441282
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisЕсть ли какой-то рациональный подход для решения такой проблемы?
Конечно - не устраивать подобного цирка. Вызов пачки процедур одна за другой плох хотя бы тем, что для каждой по отдельности выполняется полный набор сетевых действий и ожиданий, это примерно то же самое, что после каждого урока в школе отправляться домой и тут же назад, на следующий. Ещё смешнее, если между этими процедурами должны передаваться данные, скажем, какой-нибудь гигабайтный lob, который будет ездить туда-сюда-туда-сюда-туда-сюда.

Если при нажатии на кнопку нужно выполнить несколько хранимых процедур - в Оракле лично я выполню их в анонимном блоке. За одно обращение к серверу. В MSSQL, насколько я понимаю, для той же цели можно использовать батчи. Уверен, и в других СУБД найдётся вменяемый способ действий. В крайнем случае, никто не мешает создать техническую хранимку, содержащую эти несколько вызовов, и вызывать её.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441296
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisskyANA, каждая процедура выполняется внутри блока using (на C#), при выходе из блока соединение будет закрыто.
Физически оно не будет закрыто, а возвращено в пул.
Читайте: https://msdn.microsoft.com/ru-ru/library/8xx3tyca(v=vs.110).aspx
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441323
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> С другой стороны, если вызов процедур делать на бизнес-уровне то и БД-подключение надо разворачивать там, а это уже вынос уровня доступа к данным на бизнес-уровень.

Сделай абстракцию "транзакция" на бизнес-уровне, оборачивай в неё все действия, и передавай её на уровень данных. На уровне данных переводи транзакцию бизнес-уровня в транзакцию БД.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441406
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortis,
разделение по уровням - не означает, что нижний уровень нельзя использовать на верхнем.
делаете контекст: интерфейс, его использовать в бизнес слое + реализация в слое доступа к данным

в контексте будет потенциальное подключение, транзакции и единая точка входа, чтобы выполнить sql запрос/команду/хранимку. там же можно управлять подключением - когда его открыть, когда закрыть и транзакциями

можете глянуть UnitOfWork для примера или можете использовать ORM, так контекст уже сделан за вас и есть методы для вызова нативного sql или хранимки

подключение можно держать открытым в рамках запроса, пользовательской сессии, сессии приложения. по умолчанию лучше использовать в рамках запроса, другие способы только после аргументов, что они действительно нужны
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441651
rigor mortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerrigorMortisЕсть ли какой-то рациональный подход для решения такой проблемы?
Конечно - не устраивать подобного цирка. Вызов пачки процедур одна за другой плох хотя бы тем, что для каждой по отдельности выполняется полный набор сетевых действий и ожиданий, это примерно то же самое, что после каждого урока в школе отправляться домой и тут же назад, на следующий. Ещё смешнее, если между этими процедурами должны передаваться данные, скажем, какой-нибудь гигабайтный lob, который будет ездить туда-сюда-туда-сюда-туда-сюда.

Если при нажатии на кнопку нужно выполнить несколько хранимых процедур - в Оракле лично я выполню их в анонимном блоке. За одно обращение к серверу. В MSSQL, насколько я понимаю, для той же цели можно использовать батчи. Уверен, и в других СУБД найдётся вменяемый способ действий. В крайнем случае, никто не мешает создать техническую хранимку, содержащую эти несколько вызовов, и вызывать её.

А если нужно одну и ту же процедуру выполнить несколько раз в цикле?
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441672
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigor mortisА если нужно одну и ту же процедуру выполнить несколько раз в цикле?
А кто мешает написать в анонимном блоке цикл?

P.S. Хотя странное желание, если честно. Подозреваю, если копнуть - выяснится, что это ещё и процедура типа INSERT_ONE_ROW
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441721
rigor mortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerrigor mortisА если нужно одну и ту же процедуру выполнить несколько раз в цикле?
А кто мешает написать в анонимном блоке цикл?

А параметры как передать при каждой итерации?
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39441722
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigor mortissoftwarerА кто мешает написать в анонимном блоке цикл?

А параметры как передать при каждой итерации?
Специально предназначенным для этого способом, о котором можно прочитать в документации по СУБД. Ищите по словам типа bulk dml, array insert, array binding итп.

P.S. Вот говорил же, говорил же, что это будет INSERT_ONE_ROW + не_хочу_читать_доку :)
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39442673
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisПоскольку вызываются они гарантировано пачкой то есть смысл (настоятельно) все процедуры выполнять в рамках одного открытого БД-подключения. В этом и вопрос - где открывать подключение?
Вот все подобные вопросы давно и много раз решены и решение воплощено в системах под названием "сервер приложений". Потому что каждый умник рано или поздно начинает понимать - одинаковые алгоритмы нужно не писать миллион раз повторно, а написать один раз и потом просто дёргать. Вот так и получился сервер приложений.

Но пока начинающие умники осознают глубину своего падения - иногда могут пройти десятилетия.

Правда нужно признать, что со стороны разработчиков серверов приложений усилия по разъяснению сути своего творения рассматриваются примерно так же, как умники рассматривают сервер приложений. То есть миры не пересекаются. Ну да такова селява.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39442684
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555То есть миры не пересекаются
))
Именно. Есть 3-х звенки и 2-х звенки.
В обоих делится на слои и оба варианта успешно работают.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39442688
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Вот все подобные вопросы давно и много раз решены и решение воплощено в системах под названием "сервер приложений".
Какой блестящий пример подхода "Чукча не читатель".
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39442799
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisЕсть ли какой-то рациональный подход для решения такой проблемы?


Чёт не увидел никакой проблемы. Фантомные боли?

Стандартного подхода нет.
Общий совет: делай то, что тебе понятно и то, что по силам.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39442881
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Есть 3-х звенки и 2-х звенки.
В обоих делится на слои и оба варианта успешно работают.
И арифмометры "Феликс" до сих пор кое где работают. И даже кто-то назовёт такую работу успешной.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39443069
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555И даже кто-то назовёт такую работу успешной.
если эти кто-то 30% экспертов, то это Успешно.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39443257
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123если эти кто-то 30% экспертов, то это Успешно.
Современные программисты в массе своей бессистемные самообразованцы. Подобные типы людей, безусловно, склонны считать себя экспертами во всём на свете, ведь смогли же они выучить бэйсик! А раз на басике разумеют, значит всё остальное точно так же выучить способны. Но вот отличие между "способны" и "уже выучили" они чаще всего не понимают. Отсюда заявочки про "экспертизу" от почитавших популярные статьи про ассемблер. То есть люди путают потенциальную доступность знаний с реальным их наличием. А реальное наличие включает очень глубокую и качественную систематизацию. Но разве кто-то сегодня вспомнит хотя бы отрывки из курса "компиляторы"? А подавляющее большинство этот курс, естественно, даже не проходило.

Общество потребителей умеет быстро изучить характеристики товара и понять, зачем эти характеристики нужны, но вот понять, а зачем им нужен сам товар атомы из нынешнего общества не способны. Ну ладно - чаще всего не способны, а то-ж все сразу обидятся, но вот увидев возможность попасть в категорию "исключение", все сразу с ухмылкой закивают, предполагая, что исключение здесь именно они. Но на самом деле мир сложен, а люди слабы.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39443264
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555,
мы уходим от конкретики в флейм
Странные мысли о 3-звенном приложении
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39443612
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123мы уходим от конкретики в флейм

Да не, я не со зла :)
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39443646
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Современные программисты в массе своей бессистемные самообразованцы. Подобные типы людей, безусловно, склонны считать себя экспертами во всём на свете, ведь смогли же они выучить бэйсик!
Современные... и Бейсик )))))
Надо же... Ну хотя бы PHP написали ))))
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39443676
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Да не, я не со зла :)
да и я тоже).
Просто ваш спич походит на жалобы пенсонера что молодёжь счас не та пошла.
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39444222
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Просто ваш спич походит на жалобы пенсонера что молодёжь счас не та пошла.
А разве та? Вон постом выше меня упрекают, что даже про бэйсик-то они на самом деле не знают :)
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39444324
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Petro123Просто ваш спич походит на жалобы пенсонера что молодёжь счас не та пошла.
А разве та? Вон постом выше меня упрекают, что даже про бэйсик-то они на самом деле не знают :)
А нарисуйте-ка логическую сентенцию того, что из поста выше Вы вывели :)
...
Рейтинг: 0 / 0
Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
    #39444885
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА нарисуйте-ка логическую сентенцию того, что из поста выше Вы вывели :)
Ваши определения дают безграничный простор для моих сентенций. Поэтому оставляю вам возможность выбора любой сентенции по на ваш вкус :)
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Архитектура приложения представление - бизнес уровень - уровень доступа к данным - данные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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