powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / C# webservice - асинхронные запросы
20 сообщений из 20, страница 1 из 1
C# webservice - асинхронные запросы
    #34892132
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. к сервису могут обращаться много юзеров, каждый вводит имя и пароль,
но несколько юзеров могут ввести одни и те же имя/пароль.
Сервис шлет запрос в базу и выдает результат.
Результат зависит от имени юзера.

1. Как организовать так, чтобы если два юзера с одним именем
ввели разные фразы для поиска, чтобы они получили разные (каждый свои) результаты.

При синхронном запросе и так получится, а вот при асинхронном как?

2. Клиент не на c#, а на VC++, Java потому не получается воспользоваться реализацией
c# асинхронных вызовов
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34892973
dr-Wicked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Веб-сервис имеет сингл-колл инициализация, поэтому он создаётся в количестве вызовов.
Т.е если перефразировать и обобщить вопрос - как я делаю разные пост к одной странице и ответы не путаются.

2. Примеры для POST и асинхронной загрузки есть для всех перечисленных языков. Для VC++ по-моему есть даже оплётка в ATL(могу ошибаться). Про автоматизацию жабы ничего сказать немогу - не занимался, но думаю тоже есть.

Regards
dr-Wicked
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34893474
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dr-Wicked1. Веб-сервис имеет сингл-колл инициализация, поэтому он создаётся в количестве вызовов.
Т.е если перефразировать и обобщить вопрос - как я делаю разные пост к одной странице и ответы не путаются.

2. Примеры для POST и асинхронной загрузки есть для всех перечисленных языков. Для VC++ по-моему есть даже оплётка в ATL(могу ошибаться). Про автоматизацию жабы ничего сказать немогу - не занимался, но думаю тоже есть.

Regards
dr-Wicked

По поводу "сингл-колл инициализация" согласен, и не было бы вопрсов, но как сделать асинхронный вызов метода из клиента на VC++ ?

У меня метод - вызывает процедуру на MSSQL Server и выдает результат.
Бывает не сразу выполняется, вот и хотелось бы сделать асинхронный вызов.

Можно ссылку на примеры? спасибо!
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34893650
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhно как сделать асинхронный вызов метода из клиента на VC++ ?Это по с# вопрос? Если объяснять на пальцах, асинхронный вызов реализуется с помощью синхронного в соседнем потоке.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34893718
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Winnipuhно как сделать асинхронный вызов метода из клиента на VC++ ?Это по с# вопрос? Если объяснять на пальцах, асинхронный вызов реализуется с помощью синхронного в соседнем потоке.

спасибо.
Но вопрос в том, что такое надо сделать в веб-сервисе.

Т.е. клиент на VC++:

hr = ws->Query(_T("test"));// Длинный запрос

приходится ждать выполнения.

А если сделать асинхронным, то
hr = ws->QueryAsync(_T("test"));// Длинный запрос

пускаем thread, который ждет завершения и выбирает результат

while(1)
{
hr = ws->QueryResult();
}

так вот и вопрос, как реализовать такие методы в вебсервисе на шарпе?
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34893764
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhтак вот и вопрос, как реализовать такие методы в вебсервисе на шарпе?
Какие "такие" методы? Клиент сам может вызвать метод вебсервиса асинхронно, для этого у него (клиента) все есть (прокси, с реализацией асинхронных методов).
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34893853
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhНо вопрос в том, что такое надо сделать в веб-сервисе.асинхронные запросы реализуются средствами клиента, а не сервера.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34893958
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo WinnipuhНо вопрос в том, что такое надо сделать в веб-сервисе.асинхронные запросы реализуются средствами клиента, а не сервера.

я бы так категорично не заявлял.

Почему не сервера?
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894042
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что на клиенте это седлать проще и логичнее. Но в принципе можно и на сервере сделать, но это уже не асинхронный вызов будет, а скорее автоматизированная транзакция, например, согласование документа по различным инстанциям и т.п. То есть создаётся, условно говоря, документ, который далее, условно говоря, живёт своей жизнью, а клиент может проверять статус документа. Как это организовать, думаю, должно быть понятно.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894074
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoпотому что на клиенте это седлать проще и логичнее. Но в принципе можно и на сервере сделать, но это уже не асинхронный вызов будет, а скорее автоматизированная транзакция, например, согласование документа по различным инстанциям и т.п. То есть создаётся, условно говоря, документ, который далее, условно говоря, живёт своей жизнью, а клиент может проверять статус документа. Как это организовать, думаю, должно быть понятно.

да, конечно.

Хотелось бы такого в методе на сервере:
AsyncCallback callback = new AsyncCallback(HandleCallback);
IAsyncResult result = gcmd.BeginExecuteReader(callback, gcmd);

и плюс функция HandleCallback. Т.е. запустил на выполнение процедуру и другим методом можно
проверить состояние, забрать результат или сделать ей cancel.

Такое есть для SQL server NET провайдера.
Но я использую в методе NET провайдер для PGSQL, а там не реализовано такое....
с этого и вопрос возник...
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894526
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем? Выполняй синхронно. В веб-сервисе или в демоне.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894624
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoзачем? Выполняй синхронно. В веб-сервисе или в демоне.

