Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WCF служба с асинхронным выполнением
|
|||
|---|---|---|---|
|
#18+
Возникла задача - реализовать WCF службу, которая могла бы строить очередь задач и постепенно выполнять их в фоне. При этом клинетское приложение могло бы спрашивать статус задач. Проблема возникла из-за того, что методы службы могут выполняться как 1 секунду, так и 5 минут, что приводит к разрыву соединения со службой по таймауту, либо к тормозам пользовательского интерфейса. Сейчас структуту службы вижу так : 1) WCF сервис хостим как Windows Service 2) При вызове метода сервис записывает задачу в очередь в какой-то таблице SQL сервера и возвращает ИД задачи 3) В сервисе крутится какой-то код, который проверяет эту очередь на наличие не завершенных задач и выполняет их. 4) Клиент по ИД задачи может посмотреть статус (ожидает, выполняется, выполнена, ошибка) 5) Если по каким-то причинам сервер с WCF перезапускается, то при следующем старте служба опять ищет первую незавершенную задачу и начинает ее выполнять. Сомнения вызывает п.3 Возможно ли в сервисе стартовать какой-то код через какие-то промежутки времени? Или может кто вообще другой алгоритм или технологию подскажет? Всем спасибо заранее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 10:37 |
|
||
|
WCF служба с асинхронным выполнением
|
|||
|---|---|---|---|
|
#18+
используйте InstanceContextMode = Single (или Session) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 11:16 |
|
||
|
WCF служба с асинхронным выполнением
|
|||
|---|---|---|---|
|
#18+
secondstar5) Если по каким-то причинам сервер с WCF перезапускается, то нет никаких причин перезапускать процесс worker, занимающийся обработкой заданий, который отлично живет самостоятельной жизнью. Иногда даже физически на другом(их) сервере(ах). :) Вы же уже пошли по пути слабой связи (WCF). Можно и коммуникационный сервис с обработкой слегка развязать: взаимодействовать только через БД или MQ. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 11:26 |
|
||
|
WCF служба с асинхронным выполнением
|
|||
|---|---|---|---|
|
#18+
Ну я еще никуда не пошел :) Так что предложения по архитектуре принимаются. А вышеизложенный алгоритм - это просто то, что первое пришло в голову. :) _Явных_ причин перезапускать процесс нет. Но надо сделать так, чтобы в случае зависона/выруба питания/... очередь задач не потерялась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=19&fpage=33&tid=1397920]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 147ms |

| 0 / 0 |
