|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Гугл не помог. Существуют ли в природе? Если нет, то планируется ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 19:33 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Не существует. В пределах официального проекта не планируется. Как ты его себе представляешь и зачем? Просто несколько коннектов в разных потоках не помогут?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 19:50 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Как раз ради того, чтобы не делать по коннекту на поток. С асинхронным API возможно работать с кучей соединений даже в одном потоке. А если ещё и язык поддерживает асинхронные операции, то использование такого API почти ничем не отличается от использования обычного API. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 20:01 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDenС асинхронным API возможно работать с кучей соединений даже в одном потоке. А если ещё и язык поддерживает асинхронные операции, то использование такого API почти ничем не отличается от использования обычного API. Совершенно отличается. Одна только "неприкосновенность буферов до реального выполнения операции" способна сорвать крышу каждому первому дельфину. Когда ты последний раз работал с реально асинхронным вводом-выводом, например?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 20:14 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Про неприкосновенность буферов не понял. Последний раз работал на этой неделе. Просто задействовал асинхронное api для файловых операций. Оно работает из коробки и не требует выдающихся умений у программиста ) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 20:35 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Не существует. В пределах официального проекта не планируется. Как ты его себе представляешь и зачем? Просто несколько коннектов в разных потоках не помогут?.. Видимо, речь идёт о совместимости с асинхронными конструкциями async / await некоторых современных языков программирования. Наверняка такие библиотеки имеются. Как у них организована асинхронность обращений к FB - это другой вопрос. В простейшем случае могут создавать отдельный поток на каждое обращение к БД, чтобы не блокировать главный поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 23:59 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen А если ещё и язык поддерживает асинхронные операции, то использование такого API почти ничем не отличается от использования обычного API. Сегодня выспался и понял, что вчера ночью неправильно написал. Хотел написать "использование высокоуровневой обёртки вокруг такого API почти ничем не отличается от использования обычного высокоуровнего API" Т.е. в итоге программист уже использует что-то вроде Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 10:16 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen Т.е. в итоге программист уже использует что-то вроде а какой профит? сервер же не будет всё это делать параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 11:19 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Компилятор такие конструкции компилириует таким образом, что на при ожидании await рантайм переключит выполнение этого потока на другую задачу, которая уже завершила свою асинхронную операцию (вышла из await) и готова продолжать выполнение. Таким образом всё выполняется как-бы параллельно. В реальности используется не один поток, а больше (обычно по количеству ядер или кратно в несколько раз) и поэтому без создания 100500 потоков можно работать с большим количеством задач и соединений к базе (десятки тысяч). Подобную возможность завезли уже в кучу языков. Даже в C++ добавили в последнем стандарте. Но это обсуждение уже выходит за рамки моего вопроса. Ответ был получен. Всем спасибо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 11:31 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDenпри ожидании await рантайм переключит выполнение этого потока на другую задачу, которая уже завершила свою асинхронную операцию (вышла из await) и готова продолжать выполнение. Какая это задача? В твоём примере таких не наблюдается, всё выполняется строго последовательно, полностью синхронно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 13:36 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Я показал просто пример использования API. В реальном приложении будет что-то типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Понятно что в реальности всё будет намного сложнее. Обычно создаются динамические пулы соединений и всякая другая фигня, экономящая время, но асинхронности это не отменяет. В сети много инфы для чего нужен и как устроен этот механизм в разных языках и фреймворках ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 13:46 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
А ещё там много котиков и предложений увеличить пенис. Толку-то?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 13:48 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
так node-firebird-driver асинхронный. работает как часы )) Код: javascript 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 14:00 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Если он использует синхронное родное API, то он не асинхронный, а только имитирует асинхронность. В node.js без асинхронности никуда, поэтому даже имитация сойдёт. Но у них там написано: There is also plan to create a socket-based (pure Node.js) driver. Так что возможно что будет полноценный асинхронный драйвер для ноды Если родное API не поддерживает асинхронность, то единственный способ сделать асинхронный клиент - это написать сетевой обмен самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 14:20 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDenединственный способ сделать асинхронный клиент - это написать сетевой обмен самостоятельно. Создателям драйверов для Явы, Питона и С-шарпа это удалось, так что и остальным можно брать флаг в руки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 15:04 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Надо будет посмотреть их реализацию. Интересно, где описание сетевого обмена брали? Смотрели в исходниках fb или где-то доки есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 15:19 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
https://firebirdsql.org/file/documentation/html/en/firebirddocs/wireprotocol/firebird-wire-protocol.html Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 15:24 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Спасибо. Сразу замечание. Там не написано как числа передаются: в BE или LE? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 15:31 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Ну и вызывает вопросы актуальность. Например тут: https://firebirdsql.org/file/documentation/html/en/firebirddocs/wireprotocol/firebird-wire-protocol.html#wireprotocol-databases-attach-attachment Не верится, что пароль открытым текстом по сети передаётся. Похоже лучше смотреть готовую реализацию ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 23:44 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen, это зависит от плагина аутентификации ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 09:28 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Даже до появления SRP пароль не передавался в открытом виде - только его хеш. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 10:41 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
А что насчёт BE и LE? Если посмотреть сишарпоский вариант, то там байты для отправки по сети из числа типа int32 получают вот так: Код: c# 1. 2. 3. 4.
(даже тип IPAddress для этого задействовали )) ) Я догадываюсь, то это означает BE, но хочется уточнить ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 14:22 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen А что насчёт BE и LE? Для локального протокола (XNET) нет преобразования. Для удалёного (INET) - числа передаются в сетевом порядке (htonl, ntohl) PS Смотри src\remote\protocol.cpp и src\common\xdr.cpp там ответы на 99% вопросов о протоколе. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 14:32 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
hvlad, неподготовленному глазу проще смотреть исходники не fb, а сторонних драйверов, т.к. они заточены только под одну задачу - работа в качестве клиента fb. Сегодня потратил полдня в попытке понять почему сервер не отвечает на даже первую посылку. Слава богу что по сниферу понял, что тип Buffer надо "добивать" в конце нулями до длины кратной 4 (( А ведь тут об этом вообще не слова. А я поленился посмотреть как это сделано в csharp-ском драйвере, на который сейчас ориентируюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 20:47 |
|
|
Start [/forum/topic.php?fid=40&tid=1559814]: |
0ms |
get settings: |
0ms |
get forum list: |
7ms |
check forum access: |
0ms |
check topic access: |
0ms |
track hit: |
22ms |
get topic data: |
2ms |
get forum data: |
0ms |
get page messages: |
24ms |
update_topic_read_status (1559814): 14.02.2022 23:06:50: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
18ms |
check new: |
1ms |
others: | 87ms |
total: | 161ms |
0 / 0 |