|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 20:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550771][21550771] >И почему так? В чём плюсы? Кроме Вас с этим кто-то работает? Система не 3-х уровневая, а 5-ти. Инфопакеты надо транспортировать между слоями, некоторым уровням не должно знать их структуру. Какая разница что не 3, а 5 слоёв? У меня к примеру их 9. В C# коде можете показать как выглядить Ваш Info-пакет? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевОшибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д.ВМоисеев Код: c# 1.
Код: c# 1. 2.
Код: c# 1. 2. 3.
И где тут "инфопакет(первый байт которого не 0)" и "очередь слоя.3"? Вижу только статическую строковую переменную, в которую пишется текст ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, а, я понял, Вы прямо в поток пишите массивы байт. В случае ошибки пишете к примеру new byte[2]{4,10} . Почему решили изобрести свой велосипед, а не взяли к примеру Protocol Buffers ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 03:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553231] [21553231] >... Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика?... Да. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой. >...Отвратительный код, не понятно, что с этим wspErr делать… Блестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением Понимаю, что жующие жёлуди, не заценят апельсин. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 11:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:25 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553322][21553322] >И где тут "инфопакет(первый байт которого не 0)" и "очередь слоя.3"?... Как то Вы всё в одну кучу. На это здесь привел два примера из разных систем, на мой взгляд делающие тезис hVostt не состоятельным. В первом случае нет возможности возвратить исключение, во втором - овчинка выделки не стоит, особенно в этом случае: await Task.Run(() =>wsp.Entity_SP("NCUYAO_GIS.get_ВД", asp, DbToRow)); ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 11:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA,сегодня, 09:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553329][21553329] >а, я понял, Вы прямо в поток пишите массивы байт… Не совсем так. В общем случае, обращение к другому слою есть вызов удаленного метода WCF сервиса этого слоя: byte[] wcf_Мд(byte[]); ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 11:57 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320] [21553320] >...В C# коде можете показать как выглядить Ваш Info-пакет?... Да ради бога: //======================================================================= //-- Виды сообщений-запросов, направляемых головному серверу репликации //======================================================================= //-- 1. Байтовая строка сообщения-запроса на получение временного параметра //-- idxСессия{1}+ivСообщения{8})+RSA(keyСессия){128})+Encoder(idxКласс{2}+idxМетод{2}){?} //-- idxСессия=(byte)255; //-- idxКласс=(short)0; //-- idxМетод=0 //-- 2. Байтовая строка сообщения-запроса на получение индекса сессии //-- idxСессия{1}+ivСообщения{8}+RSA(keyСессия){128}+Encoder(idxКласс{2}+idxМетод{2}+idxСессия{1}+ВП1{8}+ВП2{8}){?} //-- idxСессия(левая)=(byte)255; //-- idxСессия(правая)=(byte)? (0<=?<255); //-- idxКласс=(short)0; //-- idxМетод=(short)1 //-- ВП1 - время формирования головным сервером репликаций сообшения-ответа //-- ВП2 - время формирования периферийным сервером репликаций сообшения-запроса //-- 3. Байтовая строка сообщения-запроса на передачу сообщения от периферийного к головному //-- idxСессия{1}+ivСообщения{8}+Encoder(Компрессор(idxТип{1}+idxКласс{2}+idxМетод{2}+btПараметры{?}){?}){?} //-- idxТип=(byte)0; //-- idxСессия=(byte)? (0<=?<255); //-- idxКласс=(short)? //-- idxМетод=(short)? //-- 4. Байтовая строка сообщения-запроса на передачу сообщения от головного к периферийному //-- idxСессия{1}+ivСообщения{8}+Encoder(Компрессор(idxТип{1})){?} //-- idxТип=(byte)255; //-- 5. Байтовая строка ошибки //-- btErr{?} //-- btErr[0]!=(byte)0 //-- Виды сообщений-ответа, возвращаемых головным сервером репликации для периферийного сервера репликаций //-------------------------------------------------------------------------------------------------------- //-- 1. Не ошибка //-- btErr{1}+ivСообщения[8])+Encoder(Компрессор(idxКласс{2}+idxМетод{2}+btПараметры{?}){?}){?} //-- btErr[0]=0; //-- idxКласс=(short)? //-- idxМетод=(short)? //-- 2. Байтовая строка ошибки //-- btErr{?} //-- btErr[0]!=(byte)0 //-- Вид сообщений-запросов генерируемых сервером приложения для периферийного сервера репликаций //----------------------------------------------------------------------------------------------- //-- Info <-- Компрессор(idxКласс{2}+idxМетод{2}+btПараметры{?}){?} //-- idxКласс=(short)? //-- idxМетод=(short)? //-- Виды сообщений-ответа, возвращаемых периферийным сервером репликации для сервера приложения //-------------------------------------------------------------------------------------------------------- //-- 1. Не ошибка //-- btErr{1}=(byte)0; //-- 2. Байтовая строка ошибки //-- btErr{?} //-- btErr[0]!=(byte)0 или Вас интересует программный код формирования ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320][21553320] >Какая разница что не 3, а 5 слоёв? У меня к примеру их 9... Какую информацию Вы передаете между слоями? У меня упакованный шифрованный инфопакет (byte[]). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Исключения... коды возвратов.... с рукожопами что делать? 1) Вчера качаю мозиллой файл, кончается место на целевом диске. Если открыть список, напротив закачки появляется Failed. И все. Хрен знает, в чем проблема, думал сервер не отдает, пытался перезапускать, открывал заново и начинал качать заново, прежде чем дошло. 2) Сегодня передаю файл через TeamViewer. В целевой папке такой файл уже есть, я расчитывал просто подтверить перезапись. Хрен. Никаких ошибок, висит задание, прогресс 0%, никаких сообщений. А ведь это не студенческие поделки.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>hVostt, сегодня, 03:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553231] [21553231] >... Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика?... Да. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой. >...Отвратительный код, не понятно, что с этим wspErr делать… Блестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением Понимаю, что жующие жёлуди, не заценят апельсин. Нет, код реально не читаемый и плохой. Почитайте что-нибудь по принципы проектирования кода, про чистый код, красивый код, совершенный код, идеальный код. Написано об этом для инженеров, а не свиней, про которых Вы тут нелепо намекаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProИсключения... коды возвратов.... с рукожопами что делать? 1) Вчера качаю мозиллой файл, кончается место на целевом диске. Если открыть список, напротив закачки появляется Failed. И все. Хрен знает, в чем проблема, думал сервер не отдает, пытался перезапускать, открывал заново и начинал качать заново, прежде чем дошло. 2) Сегодня передаю файл через TeamViewer. В целевой папке такой файл уже есть, я расчитывал просто подтверить перезапись. Хрен. Никаких ошибок, висит задание, прогресс 0%, никаких сообщений. А ведь это не студенческие поделки.... Что делать, что делать. Таски заводить на исправление ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320][21553320] >Какая разница что не 3, а 5 слоёв? У меня к примеру их 9... Какую информацию Вы передаете между слоями? У меня упакованный шифрованный инфопакет (byte[]). Разную. И текстовую, и бинарную. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:47 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
И шифрованную ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, а зачем ты эту портянку передаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 12:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553631][21553631] >Нет, код реально не читаемый и плохой. 1. Хороший, плохой... Где критерии. Приведите Ваш код. Задача то хорошо формализована - получить выборку из базы, вызвав хранимую процедуру в ней. 2. Не я начинаю ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 12:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553669][21553669] >И шифрованную… Как? У меня обмен информацией в следующим слоем есть вызов удаленного метода WCF_сервиса: byte[] wcf_Мд(byte[]); Метод возвратит либо ошибку, либо полезную информацию. У Вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 12:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553631][21553631] >Нет, код реально не читаемый и плохой. 1. Хороший, плохой... Где критерии.Принципы SOLID, тестируемость, читаемость... ВМоисеевПриведите Ваш код. Задача то хорошо формализована - получить выборку из базы, вызвав хранимую процедуру в ней.Приводил уже и Вам понравилось: 20604487 ВМоисеев2. Не я начинаюИменно Вы переходите на личности, хотя критика звучит в сторону кода, а не Вас лично. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>ViPRos, сегодня, 13:18 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553721][21553721] >а зачем ты эту портянку передаешь? Вы о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:47 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 12:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553669][21553669] >И шифрованную… Как?Да по разному... на базе MD5, SHA-1, SHA-256, RNG и RSA ВМоисеевУ меня обмен информацией в следующим слоем есть вызов удаленного метода WCF_сервиса: byte[] wcf_Мд(byte[]); Метод возвратит либо ошибку, либо полезную информацию. У Вас?Есть и WCF, и REST API, и очереди... Сейчас вот GraphQL пробуем, там ExecutionResult ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 13:45 >Принципы SOLID, тестируемость, читаемость.. >Приводил уже и Вам понравилось:... Рассматривая Ваш код, не понимаю, в каком потоке он будет выполняться и смогу ли показать ПрогресБар в UI потоке. Не понимаю, как формируется контекст. Какую программную гирю Вы добавляете в Ваш код, EF? Но не называю этот код плохим или … Вам же показываю рабочий код. >Именно Вы переходите на личности… Вы не внимательно читали Трех мушкетёров Дюма. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:05 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 13:56 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553777][21553777] >Есть и WCF, и REST API, и очереди… Да меня не это интересует. Есть клиент, обменивающийся информацией с географически удаленным 1-ым слоем. Что есть обмен? У меня byte[] wcf_Мд(byte[]); У Вас что? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 13:45 >Принципы SOLID, тестируемость, читаемость.. >Приводил уже и Вам понравилось:... Рассматривая Ваш код, не понимаю, в каком потоке он будет выполняться и смогу ли показать ПрогресБар в UI потоке. Не понимаю, как формируется контекст. Какую программную гирю Вы добавляете в Ваш код, EF? Показать ProgressBar сможете показать. Гирь там нет, там же написано: Код: c# 1.
Хорошо, для Вас напишу так, чтобы было понятнее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 13:56 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553777][21553777] >Есть и WCF, и REST API, и очереди… Да меня не это интересует. Есть клиент, обменивающийся информацией с географически удаленным 1-ым слоем. Что есть обмен? У меня byte[] wcf_Мд(byte[]); У Вас что? Сигнатура метода что-ли нужна? Их не один. Ну к примеру простое получение списка валют: Task<List<Currency>> GetCurrenciesAsync(). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 14:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553838][21553838] >Хорошо, для Вас напишу так, чтобы было понятнее: Мне понятнее не стало. У меня для полного описания решения задачи получения выборки из базы данных хранимой процедурой, к надо добавить только класс сущности, который обычно определяется внутри другого класса: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
И это всё, и никаких дополнительных библиотек. Есть некоторые тонкости - в базе широта и долгота хранится не формате float, и сущность не совпадает со строкой выборки, ну а в остальном, прекрасная маркиза... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAА что проблемы с сетью? Почему правильно именно выбросить исключение? Его же кто-то должен будет обработать. А если ему по барабану на твои проблемы с сетью? Всё зависит от При любой возможности обойтись без исключений, конечно надо без них обходиться. Если ошибка определена логикой, например, валидация, отсутствие данных, отсутствие прав и т.д. Это нужно проверять и реагировать соответственно. Конечно зависит от. Но превращать исключительные ситуации в коды возврата, игнорируя механизмы исключений, которые дают больше информации об ошибке и месте её возникновения, считаю неправильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:39 |
|
|
start [/forum/topic.php?fid=20&msg=39671196&tid=1399295]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 260ms |
0 / 0 |