|
|
|
Необычная организация бизнес-логики приложения
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=33&msg=37600241&tid=1547925]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 371ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...