powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Необычная организация бизнес-логики приложения
52 сообщений из 52, показаны все 3 страниц
Необычная организация бизнес-логики приложения
    #37587459
donkey80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,
Какое-то время назад пришла в голову следующая (немного странная) мысль по организации логики приложения.
Для начала, приведу мое видение "классической" логики работы не слишком сложного приложения (3х звенка, но не суть важно):
Данные хранятся в БД, есть сервер приложений, пользователь. В принципе, все действия пользователя сводятся так или иначе к чтению/записи различных данных в БД. В простейшем случае это просто какое-то действие над одной строкой данных в одной таблице (чистые CRUD-операции) + простейшая валидация. Более сложный случай затрагивает чтение данных из других таблиц и их изменение по определенным правилам (правила реализованы или на сервере приложений, или в БД). Чтение данных также сводится к чтению каких-то данных, хранимых в БД, плюс, возможно, вычисляемых "на лету" данных.

Очевидный минус такого подхода данные относительно просто могут быть испорчены (под этим я понимаю их _несогласованное_ состояние, а не неосторожное, но _допустимое_ действие). Правила бизнес-логики очень легко обойти если они реализованы на сервере приложений (просто выполнив прямой запрос к БД), чуть сложнее, если логика реализована в БД (даже если она построена на триггерах, полностью защитить данные можно только навесив триггеры на все таблицы - такое бывает редко).
Второй минус - если правила бизнес-логики меняются, старые данные оказываются также испорчены (с точки зрения новой логики они неправильные) - приходится применять к существующим данным какие-то скрипты и т.п.

Мне пришла в голову мысль о том, что всю логику можно было бы поместить в некий постоянно выполняющийся процесс (не будем вдаваться в подробности), который:
1) Мониторит все изменения данных (где-то ведется свой лог транзакций) и в случае необходимости применяет к ним бизнес-правила.
2) Может быть запущен в режиме проверки всех данных вообще.
Соответственно, клиентская система (по отношению к данным) оказывается ограничена только CRUD-операциями + простейшей валидацией (последняя также опционально может выполняться в процессе). Возможно даже, что клиентская система просто пишет некоторые "транзакции" в лог, а не в саму БД, а процесс их исполняет. Чтение данных происходит напрямую из БД.

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

Попробовал поискать инфу о таком подходе в Инете - не нашел... Хотел бы услышать мнение здешних людей по такому подходу ну и если кто-то где-то читал об этом - кинуть ссылочку.

P.S.: Конечно, такой подход скорее всего неприменим для многих систем; также, я не могу сказать, что я досконально продумал его. В связи с этим прошу не заострять внимание на технических аспектах, а высказываться по поводу самой идеи.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37587655
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы говорите об обычной логике построения наверное большинства бизнес приложений. Всегда разделяется введенный "мусор", удовлетворяющий только простейшим правилам валидации, и учтенные (проведенные) данные.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37588298
donkey80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm,
Нет, тут смысл в том, что кроме явного "мусора", который отбрасывается сразу, все остальное выполняется неким фоновым процессом, в рамках всей системы (процесс не создается в ответ на действие пользователя, т.е. это не какой-то временный процесс или поток).
Обычно же вся логика отрабатывает сразу.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37588434
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все остальное выполняется неким фоновым процессом, в рамках всей системыНасколько мне известно, такое можно настроить в САПе.
Мысль не странная и отнюдь не новая.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37588513
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donkey80,

Логика пишется в приложении. Ну по крайней мере у нормальных людей. И ничего страшного в этом нет. Меняются условия - выходит обновление приложения. Тот же SAP как один из лидеров (по стабильности) учетного ПО построен по этому принципу. Более того в европе изменение закона по бизнесу вступает в силу только после переделок в SAP, т.е. конечный пользователь получит уже все что нужно.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37588549
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все придумано до нас. Есть cqrs, event sourcing, еtc
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37588876
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donkey80iscrafm,
Нет, тут смысл в том, что кроме явного "мусора", который отбрасывается сразу, все остальное выполняется неким фоновым процессом, в рамках всей системы (процесс не создается в ответ на действие пользователя, т.е. это не какой-то временный процесс или поток).
Обычно же вся логика отрабатывает сразу.
это уже нюансы реализации. Есть в системах и фоновое исполнение и интерактивное. Суть в том, что бизнес-системы так и строятся. Давно.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37588880
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой Бобрdonkey80,

