#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 хозяин, конечно.