можно, натюрлих...И дать юзеру возможность самому разбираться с асинхронностью.

Но хотелось бы отдать юзеру методы, которые не будут держать его и методы для проверки состояния и т.д....
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894679
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это у тебя типа один такой мегадолгий sql запрос?
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894692
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда как я и сказал – выполняешь синхронно в демоне, веб-сервис будет только помещать запросы демону в очередь и возвращать юзеру идентификатор запроса.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34894697
stateless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WinnipuhНо хотелось бы отдать юзеру методы, которые не будут держать его и методы для проверки состояния и т.д....Вообще-то веб-сервисы как раз и задумывались как объекты без состояния. Что, впрочем, не исключает возможности его иметь. Вопрос - нафига? Так что организовывайте себе асинхронность на клиенте.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34895617
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stateless WinnipuhНо хотелось бы отдать юзеру методы, которые не будут держать его и методы для проверки состояния и т.д....Вообще-то веб-сервисы как раз и задумывались как объекты без состояния. Что, впрочем, не исключает возможности его иметь. Вопрос - нафига? Так что организовывайте себе асинхронность на клиенте.

если будет на сервере, то я смогу сделать cancel выполняющейся процедуре или запросу, если на клиенте, то не вижу как:

запрос стартовал на сервере, в сервисе, коннекция к серверу баз там же, и в общем не добраться к выполняющейся команде
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34899034
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh
если будет на сервере, то я смогу сделать cancel выполняющейся процедуре или запросу, если на клиенте, то не вижу как:

запрос стартовал на сервере, в сервисе, коннекция к серверу баз там же, и в общем не добраться к выполняющейся команде

А так ли это нужно?
Может все-таки будет дстаточно, что клиент может отменить свое ожидание (а сервис уж аусть доработает)?

Просто то, что Вы хотите, сделать можно, но
а) это довольно сложно (много вручную придется делать)
б) не очень-то укладывается в парадигму web-сервисов.

Основная проблема в вашей задаче с асинхронными сервисами - как клиент узнает, что операция завершилась?
Здесь есть 3 основных варианта:
1) Синхронный режим - клиент ждет завершения операции и получает ответ.
2) Обратные вызовы. Клиент запускает операцию, получает назад управление, спокойно работает, а когда сервис отработает, он вызывает клиента.
3) Неблокируемый вызов + периодический опрос. Клиент вызывает операцию, в ответ сразу же получает некий уникальный билет для своей заявки, затем он начинает с помощью этого билета производить периодические опросы - завершилась ли операция.

Самый лучший вариант 1. Если нужна асинхронность - делайте на клиенте.

Для варианта 2 проблема, что Вам нужно, по сути не клиент-серверное, а сервер-серверное общение. На базе HTTP это можно сделать только через обратный коннект (т.е. подключение будет создавать сервер), в противном случае это будет вариантс способа 1. А свои подключения на клиента это не есть хорошо. Ладно, если у вас корпоративная сеть для которой Вы можете выставлять любые требования, а если нет, то админиы убьются с настройкой (одних файерволлов им уже хватит!).
Кроме того, не забывайте, что нужно еще какую-то внятную дигностику для случая, если у сервер не сможет в какой-то момент достучаться до Вашего клиента.

Вариант 3 самый тяжелый, пожалуй. Т.к. вам нужно самостоятельно организовывать некую очередь обработки, а потом неопределенное вермя хранить результаты (вы ведь не знаете когда за ними придет клиент). Да и на клиенте не понятно с какой периодичностью делать опрос...

В общем, повторюсь еще раз - попробуйте обойтись вариантом 1.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34899293
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
МихаилР
Первый вариант - стандартное клиент-серверное приложение с синхронным получением результата. Асинхронность в данном случае реализуется в рамках самого клиента и не имеет к асинхронному обмену ни какого отношения.
Второго варианта не существует - это надуманная проблема. Объясню почему. Если клиент должен быть оповещен немедленно, то он (в любом случае) должен быть доступен и не имеет смысла пытаться подключаться к нему со стороны сервера, так как клиент сам может быть постоянно подключен. При этом получаем первый вариант. Если клиенту нет необходимости в экстренном оповещении, то тогда он может сам подключаться время-от-времени, что бы проверить готовность результата - переходим к третьему варианту.
Третий вариант только кажется тяжелым. На самом деле, достаточно просто сделать state-машину и результат отдавать не клиенту, а сохранять на локально вместе с состоянием и идентификатором запроса. Проблема ресурсов здесь выливается всего лишь в проблему размера дискового пространства и определения длительности хранения результата.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34899298
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
Добавлю к вышесказанному (про третий вариант) На самом деле, третий вариант выливается в тот же первый с одним отличием - на стороне сервера работает клиентский агент, который от имени клиента ждет завершения синхронного запроса, после чего сохраняет свое состояние.
...
Рейтинг: 0 / 0
C# webservice - асинхронные запросы
    #34899801
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 +2:

вот приблизительно то, что мне надо. Время жизни можно определить и пустить worker thread пусть выбивает протухшие.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / C# webservice - асинхронные запросы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]