Логика пишется в приложении. Ну по крайней мере у нормальных людей. И ничего страшного в этом нет. Меняются условия - выходит обновление приложения. Тот же SAP как один из лидеров (по стабильности) учетного ПО построен по этому принципу. Более того в европе изменение закона по бизнесу вступает в силу только после переделок в SAP, т.е. конечный пользователь получит уже все что нужно.
вообще не в тему
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37589078
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donkey80iscrafm,
Нет, тут смысл в том, что кроме явного "мусора", который отбрасывается сразу, все остальное выполняется неким фоновым процессом, в рамках всей системы (процесс не создается в ответ на действие пользователя, т.е. это не какой-то временный процесс или поток).Ну конечно, как же ещё?

donkey80Обычно же вся логика отрабатывает сразу.Это в простых поделках :-)

Во первых, технологически слишком непросто отработать всю логику "сразу".

Во вторых, это ошибочно с точки зрения бизнеса - первичка должна сохраниться.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37589441
Александр Пузаков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donkey80,

За все системы не скажу, но в 1С:Предприятие 8 это делается легко и просто стандартными средствами. Например, прикладной объект конфигурации Документ делает движения по нескольким регистрам накопления , пускай их будет 6 (часто совокупное количество различных регистров, по которым делает движения документ, больше шести), тогда при проведении нужно будет записывать данные в шесть различных таблиц. Очевидно, при большом количестве пользователей это может приводить к "тормозам", так выход существует такой: при выполнении проведения пользователем делать движения только по тем одному-двум-трем регистрам накопления, которые критичны к актуализации данных (хранят оперативные остатки, которые активно используются другими пользователями), - в итоге получим запись данных не в шесть таблиц, а в 1-3, а по оставшимся регистрам накопления проведение выполняет фоновое задание в часы наименьшей загруженности системы (ночью или в обеденный перерыв).
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37591536
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю на техподдержке диспетчерской системы. Каждые два часа опрашиваются около 40 серверов АСУТП. Данные телемеханики обрабатывает как раз такой фоновый процесс, переписывает данные в основную базу, рассчитывает производные показатели и т.д.
В результате пользователи только через 40 мин после конца двухчасовки получают полноценные сводки.
Т.е. такой подход может приводить к временным задержкам.
С другой стороны, распараллеливание обработки этих данных вряд ли приведет к ускорению. В нашем случае все показатели пишутся в одну таблицу, поэтому будет много конфликтов.
Т.е. такой подход можно применять для уменьшения конфликтов (а также для снижения нагрузки на сервер, это только отчасти шутка).
Для некоторых задач может быть полезен перенос обработки на фоновый процесс, но рассматривать это как общий подход к архитектуре приложений я бы воздержался.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37591746
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оракл предлагает процессинг на очередях.

Пользователь заносит сообщение в очередь (или в таблицу и автоматически в очередь). На другом конце очереди некий агент выполняет свою обработку сообщения, что то пишет в БД, и возможно создаёт новые сообщения для агентов следующего звена и т.д.

Делать изменчивую логику бизнеса на декларативных ограничениях целостности исключительно недальновидно. Даже если деньги считаются в рублях и копейках, не следует делать тип number(*,2). Изменение в валютном законодательстве может сделать БД непригодной для бизнеса.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37591755
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БД всегда можно изменить.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37591882
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой то нецелевой базар
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37592224
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmБД всегда можно изменить.

конечно можно. можно за год поменять систему или за полтора получить патч.
можно лоббировать отказ от принятия новых законов или даже свершить коммунистическую революцию. всё можно. только зачем?

PS. Ваш смартфон правильно показывает мировое время?
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37592287
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabiscrafmБД всегда можно изменить.

конечно можно. можно за год поменять систему или за полтора получить патч.
можно лоббировать отказ от принятия новых законов или даже свершить коммунистическую революцию. всё можно. только зачем?

PS. Ваш смартфон правильно показывает мировое время?
вы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37593057
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmвы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял.

вы не знаете куда я вляпался, поэтому хватит чушь пороть.

лёгкое изменение БД неизбежно приведёт к изменению софта. а там маленькая на вид задачка обрастёт работами как снежный ком.

