|
|
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Кифирчикiscrafmда можно взять самый банальный пример. В товарах по заданному условию заменить значение категории товара. ну... я думал вы покажете сложное условие с переменным колличеством параметров зачем? достаточно банального ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 13:30 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmdrevпроверка, что значение входит в границы диапазона , это валидация или верификация? верификация There are several types of data validation . •Data type validation. • Range checking . •Code checking. •Complex validation. http://msdn.microsoft.com/en-us/library/aa291820(VS.71).aspx Вы согласны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 13:37 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
dreviscrafmdrevпроверка, что значение входит в границы диапазона , это валидация или верификация? верификация There are several types of data validation . •Data type validation. • Range checking . •Code checking. •Complex validation. http://msdn.microsoft.com/en-us/library/aa291820(VS.71).aspx Вы согласны? без привязки к контексту - вполне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 13:55 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
...и тут мне вспомнился фон-нейман, в частности его 3й принцип . Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:00 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
drev, многие путают эти понятия. у них даже определения, в том же ISO практически одинаковые. Несколько "но"... 1. верификация всегда выполняется до валидации, ни никак не наоборот 2. если верификация говорит, что да, данные соответствуют, то валидация подтверждает результаты верификации... утверждает, фиксирует.. как больше нравится, смысл от этого не меняется. если, допустим, на клиенте выполняется верификация правильности исходных данных для транзакции (проверка на соответствие заданным ограничениям), то процедура валидации, выполнив транзакцию и доказав тем самым их правильность, подтверждает это. Слово "доказав" - ключевое для понимания различий в этих двух терминах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:05 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Кифирчикух... действительно... лочить из клиента, с хинтами... покажите пример, перепишите на СП ту процедуру, которую я привел в пример... хотябы примерно.. на знакомо вам языке мне правда очень интересноНу учитывая то, что смысл половины выполняемых вами в этой процедуре действий мне вообще не понятен. Зачем делается блокировка двух таблиц я понять не смог, уровень изоляциив serialazable для такой тривиальной задачи мне бы и в страшном сне не приснился. Ну а загадочные манипуляции с ERROR_NUMBER... Возможно тут специфика MSSQL. Я попытаюсь вкратце описать понятный мне смысл: задача процедуры - вставить запись в таблицу избежав появления дубликатов. При этом выполняется фиксация транзакции. Есть еще манипуляции с логгированием, но это вообще в стандартном обработчике исключений должно быть и к вставке записей в конкретную таблицу относиться не должно. Если задача действительно такова, то для ее выполнения в Oracle я бы просто повесил unique на таблицу и сделал простой инсерт обрамив его try-catch блоком для того, чтобы отформатировать сообщение об ошибке. На Java это будет выглядеть примерно так (ни компилировать, ни выполнять не пытался) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:18 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
можно на примере любой системы резервирования билета на авиарейс посмотреть (несколько лет уже не пользуюсь услугами билетных касс для этой цели). Первым делом выполняется верификация данных для транзакции резервирования. Проверяются пункты отправления и назначения, доступность выбранного рейса на требуюмую дату, наличии мест выбранного класса (предварительно на момент запроса, естественно) и т.д. и т.п. Для этого на "клиента" подтягивается вся необходимая информация. После подтверждения оплаты выполняется окончательная валидация и резервирование, клиент получает доказательство того, что место в салоне зарезервированно, в виде электронного билета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:19 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
сорри за опечатки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:21 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyВозможно тут специфика MSSQL. Я попытаюсь вкратце описать понятный мне смысл: задача процедуры - вставить запись в таблицу избежав появления дубликатов. При этом выполняется фиксация транзакции. Есть еще манипуляции с логгированием, но это вообще в стандартном обработчике исключений должно быть и к вставке записей в конкретную таблицу относиться не должно. Если задача действительно такова, то для ее выполнения в Oracle я бы просто повесил unique на таблицу и сделал простой инсерт обрамив его try-catch блоком для того, чтобы отформатировать сообщение об ошибке.Нет здесь никакой специфики MSSQL, только специфика девелопера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:59 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ChAНет здесь никакой специфики MSSQL, только специфика девелопера.Я это подозревал, но не был на 100% уверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 16:36 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyНу учитывая то, что смысл половины выполняемых вами в этой процедуре действий мне вообще не понятен. Зачем делается блокировка двух таблиц я понять не смог, уровень изоляциив serialazable для такой тривиальной задачи мне бы и в страшном сне не приснился. Ну а загадочные манипуляции с ERROR_NUMBER... Возможно тут специфика MSSQL с уровнем изоляции, наверно и в правдо "жесковато", и именно для одно инсерта это лишнее, а все остальное придумал не я http://msdn.microsoft.com/ru-ru/library/ms179296(SQL.90).aspx примерно по середине страницы Следующие сценарии кода для сеанса 1 и сеанса 2 выполняются одновременно.... ... Ошибка жертвы взаимоблокировки приведет к тому, что управление внезапно будет передано блоку CATCH и транзакция перейдет в нефиксируемое состояние. Внутри блока CATCH жертва взаимоблокировки может выполнить откат транзакции и вновь пытаться обновить таблицу до тех пор, пока процесс обновления не завершится успешно или пока не будет исчерпан лимит попыток. К прекращению попыток обновления таблицы приведет то из перечисленных событий, которое наступит первым. меня по правде и интерисовало каким образом вы реализуете что написано выше, а не параметризированный запрос. Хотя, познавательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 16:47 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyChAНет здесь никакой специфики MSSQL, только специфика девелопера.Я это подозревал, но не был на 100% уверен.Да за одно это Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 17:14 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ChABogdanov AndreyChAНет здесь никакой специфики MSSQL, только специфика девелопера.Я это подозревал, но не был на 100% уверен.Да за одно это Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ChA, ваш поступок низок. В теме обсуждают "Где должна лежать бизнес-логика в мнгоуровневом приложении". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 17:41 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
web_fox ChA, ваш поступок низок. В теме обсуждают "Где должна лежать бизнес-логика в мнгоуровневом приложении". web_foxВижу, что вы не понимаете этих вещей просто по неопытности. Это не в обиду, но вопросы выглядят просто незрелыми, да ещё с оттенком задаваки[/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 17:46 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
web_foxChA, ваш поступок низок. В теме обсуждают "Где должна лежать бизнес-логика в мнгоуровневом приложении". web_fox во, видно опытного человека. web_fox, Вас задело то, что человека, которого вы при виде приведенного выше текста назвали опытным, кто-то посмел немного покритиковать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 17:54 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ChA, ну вы хоть объясните что там такого страшного, ни как не пойму ваших загадочных намеков. нули в null превратил? так мне в дальнейшем удобнее, либо цифры(не нули), либо null очень обидело когда я не правильно мантру про блокировки сказал? каюсь, так и не выловил кто кого лочит, и решил чтоб наверняка, все операции обернул в TRY, уровень SERIALIZABLE и WITH(TABLOCK) всех "зависимых" таблиц что ещё? вы там кстати ещё одну ошибку не заметили эх, рано ещё мне к вам в падаваны, недорос... пойду учить мантры iscrafm...кто-то посмел немного покритиковать... давайте давайте... кто что ещё хочет сказать по поводу моей специфики... в смысле квалификации? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 20:14 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafm Верификацию действительно делают на клиенте. Валидацию тоже конечно можно, если система для монопольного использования. Очень, очень красивое решение - валидация на клиенте. Вам бы банковское ПО проектировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 20:15 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Кифирчикменя по правде и интерисовало каким образом вы реализуете что написано выше, а не параметризированный запрос. Хотя, познавательно.Если на пальцах, то при вставке записи в таблицу имеющую уникальный индекс СУБД сама блокирует необходимые ветви индекса обеспечивая отсутствие дубликатов вне зависимости от числа одновременно работающих пользователей. Если несколько сессий одновременно попытаются вставить одно и то же значение, то вторая из них повиснет на блокировке вплоть до завершения транзакции в первой. А после commit или rollback в первой выдаст либо сообщение о нарушении уникальности, либо позволит вставить. Если же разные сессии вставляют непротиворечащие друг другу записи, то никаких ожиданий не будет. Если же речь о взаимной блокировке (deadlock), то тут несколько сложнее, но и возникает такая блокировка нечасто (и решается обычно не специальной ручной блокировкой чего-то, а более аккуратным отношением к последовательности выполнения операторов), а уж при вставке единственной записи внутри транзакции получить такое и вовсе невозможно. Но ликбез по deadlock я проводить не буду - это в рамки одного поста вряд ли влезет. Написанное к Oracle относится, но думаю, что и в других СУБД поведение похоже. КифирчикChA, ну вы хоть объясните что там такого страшного, ни как не пойму ваших загадочных намеков. нули в null превратил? так мне в дальнейшем удобнее, либо цифры(не нули), либо null Страшно, то что вы производите сравнение с null-значением и, видимо, даже не подозреваете о подводных камнях встречающихся при этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 20:55 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ОКСiscrafm Верификацию действительно делают на клиенте. Валидацию тоже конечно можно, если система для монопольного использования. Очень, очень красивое решение - валидация на клиенте. Вам бы банковское ПО проектировать. а что, банковское ПО стало однопользовательское? Не встречал. Поделитесь ссылкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 21:02 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ОКСiscrafm Верификацию действительно делают на клиенте. Валидацию тоже конечно можно, если система для монопольного использования. Очень, очень красивое решение - валидация на клиенте. Вам бы банковское ПО проектировать. хотя подумал и нашел объяснение. Похоже просто загадочный ОКС не совсем понимает о чем говорит. Другого объяснения не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 21:07 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafm[quot ОКС][quot iscrafm] а что, банковское ПО стало однопользовательское? Не встречал. Поделитесь ссылкой? Считаю, что проектировщик, который выносит валидацию на сторону клиента с таким же успехом справится и с банковским ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 21:09 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ОКСiscrafm[quot ОКС][quot iscrafm] а что, банковское ПО стало однопользовательское? Не встречал. Поделитесь ссылкой? Считаю, что проектировщик, который выносит валидацию на сторону клиента с таким же успехом справится и с банковским ПО. и я так считаю. Вроде по-русски написано. Или загадочный ОКС не совсем понимает по-русски? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 21:11 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmхотя подумал и нашел объяснение. Это хороший, годный метод. Не стесняйтесь его использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 21:12 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
ОКС, что сказать то хотели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 21:14 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36487973&tid=1542824]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 508ms |

| 0 / 0 |
