Могу ли я использовать WCF для замены текущей комбинации веб-служб и оконных служб? - PullRequest
0 голосов
/ 23 апреля 2010

Мне нужно немного советов относительно ситуации, с которой я столкнулся. Нынешняя аранжировка, которую мне поручено улучшить, просто не устраивает меня, и я чувствую, что есть лучший способ сделать это. Чем больше я читаю о WCF, тем больше у меня возникает ощущение, что это может быть тем, что я ищу.

Сейчас у меня есть клиент asp.net, веб-служба .net, служба windows, база данных ms sql и стороннее приложение, которое используется для обработки группы файлов проекта в окончательный файл. , Поскольку стороннее приложение может обрабатывать только один «проект» за раз, комбинация веб-службы, оконного сервиса и базы данных была организована для создания администратора очереди заданий для стороннего приложения.

Клиент отправляет zip-файл 'project', содержащий несколько вложенных файлов, в веб-службу. Веб-сервис добавляет новую строку «проект» в базу данных, генерируя уникальный идентификатор задания. Zip-файл раскрывается в папку на сервере, используя идентификатор задания в качестве имени папки. Затем веб-служба возвращает идентификатор задания клиенту. Клиент будет использовать этот идентификатор для опроса веб-службы на предмет статуса отправленной работы. Когда работа будет завершена, клиент запросит обработанный файл.

Служба windows опрашивает базу данных каждые x минут. Если существует новое задание, служба извлечет самое старое задание и отправит его в стороннее приложение для обработки. Если обработка завершается успешно, служба окна обновляет строку проекта в базе данных, отмечая завершение работы. Оконная служба будет продолжать обрабатывать любые незавершенные задания в базе данных, пока их больше не будет. Когда он перестает находить какие-либо вакансии, он будет спать x минут, а затем снова будет опрашивать базу данных.

Мне не нравится тот факт, что оконный сервис должен опрашивать базу данных. Если отправлено только одно задание, клиенту придется дождаться опроса оконной службы, а затем подождать, пока обрабатывается «проект». Похоже, что WCF можно использовать для объединения веб-и оконных сервисов, используя комбинацию InstanceContextMode.Single и ConcurrencyMode.Multiple. До сих пор мне не удалось найти какие-либо статьи или примеры, которые указали бы мне правильное направление. Можно ли использовать WCF для лучшего выполнения логики очереди заданий текущего устройства? Как всегда, любая помощь более чем ценится.

1 Ответ

0 голосов
/ 23 апреля 2010

Я знаю, это не ответ на ваш вопрос, но если задержка (до тех пор, пока не будет обработано одно задание) - ваша единственная главная проблема с текущим решением, то почему бы просто не уменьшить интервал опроса (например, до 10 секунд)

Есть ли проблема с опросом или просто вам не нравится это решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...