отмена зимнего времени в России - маленькая задачка. Тем не менее народ с Android'ами до сих пор страдает. А там всего и надо - число в одной записи БД TimeZone поменять.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37593153
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabiscrafmвы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял.

вы не знаете куда я вляпался, поэтому хватит чушь пороть.

лёгкое изменение БД неизбежно приведёт к изменению софта. а там маленькая на вид задачка обрастёт работами как снежный ком.

отмена зимнего времени в России - маленькая задачка. Тем не менее народ с Android'ами до сих пор страдает. А там всего и надо - число в одной записи БД TimeZone поменять.
вы смотрите с позиции софта, с которым работаете. Никогда легкие изменения в БД не приводят к каким-то глобальным изменениям софта, это можно сказать обычный жизненный цикл.
Не распространяйте свой снежный ком на весь софт в принципе. Андроид приплели к чему-то, совсем в тему...
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37594590
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm Никогда легкие изменения в БД не приводят к каким-то глобальным изменениям софта, это можно сказать обычный жизненный цикл.

Бездоказательная чепуха, применимая разве что к сферической системе в вакууме.

А вот и аргумент:

iscrafm Не распространяйте свой снежный ком на весь софт в принципе.

У меня наверное какая то особенная система, которая к "никогда" не относится.

БД один из основных интерфейсов взаимодействия компонентов системы. Проектировщики стремятся делать интерфейсы как можно более стабильными, в противном случае то и дело трассируя изменения интерфейсов не долго вылететь в трубу.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37594610
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabiscrafm Никогда легкие изменения в БД не приводят к каким-то глобальным изменениям софта, это можно сказать обычный жизненный цикл.

Бездоказательная чепуха, применимая разве что к сферической системе в вакууме.
почему бездоказательная? Более 20 лет этим занимаюсь из них последние 6 лет перестал считать это бездоказательной чепухой. Я не пытаюсь вас переубедить, поверьте, мне это совершенно не нужно. Я просто говорю о том, что если у вас с этим проблемы, то искать их причину нужно в своей архитектуре, а не в том, что это какие-то родовые свойства систем и нужно с этим просто научиться жить.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37595517
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabiscrafmвы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял.

вы не знаете куда я вляпался, поэтому хватит чушь пороть.

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

Какой то у вас печальный опыт, действительно.

mcureenabУ меня наверное какая то особенная система, которая к "никогда" не относится.Никогда - это конечно неправильно. Есть, конечно, поделки, работающие, пока работает написавший их программист, и программисты, вносящие изменения в базу так, что всё перестаёт работать, в том числе программы сторонних производителей, работающие с этой базой.
Но, наверное, iscrafm имел в виду, что "никогда" нет такого бизнес-требования, а есть просто кривые руки.

Мне вообще трудно представить мотивацию человека, который придумывает обновлять программы для какой нибуть торговой базы непременно вместе с базой, особенно есть программы установлены в сотнях магазинах, да в разных часовых поясах :-) Можно так делать, но зачем, что им двигает?
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37595550
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabБД один из основных интерфейсов взаимодействия компонентов системы. Проектировщики стремятся делать интерфейсы как можно более стабильными, в противном случае то и дело трассируя изменения интерфейсов не долго вылететь в трубу.Стабильность не имеет отношения к теме.

Изменения интерфейсов делаются не их прихоти, а для изменения функциональности, и если (или пока) для конкретного потребителя (или выполняемой задачи) не требуется эта функционалность, то ему и не требуется устанавливать новую версию клинта. Вполне естественно.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596307
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgМне вообще трудно представить мотивацию человека, который придумывает обновлять программы для какой нибуть торговой базы непременно вместе с базой, особенно есть программы установлены в сотнях магазинах, да в разных часовых поясах :-) Можно так делать, но зачем, что им двигает?

iscrafm отвечает:

iscrafmБД всегда можно изменить.

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

Хуже, когда надо смягчить ограничения. Потребуется проверка работоспособности (и доработка) приложений на расширенной предметной области. А при изменении структуры БД придётся ещё и миграцию данных делать.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596316
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabalexeyvgМне вообще трудно представить мотивацию человека, который придумывает обновлять программы для какой нибуть торговой базы непременно вместе с базой, особенно есть программы установлены в сотнях магазинах, да в разных часовых поясах :-) Можно так делать, но зачем, что им двигает?

