|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Здравствуйте, Какое-то время назад пришла в голову следующая (немного странная) мысль по организации логики приложения. Для начала, приведу мое видение "классической" логики работы не слишком сложного приложения (3х звенка, но не суть важно): Данные хранятся в БД, есть сервер приложений, пользователь. В принципе, все действия пользователя сводятся так или иначе к чтению/записи различных данных в БД. В простейшем случае это просто какое-то действие над одной строкой данных в одной таблице (чистые CRUD-операции) + простейшая валидация. Более сложный случай затрагивает чтение данных из других таблиц и их изменение по определенным правилам (правила реализованы или на сервере приложений, или в БД). Чтение данных также сводится к чтению каких-то данных, хранимых в БД, плюс, возможно, вычисляемых "на лету" данных. Очевидный минус такого подхода данные относительно просто могут быть испорчены (под этим я понимаю их _несогласованное_ состояние, а не неосторожное, но _допустимое_ действие). Правила бизнес-логики очень легко обойти если они реализованы на сервере приложений (просто выполнив прямой запрос к БД), чуть сложнее, если логика реализована в БД (даже если она построена на триггерах, полностью защитить данные можно только навесив триггеры на все таблицы - такое бывает редко). Второй минус - если правила бизнес-логики меняются, старые данные оказываются также испорчены (с точки зрения новой логики они неправильные) - приходится применять к существующим данным какие-то скрипты и т.п. Мне пришла в голову мысль о том, что всю логику можно было бы поместить в некий постоянно выполняющийся процесс (не будем вдаваться в подробности), который: 1) Мониторит все изменения данных (где-то ведется свой лог транзакций) и в случае необходимости применяет к ним бизнес-правила. 2) Может быть запущен в режиме проверки всех данных вообще. Соответственно, клиентская система (по отношению к данным) оказывается ограничена только CRUD-операциями + простейшей валидацией (последняя также опционально может выполняться в процессе). Возможно даже, что клиентская система просто пишет некоторые "транзакции" в лог, а не в саму БД, а процесс их исполняет. Чтение данных происходит напрямую из БД. Очевидный минус подхода - реакция системы может быть либо медленной, либо неинформативной. Плюс - данные всегда согласованы, никакого мусора. Попробовал поискать инфу о таком подходе в Инете - не нашел... Хотел бы услышать мнение здешних людей по такому подходу ну и если кто-то где-то читал об этом - кинуть ссылочку. P.S.: Конечно, такой подход скорее всего неприменим для многих систем; также, я не могу сказать, что я досконально продумал его. В связи с этим прошу не заострять внимание на технических аспектах, а высказываться по поводу самой идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2011, 17:43 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Вы говорите об обычной логике построения наверное большинства бизнес приложений. Всегда разделяется введенный "мусор", удовлетворяющий только простейшим правилам валидации, и учтенные (проведенные) данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2011, 19:24 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafm, Нет, тут смысл в том, что кроме явного "мусора", который отбрасывается сразу, все остальное выполняется неким фоновым процессом, в рамках всей системы (процесс не создается в ответ на действие пользователя, т.е. это не какой-то временный процесс или поток). Обычно же вся логика отрабатывает сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 09:47 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
все остальное выполняется неким фоновым процессом, в рамках всей системыНасколько мне известно, такое можно настроить в САПе. Мысль не странная и отнюдь не новая. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 11:05 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
donkey80, Логика пишется в приложении. Ну по крайней мере у нормальных людей. И ничего страшного в этом нет. Меняются условия - выходит обновление приложения. Тот же SAP как один из лидеров (по стабильности) учетного ПО построен по этому принципу. Более того в европе изменение закона по бизнесу вступает в силу только после переделок в SAP, т.е. конечный пользователь получит уже все что нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 11:31 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Все придумано до нас. Есть cqrs, event sourcing, еtc ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 11:43 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
donkey80iscrafm, Нет, тут смысл в том, что кроме явного "мусора", который отбрасывается сразу, все остальное выполняется неким фоновым процессом, в рамках всей системы (процесс не создается в ответ на действие пользователя, т.е. это не какой-то временный процесс или поток). Обычно же вся логика отрабатывает сразу. это уже нюансы реализации. Есть в системах и фоновое исполнение и интерактивное. Суть в том, что бизнес-системы так и строятся. Давно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 13:42 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Злой Бобрdonkey80, Логика пишется в приложении. Ну по крайней мере у нормальных людей. И ничего страшного в этом нет. Меняются условия - выходит обновление приложения. Тот же SAP как один из лидеров (по стабильности) учетного ПО построен по этому принципу. Более того в европе изменение закона по бизнесу вступает в силу только после переделок в SAP, т.е. конечный пользователь получит уже все что нужно. вообще не в тему ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 13:43 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
donkey80iscrafm, Нет, тут смысл в том, что кроме явного "мусора", который отбрасывается сразу, все остальное выполняется неким фоновым процессом, в рамках всей системы (процесс не создается в ответ на действие пользователя, т.е. это не какой-то временный процесс или поток).Ну конечно, как же ещё? donkey80Обычно же вся логика отрабатывает сразу.Это в простых поделках :-) Во первых, технологически слишком непросто отработать всю логику "сразу". Во вторых, это ошибочно с точки зрения бизнеса - первичка должна сохраниться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 14:53 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
donkey80, За все системы не скажу, но в 1С:Предприятие 8 это делается легко и просто стандартными средствами. Например, прикладной объект конфигурации Документ делает движения по нескольким регистрам накопления , пускай их будет 6 (часто совокупное количество различных регистров, по которым делает движения документ, больше шести), тогда при проведении нужно будет записывать данные в шесть различных таблиц. Очевидно, при большом количестве пользователей это может приводить к "тормозам", так выход существует такой: при выполнении проведения пользователем делать движения только по тем одному-двум-трем регистрам накопления, которые критичны к актуализации данных (хранят оперативные остатки, которые активно используются другими пользователями), - в итоге получим запись данных не в шесть таблиц, а в 1-3, а по оставшимся регистрам накопления проведение выполняет фоновое задание в часы наименьшей загруженности системы (ночью или в обеденный перерыв). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 17:12 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Работаю на техподдержке диспетчерской системы. Каждые два часа опрашиваются около 40 серверов АСУТП. Данные телемеханики обрабатывает как раз такой фоновый процесс, переписывает данные в основную базу, рассчитывает производные показатели и т.д. В результате пользователи только через 40 мин после конца двухчасовки получают полноценные сводки. Т.е. такой подход может приводить к временным задержкам. С другой стороны, распараллеливание обработки этих данных вряд ли приведет к ускорению. В нашем случае все показатели пишутся в одну таблицу, поэтому будет много конфликтов. Т.е. такой подход можно применять для уменьшения конфликтов (а также для снижения нагрузки на сервер, это только отчасти шутка). Для некоторых задач может быть полезен перенос обработки на фоновый процесс, но рассматривать это как общий подход к архитектуре приложений я бы воздержался. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 21:22 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Оракл предлагает процессинг на очередях. Пользователь заносит сообщение в очередь (или в таблицу и автоматически в очередь). На другом конце очереди некий агент выполняет свою обработку сообщения, что то пишет в БД, и возможно создаёт новые сообщения для агентов следующего звена и т.д. Делать изменчивую логику бизнеса на декларативных ограничениях целостности исключительно недальновидно. Даже если деньги считаются в рублях и копейках, не следует делать тип number(*,2). Изменение в валютном законодательстве может сделать БД непригодной для бизнеса. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 02:37 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
БД всегда можно изменить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 03:52 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
какой то нецелевой базар ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 14:14 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafmБД всегда можно изменить. конечно можно. можно за год поменять систему или за полтора получить патч. можно лоббировать отказ от принятия новых законов или даже свершить коммунистическую революцию. всё можно. только зачем? PS. Ваш смартфон правильно показывает мировое время? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 21:59 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
mcureenabiscrafmБД всегда можно изменить. конечно можно. можно за год поменять систему или за полтора получить патч. можно лоббировать отказ от принятия новых законов или даже свершить коммунистическую революцию. всё можно. только зачем? PS. Ваш смартфон правильно показывает мировое время? вы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 23:18 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafmвы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял. вы не знаете куда я вляпался, поэтому хватит чушь пороть. лёгкое изменение БД неизбежно приведёт к изменению софта. а там маленькая на вид задачка обрастёт работами как снежный ком. отмена зимнего времени в России - маленькая задачка. Тем не менее народ с Android'ами до сих пор страдает. А там всего и надо - число в одной записи БД TimeZone поменять. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2011, 10:06 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
mcureenabiscrafmвы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял. вы не знаете куда я вляпался, поэтому хватит чушь пороть. лёгкое изменение БД неизбежно приведёт к изменению софта. а там маленькая на вид задачка обрастёт работами как снежный ком. отмена зимнего времени в России - маленькая задачка. Тем не менее народ с Android'ами до сих пор страдает. А там всего и надо - число в одной записи БД TimeZone поменять. вы смотрите с позиции софта, с которым работаете. Никогда легкие изменения в БД не приводят к каким-то глобальным изменениям софта, это можно сказать обычный жизненный цикл. Не распространяйте свой снежный ком на весь софт в принципе. Андроид приплели к чему-то, совсем в тему... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2011, 11:14 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafm Никогда легкие изменения в БД не приводят к каким-то глобальным изменениям софта, это можно сказать обычный жизненный цикл. Бездоказательная чепуха, применимая разве что к сферической системе в вакууме. А вот и аргумент: iscrafm Не распространяйте свой снежный ком на весь софт в принципе. У меня наверное какая то особенная система, которая к "никогда" не относится. БД один из основных интерфейсов взаимодействия компонентов системы. Проектировщики стремятся делать интерфейсы как можно более стабильными, в противном случае то и дело трассируя изменения интерфейсов не долго вылететь в трубу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2011, 02:16 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
mcureenabiscrafm Никогда легкие изменения в БД не приводят к каким-то глобальным изменениям софта, это можно сказать обычный жизненный цикл. Бездоказательная чепуха, применимая разве что к сферической системе в вакууме. почему бездоказательная? Более 20 лет этим занимаюсь из них последние 6 лет перестал считать это бездоказательной чепухой. Я не пытаюсь вас переубедить, поверьте, мне это совершенно не нужно. Я просто говорю о том, что если у вас с этим проблемы, то искать их причину нужно в своей архитектуре, а не в том, что это какие-то родовые свойства систем и нужно с этим просто научиться жить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2011, 02:40 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
mcureenabiscrafmвы просто смотрите со стороны использования софта с которым Вам приходится работать. Но уж извините, сами вляпались, никто не заставлял. вы не знаете куда я вляпался, поэтому хватит чушь пороть. лёгкое изменение БД неизбежно приведёт к изменению софта. а там маленькая на вид задачка обрастёт работами как снежный ком.Обычно БД меняется так, что бы не менять софт, с ней работающий, а жизненный цикл БД намного больше, чем у программ для неё - за десятилетия жизни базы для неё пишут много разного софта, работают старые и новые версии. Какой то у вас печальный опыт, действительно. mcureenabУ меня наверное какая то особенная система, которая к "никогда" не относится.Никогда - это конечно неправильно. Есть, конечно, поделки, работающие, пока работает написавший их программист, и программисты, вносящие изменения в базу так, что всё перестаёт работать, в том числе программы сторонних производителей, работающие с этой базой. Но, наверное, iscrafm имел в виду, что "никогда" нет такого бизнес-требования, а есть просто кривые руки. Мне вообще трудно представить мотивацию человека, который придумывает обновлять программы для какой нибуть торговой базы непременно вместе с базой, особенно есть программы установлены в сотнях магазинах, да в разных часовых поясах :-) Можно так делать, но зачем, что им двигает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2011, 16:05 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
mcureenabБД один из основных интерфейсов взаимодействия компонентов системы. Проектировщики стремятся делать интерфейсы как можно более стабильными, в противном случае то и дело трассируя изменения интерфейсов не долго вылететь в трубу.Стабильность не имеет отношения к теме. Изменения интерфейсов делаются не их прихоти, а для изменения функциональности, и если (или пока) для конкретного потребителя (или выполняемой задачи) не требуется эта функционалность, то ему и не требуется устанавливать новую версию клинта. Вполне естественно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2011, 16:21 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
alexeyvgМне вообще трудно представить мотивацию человека, который придумывает обновлять программы для какой нибуть торговой базы непременно вместе с базой, особенно есть программы установлены в сотнях магазинах, да в разных часовых поясах :-) Можно так делать, но зачем, что им двигает? iscrafm отвечает: iscrafmБД всегда можно изменить. Усилить ограничения скорее всего не выйдет, из-за существующих данных. Да и зачем, если система и так должна работать. Хуже, когда надо смягчить ограничения. Потребуется проверка работоспособности (и доработка) приложений на расширенной предметной области. А при изменении структуры БД придётся ещё и миграцию данных делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 01:00 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
mcureenabalexeyvgМне вообще трудно представить мотивацию человека, который придумывает обновлять программы для какой нибуть торговой базы непременно вместе с базой, особенно есть программы установлены в сотнях магазинах, да в разных часовых поясах :-) Можно так делать, но зачем, что им двигает? iscrafm отвечает: iscrafmБД всегда можно изменить. кто-то забывает написать на что iscrafm отвечает. Ппц, знатный способ а на что же iscrafm отвечаетДелать изменчивую логику бизнеса на декларативных ограничениях целостности исключительно недальновидно ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 01:09 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
donkey80P.S.: Конечно, такой подход скорее всего неприменим для многих систем; также, я не могу сказать, что я досконально продумал его. В связи с этим прошу не заострять внимание на технических аспектах, а высказываться по поводу самой идеи. Ну это собственно идея очереди сообщений. Она имеет вполне очевидные достоинства и ограничения, и потому применяется... более локально. Как архитектура ИС в целом - вряд ли сработает. Что до названных Вами минусов "традиционного подхода", то: Первый минус этой идеей никак не решается - данные по-прежнему легко испортить теми же методами Второй минус решать так.. вряд ли разумно. Если не устраивают скрипты, стоит искать более продвинутые решения - например, конвертацию старых данных в момент следующего обращения к ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 12:13 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
alexeyvgОбычно БД меняется так, что бы не менять софт, с ней работающий, а жизненный цикл БД намного больше, чем у программ для неё - за десятилетия жизни базы для неё пишут много разного софта, работают старые и новые версии. + База одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений. подход iscrafmБД всегда можно изменить. мягко говоря, не очень разумный :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 12:31 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
OptiXalexeyvgОбычно БД меняется так, что бы не менять софт, с ней работающий, а жизненный цикл БД намного больше, чем у программ для неё - за десятилетия жизни базы для неё пишут много разного софта, работают старые и новые версии. + База одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений. подход iscrafmБД всегда можно изменить. мягко говоря, не очень разумный :) на чем основано это заключение? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 12:35 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafm, Это: OptiXподход iscrafmБД всегда можно изменить.мягко говоря, не очень разумный :) на этом: OptiXБаза одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений. согласны? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 12:40 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
OptiXiscrafm, Это: OptiXподход пропущено... мягко говоря, не очень разумный :) на этом: OptiXБаза одна, а приложений, пишущих и читающих из неё, может быть много разных. Лезть в рабочие данные, вместо того, чтобы поправить одно приложение, может иметь непредсказуемые последствия для других приложений. согласны? читать умеешь? Речь шла о декларативном ограничении целостности. авторДелать изменчивую логику бизнеса на декларативных ограничениях целостности исключительно недальновидно ... авторБД всегда можно изменить. какой-то праздник грамотности сегодня ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 12:48 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafm, _не_всегда_ можно изменить БД (ни данные, ни констрейнты) для изменения бизнес-логики - Вам это пытаются сказать... есть случаи, когда базой и приложением занимаются разные команды, и одни других не пустят к себе ни под каким предлогом - это не нормально, конечно, но категоричность Вашего утверждения в этих случаях будет неуместна. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 12:56 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
OptiXiscrafm, _не_всегда_ можно изменить БД (ни данные, ни констрейнты) для изменения бизнес-логики - Вам это пытаются сказать... есть случаи, когда базой и приложением занимаются разные команды, и одни других не пустят к себе ни под каким предлогом - это не нормально, конечно, но категоричность Вашего утверждения в этих случаях будет неуместна. наведите порядок в своем королевстве, чтобы транспорт и министерство транспорта работали по одним правилам. Хоть это к делу и не относится, но раз уж вы так и не поняли о чем речь шла, то этот комментарий к фразе о том, что разработчики БД не пускают к себе разработчиков приложений и наоборот. Не думаю, что глупые методы работы достойны использования в качестве примера ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 13:01 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafm, Да, мир не идеален! ЗЫ Можете продолжать раздавать всем очень умные советы типа "БД всегда можно изменить" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 13:15 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
OptiXiscrafm, Да, мир не идеален! ЗЫ Можете продолжать раздавать всем очень умные советы типа "БД всегда можно изменить" :) приведите пример, когда нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 13:55 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
OptiXiscrafm, Да, мир не идеален! ЗЫ Можете продолжать раздавать всем очень умные советы типа "БД всегда можно изменить" :) БД - модель предметной области(мпо) (обычно ооочень неадекватная) мпо меняется вслед за изменениями (или изменениями знаний о пр. об., или нужна более адевкватная модель и т.д.) пр. обл. какого фига какая та часть модели(БД) должна оставаться неизменной? только из того что кто то еще че то там читает и пишет? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 14:27 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
ViPRosкакого фига какая та часть модели(БД) должна оставаться неизменной? В силу универсального принципа "мне так проще". Мне проще решить сугубо клиентскую задачу на сервере, нежели учить ещё и программирование клиентов. Мне проще послать клиенского программиста, пришедшего с серверной задачей, решать её на клиенте, чем морочиться самому. Мне проще, получив от серверного программиста хамский отлуп, проглотить и уйти делать на клиенте, нежели найти способ вставить ему пистон под хвост. И так далее. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 14:31 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
softwarerViPRosкакого фига какая та часть модели(БД) должна оставаться неизменной? В силу универсального принципа "мне так проще". Мне проще решить сугубо клиентскую задачу на сервере, нежели учить ещё и программирование клиентов. Мне проще послать клиенского программиста, пришедшего с серверной задачей, решать её на клиенте, чем морочиться самому. Мне проще, получив от серверного программиста хамский отлуп, проглотить и уйти делать на клиенте, нежели найти способ вставить ему пистон под хвост. И так далее. в нашей стране везде так. Работать никто не хочет и делается все через жопу. Потому что так проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 14:41 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafmsoftwarerпропущено... В силу универсального принципа "мне так проще". Мне проще решить сугубо клиентскую задачу на сервере, нежели учить ещё и программирование клиентов. Мне проще послать клиенского программиста, пришедшего с серверной задачей, решать её на клиенте, чем морочиться самому. Мне проще, получив от серверного программиста хамский отлуп, проглотить и уйти делать на клиенте, нежели найти способ вставить ему пистон под хвост. И так далее. в нашей стране везде так. Работать никто не хочет и делается все через жопу. Потому что так проще. Может потому. что и так работает?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:05 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafmБД всегда можно изменить. Я может не понял контекста, но большинство трехзвенок очень тесно связаны с теми же типами данных бд, и, естественно, при изменении типа(допустим размерность увеличили или num->string сделали, timestamp->date и тд) слой DAO может неадекватно отреагировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:11 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Кстати, а по сабжу, в самом деле очередь сообщений(можно глянут в сторону спецификации JMS в Java) очень похоже работает. По моему Фаулер в интеграции корпоративных приложений очень подброно остановился на очереди сообщений. Правда, все таки, одно но: -очередь сообщений оперирует сообщениями, а значит естественно, инициирует некую входную точку алгоритма каким либо действием пользователям, тогда как сабж говорит о фоновом процессе, что подразумевает несколько иную архитектуру приложения. К слову сказать, думаю. что велосипедов на эту тему хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:18 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Озверинслой DAO может неадекватно отреагировать. Вообще говоря такому слою надо делать формат цэ. Если, конечно, мы говорим о совместимых изменениях. Последние примерно 50 лет - с тех пор как придумали модульное программирование - дизайн приложений в значительной степени определяется поиском loose coupling, и если один компонент падает от незначимых изменений в другом, это говорит о необходимости срочной хирургии передних конечностей. Именно так и появляются массы уродцев, которые вроде как сделаны по науке, но если попробовать внести тривиальное изменение, оказывается, что для этого надо править в десяти местах код на трёх разных языках. Тем не менее, позволю себе упомянуть, что Валерий наверняка подразумевал и необходимое изменение клиентов в рамках "изменить БД". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:21 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
softwarerОзверинслой DAO может неадекватно отреагировать. Вообще говоря такому слою надо делать формат цэ. Если, конечно, мы говорим о совместимых изменениях. Последние примерно 50 лет - с тех пор как придумали модульное программирование - дизайн приложений в значительной степени определяется поиском loose coupling, и если один компонент падает от незначимых изменений в другом, это говорит о необходимости срочной хирургии передних конечностей. Именно так и появляются массы уродцев, которые вроде как сделаны по науке, но если попробовать внести тривиальное изменение, оказывается, что для этого надо править в десяти местах код на трёх разных языках. Тем не менее, позволю себе упомянуть, что Валерий наверняка подразумевал и необходимое изменение клиентов в рамках "изменить БД". декларативные ограничения намекают об обратном.(в рамках которых велся разговор) Боюсь, что современный софт не очень коррелирует с вашими взглядами на его развитие, в том числе последние 50 лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:30 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
softwarer, добавлю от себя, я не говорил о том, что потребуется масса изменений, я лишь о том, что изменения потребуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:30 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Озверинsoftwarer, добавлю от себя, я не говорил о том, что потребуется масса изменений, я лишь о том, что изменения потребуются. Именно так и появляются массы уродцев, которые вроде как сделаны по науке, но если попробовать внести тривиальное изменение, оказывается, что для этого надо править в десяти местах код на трёх разных языках. Я вижу обратное. Если ж вам трудно преставить, как в одном изменения в 1м модуле могут повлечь ошибки в другом - мне сказать нечего ;) Мы с вами на разных планетах живем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:34 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
ОзверинiscrafmБД всегда можно изменить. Я может не понял контекста, но большинство трехзвенок очень тесно связаны с теми же типами данных бд, и, естественно, при изменении типа(допустим размерность увеличили или num->string сделали, timestamp->date и тд) слой DAO может неадекватно отреагировать. конечно может такое случиться. Если менять, то взвесив все за и против. Это было сказано к тому, что декларативные описания для поддержания целостности нельзя применять (было сказано "крайне неразумно" ), если система развивается и логика меняется. Было сказано, что БД тоже можно всегда изменить, вплоть до отказа от декларативного описания и реализации всего этого программным способом. Никакого скрытого контекста там нет, только то о чем сказал. Просто для многих систем фраза о внесении изменений звучит как приговор, а для некоторых - обычный жизненный цикл. Зависит от того как изначально спроектировали ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 19:05 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
ОзверинЕсли ж вам трудно преставить, как в одном изменения в 1м модуле могут повлечь ошибки в другом - мне сказать нечего ;) Мы с вами на разных планетах живем. Мне это очень легко представить. Как и последующую операцию по выпрямлению рук того, кто это напрограммировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 19:21 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
softwarerОзверинЕсли ж вам трудно преставить, как в одном изменения в 1м модуле могут повлечь ошибки в другом - мне сказать нечего ;) Мы с вами на разных планетах живем. Мне это очень легко представить. Как и последующую операцию по выпрямлению рук того, кто это напрограммировал. Жаль, что весь мир не удостоился второго фаулера в вашем лице: почитал бы ваши труды или с удовольствием ознакомился с архитектурой ваших приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2011, 04:38 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
Озверинsoftwarerпропущено... Мне это очень легко представить. Как и последующую операцию по выпрямлению рук того, кто это напрограммировал. Жаль, что весь мир не удостоился второго фаулера в вашем лице: почитал бы ваши труды ...ну так и ознакомьтесь , необязательно ждать трудов от softwarer'а. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2011, 14:41 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafmОзверинпропущено... Я может не понял контекста, но большинство трехзвенок очень тесно связаны с теми же типами данных бд, и, естественно, при изменении типа(допустим размерность увеличили или num->string сделали, timestamp->date и тд) слой DAO может неадекватно отреагировать. конечно может такое случиться. Если менять, то взвесив все за и против. Это было сказано к тому, что декларативные описания для поддержания целостности нельзя применять (было сказано "крайне неразумно" ), если система развивается и логика меняется. Было сказано, что БД тоже можно всегда изменить, вплоть до отказа от декларативного описания и реализации всего этого программным способом. Никакого скрытого контекста там нет, только то о чем сказал. Просто для многих систем фраза о внесении изменений звучит как приговор, а для некоторых - обычный жизненный цикл. Зависит от того как изначально спроектировали +1 Если, уважаемый, ещё нарисует пример удачного и неудачного проектирования какой либо (вымышленной) системы в свете трассировки зависимостей приложений от структуры БД ... Короче, некие паттерны проектирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 12:32 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
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, они просто и тупо ругаются "несовместимый тип поля". Вот и весь паттерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 13:27 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
softwarerНо почему в таком случае приложение падает, когда мы меняем date на timestamp или varchar(100) на varchar(200)? Ответ: потому что придурки программисты (чаще не прикладные, а создатели фреймворков) заложили в реализацию дублирование метаинформации, логически являющейся одним фрагментом. Вместо того, чтобы получать информацию с сервера, вместо того, чтобы уметь конвертировать date в timestamp, они просто и тупо ругаются "несовместимый тип поля". Вот и весь паттерн. мне даже тяжело представить, чтобы именно фреймворки на таком лажались. Вполне реалистично выглядит для "в лоб" сделанных приложений, но у фреймворков то другие задачи. Т.е. процитированный фрагмент скорее антипаттерн ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 14:04 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
iscrafmмне даже тяжело представить, чтобы именно фреймворки на таком лажались. Ну, just for example, на таком лажались persistent fields в дельфях, во всяком случае при использовании BDE, хотя по-моему не только. Самое весёлое, что я помню - приложение при той же, нетронутой базе, и при том же, нетронутом exe-шнике, падало от мелкого патча BDE. Причина - NUMBER(*,0) поля в таблицах в этом патче стали рассматриваться не как ftInteger, а как ftFloat (или наоборот, не помню). iscrafmТ.е. процитированный фрагмент скорее антипаттерн Ну вот с этим я нисколько не спорю С этим не согласен, кажется, Озверин. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 14:20 |
|
Необычная организация бизнес-логики приложения
|
|||
---|---|---|---|
#18+
softwarer, откуда сама мысль возникла о рантайм ошибках? Вы когда модели проектируете всегда в целые типы закладываете float? И всю "математику" так же пишете? Что за эфемерные выкладки про String? А обратное изменения timestamp -> date почему не рассматриваете? Человек выбрал дата+время+тз, а сохранилась только дата+00:00:00 .. я говорил о разного рода ошибках, а не просто неадекватных. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 23:29 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1547925]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 471ms |
0 / 0 |