Я бы хотел начать использовать асинхронную обработку в IIS.Редактировать: я говорю об использовании параллельной библиотеки задач.
Например, при определенных загрузках страницы я хочу записать кучу дерьма, отправить электронное письмо, обновить некоторые таблицы и т. Д. Но я нехочу, чтобы пользователь ждал, пока я запишу всю эту хрень.
Так что обычно я делаю, что у меня есть статическая очередь, в которую я помещаю информацию журнала, и затем у меня есть задание cron, которое каждые 10 минут вызывает специальную страницу, чья OnLoad сбрасывает очередь.Это работает, но это довольно неудобно в настройке, особенно если вы хотите записать 50 вещей.Я бы предпочел сделать это:
Task.CreateNew(() => Log(theStuff));
Тем не менее, я боюсь выполнения задач в IIS, потому что один сбой и весь ваш сайт выходит из строя.
Так что теперь у меня есть
SafeTask.FireAndForget(() => Log(theStuff));
Это оборачивает делегата в некоторый try / catch и передает его в Task.CreateNew.Поэтому, если кто-то изменяет что-то, что влияет на что-то другое, что генерирует исключение в другом месте, которое случайно генерируется в потоке задач, мы получаем уведомление вместо сбойного веб-сайта.Кроме того, уведомление об ошибке внутри catch также находится внутри собственного try / catch, и catch для этого также имеет try / catch, который пытается войти другим способом.
Теперь, когда я могу безопасно запускать вещиАсинхронно в IIS, о каких других вещах мне нужно беспокоиться, прежде чем я смогу начать использовать свой класс SafeTask?