iscrafm отвечает:

iscrafmБД всегда можно изменить.
кто-то забывает написать на что iscrafm отвечает. Ппц, знатный способ

а на что же iscrafm отвечаетДелать изменчивую логику бизнеса на декларативных ограничениях целостности исключительно недальновидно
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596815
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donkey80P.S.: Конечно, такой подход скорее всего неприменим для многих систем; также, я не могу сказать, что я досконально продумал его. В связи с этим прошу не заострять внимание на технических аспектах, а высказываться по поводу самой идеи.
Ну это собственно идея очереди сообщений. Она имеет вполне очевидные достоинства и ограничения, и потому применяется... более локально. Как архитектура ИС в целом - вряд ли сработает.

Что до названных Вами минусов "традиционного подхода", то:

Первый минус этой идеей никак не решается - данные по-прежнему легко испортить теми же методами

Второй минус решать так.. вряд ли разумно. Если не устраивают скрипты, стоит искать более продвинутые решения - например, конвертацию старых данных в момент следующего обращения к ним.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596860
OptiX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgОбычно БД меняется так, что бы не менять софт, с ней работающий, а жизненный цикл БД намного больше, чем у программ для неё - за десятилетия жизни базы для неё пишут много разного софта, работают старые и новые версии.
+
База одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений.

подход
iscrafmБД всегда можно изменить.
мягко говоря, не очень разумный :)
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596874
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OptiXalexeyvgОбычно БД меняется так, что бы не менять софт, с ней работающий, а жизненный цикл БД намного больше, чем у программ для неё - за десятилетия жизни базы для неё пишут много разного софта, работают старые и новые версии.
+
База одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений.

подход
iscrafmБД всегда можно изменить.
мягко говоря, не очень разумный :)
на чем основано это заключение?
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596885
OptiX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Это:
OptiXподход
iscrafmБД всегда можно изменить.мягко говоря, не очень разумный :)
на этом:
OptiXБаза одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений.

согласны?
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596908
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OptiXiscrafm,

Это:
OptiXподход
пропущено...
мягко говоря, не очень разумный :)
на этом:
OptiXБаза одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений.

согласны?
читать умеешь? Речь шла о декларативном ограничении целостности.
авторДелать изменчивую логику бизнеса на декларативных ограничениях целостности исключительно недальновидно
...
авторБД всегда можно изменить.
какой-то праздник грамотности сегодня
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596922
OptiX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

_не_всегда_ можно изменить БД (ни данные, ни констрейнты) для изменения бизнес-логики - Вам это пытаются сказать...
есть случаи, когда базой и приложением занимаются разные команды, и одни других не пустят к себе ни под каким предлогом - это не нормально, конечно, но категоричность Вашего утверждения в этих случаях будет неуместна.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596937
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OptiXiscrafm,

_не_всегда_ можно изменить БД (ни данные, ни констрейнты) для изменения бизнес-логики - Вам это пытаются сказать...
есть случаи, когда базой и приложением занимаются разные команды, и одни других не пустят к себе ни под каким предлогом - это не нормально, конечно, но категоричность Вашего утверждения в этих случаях будет неуместна.
наведите порядок в своем королевстве, чтобы транспорт и министерство транспорта работали по одним правилам. Хоть это к делу и не относится, но раз уж вы так и не поняли о чем речь шла, то этот комментарий к фразе о том, что разработчики БД не пускают к себе разработчиков приложений и наоборот. Не думаю, что глупые методы работы достойны использования в качестве примера
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37596967
OptiX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Да, мир не идеален!

ЗЫ Можете продолжать раздавать всем очень умные советы типа "БД всегда можно изменить" :)
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597067
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OptiXiscrafm,

Да, мир не идеален!

ЗЫ Можете продолжать раздавать всем очень умные советы типа "БД всегда можно изменить" :)
приведите пример, когда нельзя
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597146
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OptiXiscrafm,

Да, мир не идеален!

