Re: WCF
От: sto Украина http://overstore.codeplex.com
Дата: 19.12.09 20:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть WCF сервис.. на клиенте хочу сделать возможность остановить выполнение вызванного метода, как это можно реализовать?


Сделать два метода. Один запускает асинхронную операцию на сервере, другой обрывает операцию.
Собственно, есть несколько тонких моментов.

Первый связан с асинхронным запуском метода: по умолчанию, если я не ошибаюсь, WCF создает экземпляр объекта, который предоставляет реализацию сервиса,
на каждый запрос. Соответственно, если запустите, скажем, поток, прямо из метода сервиса, то вряд ли сможете его прервать, т.к. ссылка на него потеряется.
Нужно где-то сохранить его: в статическом поле класса сервиса, в сессии, изменив InstanceContextMode, или же вообще вынеся метод, скажем, в Windows Service.
Все зависит от требований к надежности.

Второй момент — это как определить клиента, который запустил метод, т.к. сервис — это штука многопользовательская. Здесь тоже несколько решений — сессия, или же можно на каждый запуск метода создавать идентификатор, и передавать его клиенту.
There is no such thing as the perfect design.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.