Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruПричем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения?Ну как ты без запроса к БД определишь уникальность введённого значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя. Проверку уникальности логина ты кстати не реализовал. Но не в этом суть. Теперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе. Надо просто проверить и положить в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruПричем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения?Ну как ты без запроса к БД определишь уникальность введённого значения?Ну он засунет в модель регистрации ссылку на репозиторий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:25 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КСобственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту. Когда наконец ты поймёшь, что "ошибка" и "невалидные данные" -- это вещи кардинально разные, то всё станет на свои места. Для чего придумали исключения? Чтобы была возможность обработать нештатные ситуации. Для обработки данных, полученных от пользователя была придумана валидация. Если пользователь при регистрации ввёл некорректный логин -- это не является ошибкой, это штатная ситуация, которая предусмотрена логикой регистрации пользователя. Ошибка, это попытка вставить запись с некорректным логином, в нормальной ситуации до этого не должно доходить. Но и нельзя полностью полагаться на валидацию. Всегда надо дополнительно проверять данные в бизнес-логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну как ты без запроса к БД определишь уникальность введённого значения?Ну он засунет в модель регистрации ссылку на репозиторий.Ну будет обработка исключений на уровне валидатора, а не на уровне фильтра контроллера. Это ничего не меняет, внутри модели ошибку обычно удобнее пробрасывать исключением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КСобственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту. Когда наконец ты поймёшь, что "ошибка" и "невалидные данные" -- это вещи кардинально разные, то всё станет на свои места. Для чего придумали исключения? Чтобы была возможность обработать нештатные ситуации. Для обработки данных, полученных от пользователя была придумана валидация. Если пользователь при регистрации ввёл некорректный логин -- это не является ошибкой, это штатная ситуация, которая предусмотрена логикой регистрации пользователя. Ошибка, это попытка вставить запись с некорректным логином, в нормальной ситуации до этого не должно доходить. Но и нельзя полностью полагаться на валидацию. Всегда надо дополнительно проверять данные в бизнес-логике. При проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД? Это можно обсуждать вечно. В моём случае использование исключений существенно упрощает программу - поэтому я их использую. Как только появится вред от исключений - я сразу же откажусь от них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КВ моём случае использование исключений существенно упрощает программу - поэтому я их использую.Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Алексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КПри проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД? Обязательно проверим. Закладывать ошибки, которые сыпятся из БД в работу бизнес-логики будет только совершенно на всю голову отмороженный дегенерат. Алексей КЭто можно обсуждать вечно. В моём случае использование исключений существенно упрощает программу - поэтому я их использую. Как только появится вред от исключений - я сразу же откажусь от них. Переубеждать тебя не собираюсь. Хочется только отметить, что это крайне убогое и отвратительное решение для тех новичков, кто читают топик. Чтобы не повторяли за тобой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей КВ моём случае использование исключений существенно упрощает программу - поэтому я их использую.Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Это используется на уровне фильтра [api]контроллера. Алексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)[/quot]И не такое бывало. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)И не такое бывало. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КПри проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД? Обязательно проверим. Закладывать ошибки, которые сыпятся из БД в работу бизнес-логики будет только совершенно на всю голову отмороженный дегенерат.И причины будут озвучены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?Уникальность определяется по коду ошибки в SqlException при попытке сделать insert/update. А e-mail тут причём? Разумеется, валидность e-mail определяется не на уровне БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?Уникальность определяется по коду ошибки в SqlException при попытке сделать insert/update. А e-mail тут причём? Разумеется, валидность e-mail определяется не на уровне БД.Сори, невнимательно прочитал, секундочку... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КИ причины будут озвучены? Причины просты и банальны: целостность данных в БД ≠ целостность бизнес-данных. Это должен понимать даже джуниор, а опытному разработчику смешивать эти понятия непростительно, вплоть до увольнения без выходного пособия. Пусть идёт в говноконторы, коих как я вижу предостаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?В этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КИ причины будут озвучены? Причины просты и банальны: целостность данных в БД ≠ целостность бизнес-данных.Из непонятого... Нужен список конкретных негативных эффектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КВ этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. Ты уж извини, но это ПОЛНЫЙ п....ц. Если бы у нас во время ревью обнаружилось бы что-то подобное, разраб уже завтра бы уже был выброшен на рынок труда, нах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КНу как ты без запроса к БД определишь уникальность введённого значения? Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель? skyANAcodearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя. Проверку уникальности логина ты кстати не реализовал. Но не в этом суть. Я тебе идею написал, а не реализацию конкретной задачи. skyANAТеперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе. Надо просто проверить и положить в базу. Если в процессе участвуют n-систем, необходим единый шлюз. Например, REST сервис. В методе валидации модели (или через ремоут атрибут) у тебя будет на лету дергаться сервис, который будет делать проверку. В чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КВ этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. Ты уж извини, но это ПОЛНЫЙ п....ц. Если бы у нас во время ревью обнаружилось бы что-то подобное, разраб уже завтра бы уже был выброшен на рынок труда, нах.У меня это решение работает уже больше 10-и лет, ещё со времён C++ Builder. И пофиг мне на эстетические чувства каких-то там теоретиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей КНу как ты без запроса к БД определишь уникальность введённого значения? Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?Да я про модель в другом понимании. Ладно, проехали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, почитай тут (Application Architecture Guide v2): ВалидацияЭффективная стратегия проверки пользовательского ввода и данных имеет критически важное значение для безопасности и корректной работы приложения. Определите правила валидации пользовательского ввода и бизнес-правила, существующие в слое представления. При проектировании стратегии проверки пользовательского ввода и данных руководствуйтесь следующими рекомендациями: Проверка пользовательского ввода должна проводиться в слое представления, тогда как проверка на соответствие бизнес-правилам – в бизнес-слое. Однако если бизнес-слой и слой представления разнесены физически, логика проверки на соответствие бизнес-правилам должна дублироваться в слое представления для улучшения удобства использования и уменьшения времени отклика. Этого можно достичь с помощью метаданных или путем применения одинаковых компонентов правил проверки в обоих слоях. Проектируйте стратегию проверки, руководствуясь целью ограничить, предотвратить и очистить злонамеренный ввод. Рассматривайте шаблоны и библиотеки сторонних производителей, которые могут помочь в реализации проверки. Определяйте бизнес-правила, обеспечивающие проверку, такие как границы транзакции, и реализуйте достаточно глубокую проверку, чтобы гарантировать выполнение этих правил. Убедитесь, что правильно обрабатываете ошибки валидации и избегайте предоставления конфиденциальных данных в сообщениях об ошибках. Кроме того, обеспечьте протоколирование сбоев при проверке, что поможет при выявлении злонамеренных действий. Какие нах исключения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КИз непонятого... Нужен список конкретных негативных эффектов. Что за глупый вопрос? Возьмём того же многострадального пользователя. Очень часто вместо реального удаления записи используется поле с признаком удаления. Удалили пользователя с логином "mefazavr", значит логин должен освободиться. При наличии уникального индекса, логин останется "занятым". Если бы у тебя был опыт, ты бы такие глупости бы не спрашивал. Никогда целостность БД не используется для валидации бизнес-данных. Никогда. Только в рядах совсем уж начинающих сопливых новичков. Но это обычно с опытом проходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей К, почитай тут (Application Architecture Guide v2): ВалидацияЭффективная стратегия проверки пользовательского ввода и данных имеет критически важное значение для безопасности и корректной работы приложения. Определите правила валидации пользовательского ввода и бизнес-правила, существующие в слое представления. При проектировании стратегии проверки пользовательского ввода и данных руководствуйтесь следующими рекомендациями: Проверка пользовательского ввода должна проводиться в слое представления, тогда как проверка на соответствие бизнес-правилам – в бизнес-слое. Однако если бизнес-слой и слой представления разнесены физически, логика проверки на соответствие бизнес-правилам должна дублироваться в слое представления для улучшения удобства использования и уменьшения времени отклика. Этого можно достичь с помощью метаданных или путем применения одинаковых компонентов правил проверки в обоих слоях. Проектируйте стратегию проверки, руководствуясь целью ограничить, предотвратить и очистить злонамеренный ввод. Рассматривайте шаблоны и библиотеки сторонних производителей, которые могут помочь в реализации проверки. Определяйте бизнес-правила, обеспечивающие проверку, такие как границы транзакции, и реализуйте достаточно глубокую проверку, чтобы гарантировать выполнение этих правил. Убедитесь, что правильно обрабатываете ошибки валидации и избегайте предоставления конфиденциальных данных в сообщениях об ошибках. Кроме того, обеспечьте протоколирование сбоев при проверке, что поможет при выявлении злонамеренных действий. Какие нах исключения? "И пофиг мне на эстетические чувства каких-то там теоретиков" (ц) Я зы: не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?В этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. О как. А скрипт создания индекса как оформлен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:16 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38771693&tid=1356943]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 361ms |

| 0 / 0 |