ЗЫ Можете продолжать раздавать всем очень умные советы типа "БД всегда можно изменить" :)
БД - модель предметной области(мпо) (обычно ооочень неадекватная)
мпо меняется вслед за изменениями (или изменениями знаний о пр. об., или нужна более адевкватная модель и т.д.) пр. обл.
какого фига какая та часть модели(БД) должна оставаться неизменной? только из того что кто то еще че то там читает и пишет?
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597152
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosкакого фига какая та часть модели(БД) должна оставаться неизменной?
В силу универсального принципа "мне так проще". Мне проще решить сугубо клиентскую задачу на сервере, нежели учить ещё и программирование клиентов. Мне проще послать клиенского программиста, пришедшего с серверной задачей, решать её на клиенте, чем морочиться самому. Мне проще, получив от серверного программиста хамский отлуп, проглотить и уйти делать на клиенте, нежели найти способ вставить ему пистон под хвост. И так далее.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597188
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerViPRosкакого фига какая та часть модели(БД) должна оставаться неизменной?
В силу универсального принципа "мне так проще". Мне проще решить сугубо клиентскую задачу на сервере, нежели учить ещё и программирование клиентов. Мне проще послать клиенского программиста, пришедшего с серверной задачей, решать её на клиенте, чем морочиться самому. Мне проще, получив от серверного программиста хамский отлуп, проглотить и уйти делать на клиенте, нежели найти способ вставить ему пистон под хвост. И так далее.
в нашей стране везде так. Работать никто не хочет и делается все через жопу. Потому что так проще.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597386
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmsoftwarerпропущено...

В силу универсального принципа "мне так проще". Мне проще решить сугубо клиентскую задачу на сервере, нежели учить ещё и программирование клиентов. Мне проще послать клиенского программиста, пришедшего с серверной задачей, решать её на клиенте, чем морочиться самому. Мне проще, получив от серверного программиста хамский отлуп, проглотить и уйти делать на клиенте, нежели найти способ вставить ему пистон под хвост. И так далее.
в нашей стране везде так. Работать никто не хочет и делается все через жопу. Потому что так проще.

Может потому. что и так работает?:)
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597404
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmБД всегда можно изменить.

Я может не понял контекста, но большинство трехзвенок очень тесно связаны с теми же типами данных бд, и, естественно, при изменении типа(допустим размерность увеличили или num->string сделали, timestamp->date и тд) слой DAO может неадекватно отреагировать.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597426
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а по сабжу, в самом деле очередь сообщений(можно глянут в сторону спецификации JMS в Java) очень похоже работает.
По моему Фаулер в интеграции корпоративных приложений очень подброно остановился на очереди сообщений. Правда, все таки, одно но:
-очередь сообщений оперирует сообщениями, а значит естественно, инициирует некую входную точку алгоритма каким либо действием пользователям, тогда как сабж говорит о фоновом процессе, что подразумевает несколько иную архитектуру приложения.
К слову сказать, думаю. что велосипедов на эту тему хватает.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597440
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинслой DAO может неадекватно отреагировать.
Вообще говоря такому слою надо делать формат цэ. Если, конечно, мы говорим о совместимых изменениях. Последние примерно 50 лет - с тех пор как придумали модульное программирование - дизайн приложений в значительной степени определяется поиском loose coupling, и если один компонент падает от незначимых изменений в другом, это говорит о необходимости срочной хирургии передних конечностей. Именно так и появляются массы уродцев, которые вроде как сделаны по науке, но если попробовать внести тривиальное изменение, оказывается, что для этого надо править в десяти местах код на трёх разных языках.

Тем не менее, позволю себе упомянуть, что Валерий наверняка подразумевал и необходимое изменение клиентов в рамках "изменить БД".
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597470
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОзверинслой DAO может неадекватно отреагировать.
Вообще говоря такому слою надо делать формат цэ. Если, конечно, мы говорим о совместимых изменениях. Последние примерно 50 лет - с тех пор как придумали модульное программирование - дизайн приложений в значительной степени определяется поиском loose coupling, и если один компонент падает от незначимых изменений в другом, это говорит о необходимости срочной хирургии передних конечностей. Именно так и появляются массы уродцев, которые вроде как сделаны по науке, но если попробовать внести тривиальное изменение, оказывается, что для этого надо править в десяти местах код на трёх разных языках.

Тем не менее, позволю себе упомянуть, что Валерий наверняка подразумевал и необходимое изменение клиентов в рамках "изменить БД".

декларативные ограничения намекают об обратном.(в рамках которых велся разговор)

