повторяющееся действие в службе данных WCF

#wcf-data-services

#wcf-data-services

Вопрос:

У меня есть веб-служба служб данных WCF, и есть некоторый код, который должен выполняться каждые 10 минут. Интересно, как я могу добиться этого, не влияя на производительность службы.

Я также был бы признателен, если бы вы могли дать мне несколько общих советов по повышению производительности службы.

Ответ №1:

Службы данных WCF на самом деле не имеют для этого никаких возможностей, они просто связаны с взаимодействием запросов OData. Следовательно, решение, которое вы ищете, скорее всего, зависит от хоста.

Если вы используете ASP.NET/IIS , существует несколько способов планирования асинхронных операций. Хотя я лично никогда не пытался выполнять такие повторяющиеся операции, я полагаю, что это было бы возможно. Посмотрите на такие вещи, как QueueBackgroundWorkItem , и рассмотрите возможность использования таймера между операциями.

При этом, ASP.NET а IIS в основном также отвечает на HTTP-запросы и, следовательно, не является (на мой взгляд) подходящим местом для планирования и выполнения повторяющихся задач. Если ваш хостинг-провайдер не разрешает доступ к базовому компьютеру, у вас может не быть выбора, хотя вам все равно следует подумать, можно ли вообще запустить операцию с другого сервера.

Теперь что касается технологии, используемой для такого рода функций; Я бы сказал, что планировщик Windows Server — это такое же хорошее место для запуска, как и любое другое (или * nix cron), хотя вы можете найти всевозможные службы для этого на всех платформах (а не только на выделенных машинах). Например, платформа Azure имеет WebJobs, которые позволяют планировать HTTP-запросы на веб-сайтах Azure, если это работает для вас.

Возможно, эта статья покажется вам интересной, поскольку в ней рассматриваются эти методы.

Комментарии:

1. Большое вам спасибо за эту ценную информацию, во-первых, я размещаю свою службу данных WCF как облачную службу в Azure через asp.net хозяин, конечно.