Боюсь, что современный софт не очень коррелирует с вашими взглядами на его развитие, в том числе последние 50 лет.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597473
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

добавлю от себя, я не говорил о том, что потребуется масса изменений, я лишь о том, что изменения потребуются.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597485
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинsoftwarer,

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

Именно так и появляются массы уродцев, которые вроде как сделаны по науке, но если попробовать внести тривиальное изменение, оказывается, что для этого надо править в десяти местах код на трёх разных языках.



Я вижу обратное.
Если ж вам трудно преставить, как в одном изменения в 1м модуле могут повлечь ошибки в другом - мне сказать нечего ;) Мы с вами на разных планетах живем.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597808
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинiscrafmБД всегда можно изменить.

Я может не понял контекста, но большинство трехзвенок очень тесно связаны с теми же типами данных бд, и, естественно, при изменении типа(допустим размерность увеличили или num->string сделали, timestamp->date и тд) слой DAO может неадекватно отреагировать.
конечно может такое случиться. Если менять, то взвесив все за и против. Это было сказано к тому, что декларативные описания для поддержания целостности нельзя применять (было сказано "крайне неразумно" ), если система развивается и логика меняется. Было сказано, что БД тоже можно всегда изменить, вплоть до отказа от декларативного описания и реализации всего этого программным способом. Никакого скрытого контекста там нет, только то о чем сказал. Просто для многих систем фраза о внесении изменений звучит как приговор, а для некоторых - обычный жизненный цикл. Зависит от того как изначально спроектировали
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37597826
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинЕсли ж вам трудно преставить, как в одном изменения в 1м модуле могут повлечь ошибки в другом - мне сказать нечего ;) Мы с вами на разных планетах живем.
Мне это очень легко представить. Как и последующую операцию по выпрямлению рук того, кто это напрограммировал.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37598331
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОзверинЕсли ж вам трудно преставить, как в одном изменения в 1м модуле могут повлечь ошибки в другом - мне сказать нечего ;) Мы с вами на разных планетах живем.
Мне это очень легко представить. Как и последующую операцию по выпрямлению рук того, кто это напрограммировал.

Жаль, что весь мир не удостоился второго фаулера в вашем лице: почитал бы ваши труды или с удовольствием ознакомился с архитектурой ваших приложений.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37599112
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинsoftwarerпропущено...

Мне это очень легко представить. Как и последующую операцию по выпрямлению рук того, кто это напрограммировал.

Жаль, что весь мир не удостоился второго фаулера в вашем лице: почитал бы ваши труды ...ну так и ознакомьтесь , необязательно ждать трудов от softwarer'а.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37600180
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmОзверинпропущено...
Я может не понял контекста, но большинство трехзвенок очень тесно связаны с теми же типами данных бд, и, естественно, при изменении типа(допустим размерность увеличили или num->string сделали, timestamp->date и тд) слой DAO может неадекватно отреагировать.
конечно может такое случиться. Если менять, то взвесив все за и против. Это было сказано к тому, что декларативные описания для поддержания целостности нельзя применять (было сказано "крайне неразумно" ), если система развивается и логика меняется. Было сказано, что БД тоже можно всегда изменить, вплоть до отказа от декларативного описания и реализации всего этого программным способом. Никакого скрытого контекста там нет, только то о чем сказал. Просто для многих систем фраза о внесении изменений звучит как приговор, а для некоторых - обычный жизненный цикл. Зависит от того как изначально спроектировали

+1

Если, уважаемый, ещё нарисует пример удачного и неудачного проектирования какой либо (вымышленной) системы в свете трассировки зависимостей приложений от структуры БД ... Короче, некие паттерны проектирования.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37600241
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabКороче, некие паттерны проектирования.
Первый и главный паттерн в такой ситуации - "владелец". У каждого значимого фрагмента метаинформации должен быть единственный источник, нужно исключать дублирование.

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

Допустим, мы решили, что фрагментов таки несколько. Например, мы хотим не генерировать интерфейсную форму, а нарисовать её явно, то есть воспользоваться некоей информацией по дизайну, вовсе не заложенной в метаинформацию колонки в БД. Что мы получаем в этом случае? Мы получаем необходимость маппинга, указания некоего соответствия между свойствами/объектами этих фрагментов. Каким должен быть этот маппинг? Ответ: минимально сковывающим и максимально адаптивным. Допустим, у нас на форме есть чекбокс. Допустим, мы завтра решили, что логические поля в оракловой БД должны представляться не как CHAR(1) со значениями Y и N, а как NUMBER(1) со значениями 1 и 0. Вопрос: хотим ли мы бегать по всему приложению и переделывать все чекбоксы? Ответ: нет, мы хотим, чтобы информация была представлена в единственном экземпляре с одним владельцем. Поэтому в каком-нибудь Oracle Designer-е мы опишем для логических данных домен, и не будем при изменении этого решения править руками сто двадцать описаний полей. Поэтому в клиенте мы тем или иным образом укажем, какое значение DAL должен передавать в СУБД как значение true и какое - как значение false. Должно ли в данном случае приложение запрашивать эту информацию у БД? Пожалуй, в данной ситуации будет выгоднее допустить мелкое дублирование, это осознанное решение. Хорошо, теперь, допустим, мы поменяли тип колонки с VARCHAR(100) на VARCHAR(200). Как должно отреагировать на это приложение? Самый простой ответ - никак! У него для этого атрибута String, безразмерный, и приложению вообще пофиг на это изменение. Ладно, допустим, приложение что-то делает с этим значением, например, регулирует ширину колонки в гриде или проверяет на допустимость при заполнении. Как в таком случае должно реагировать приложение? Правильно, прежде всего мы должны решить, у нас один фрагмент метаинформации или два. Если один - должно запросить с сервера и использовать. Если два - должно поддерживать собственную метаинформацию и стараться конвертировать при маппинге там, где это необходимо. Передать в СУБД String(100) и нехай оно превращается в VARCHAR(200). Да, в случае маппинга заведомо закладывается возможность "не удастся конвертировать", но этот случай не вызывает никаких проблем непонимания, поскольку проходит в случае нетривиальных изменений бизнес-логики. Но почему в таком случае приложение падает, когда мы меняем date на timestamp или varchar(100) на varchar(200)? Ответ: потому что придурки программисты (чаще не прикладные, а создатели фреймворков) заложили в реализацию дублирование метаинформации, логически являющейся одним фрагментом. Вместо того, чтобы получать информацию с сервера, вместо того, чтобы уметь конвертировать date в timestamp, они просто и тупо ругаются "несовместимый тип поля". Вот и весь паттерн.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37600288
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНо почему в таком случае приложение падает, когда мы меняем date на timestamp или varchar(100) на varchar(200)? Ответ: потому что придурки программисты (чаще не прикладные, а создатели фреймворков) заложили в реализацию дублирование метаинформации, логически являющейся одним фрагментом. Вместо того, чтобы получать информацию с сервера, вместо того, чтобы уметь конвертировать date в timestamp, они просто и тупо ругаются "несовместимый тип поля". Вот и весь паттерн.
мне даже тяжело представить, чтобы именно фреймворки на таком лажались. Вполне реалистично выглядит для "в лоб" сделанных приложений, но у фреймворков то другие задачи. Т.е. процитированный фрагмент скорее антипаттерн
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37600304
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmмне даже тяжело представить, чтобы именно фреймворки на таком лажались.
Ну, just for example, на таком лажались persistent fields в дельфях, во всяком случае при использовании BDE, хотя по-моему не только. Самое весёлое, что я помню - приложение при той же, нетронутой базе, и при том же, нетронутом exe-шнике, падало от мелкого патча BDE. Причина - NUMBER(*,0) поля в таблицах в этом патче стали рассматриваться не как ftInteger, а как ftFloat (или наоборот, не помню).

iscrafmТ.е. процитированный фрагмент скорее антипаттерн
Ну вот с этим я нисколько не спорю С этим не согласен, кажется, Озверин.
...
Рейтинг: 0 / 0
Необычная организация бизнес-логики приложения
    #37600697
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

откуда сама мысль возникла о рантайм ошибках?
Вы когда модели проектируете всегда в целые типы закладываете float? И всю "математику" так же пишете? Что за эфемерные выкладки про String? А обратное изменения timestamp -> date почему не рассматриваете? Человек выбрал дата+время+тз, а сохранилась только дата+00:00:00 .. я говорил о разного рода ошибках, а не просто неадекватных.
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Необычная организация бизнес-логики приложения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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