ASP.NET Scheduler
6 отговора
126 прегледа
ASP.NET Scheduler
Значи трябва ми нещо от сорта на scheduler, т.е. да задейства на дадена дата/час дадено събитие. Може и едно събитие с входни параметри. Само че не открих нищо което да касае тази тематика, освен използването на колбека на Кеш обекта. Прибавя се обект в кеша и му се дава таймспан след който се маха и може да задейства колбек. хубаво, ама тва може да работи само в рамките на 1 година... (мисля че толкова беше...) имате ли някакви идеи как мога да го направя?
Благодаря предварително
Ние сме точици във вселената. А всеки човек е една цяла вселена...
Благодаря предварително
Ние сме точици във вселената. А всеки човек е една цяла вселена...
Re: ASP.NET Scheduler
Значи, това което измислихме за последния проект с цел да върши твоята работа е следното: пуснахме един сървис, който се включва на определен период (примерно веднъж на ден ако трябва да се schedule-ва големи периоди от време) и той да върши каквото трябва.
Това е направено и работи - само дето уеб сървъра ни е dedicated и може да си слагаме каквото ни потрябва. Сървиса проверява в базата данни на кой клиент трябва да се изпрати е-мейл в зависимост от определени правила (например националния му празник) и когато стане време пощата "хвърчи"...
А според мен кеша не е много добро място за подобни неща, защото може да се "изпразни" във всеки момент - не само като ми доиде тайм спан-а. И от друга страна той не е направен за тази цел и употребата му по такъв начин може да се брои за hack.
The road to hell is full of good intentions...
Това е направено и работи - само дето уеб сървъра ни е dedicated и може да си слагаме каквото ни потрябва. Сървиса проверява в базата данни на кой клиент трябва да се изпрати е-мейл в зависимост от определени правила (например националния му празник) и когато стане време пощата "хвърчи"...
А според мен кеша не е много добро място за подобни неща, защото може да се "изпразни" във всеки момент - не само като ми доиде тайм спан-а. И от друга страна той не е направен за тази цел и употребата му по такъв начин може да се брои за hack.
The road to hell is full of good intentions...
Re: ASP.NET Scheduler
аз имам един таймер който така или ина4е се стартира на определено време (примерно 15 минути), така че отдавна ми хрумна идеята да ползвам него. Явно така ще стане, като няма друг начин...
Ние сме точици във вселената. А всеки човек е една цяла вселена...
Ние сме точици във вселената. А всеки човек е една цяла вселена...
Re: ASP.NET Scheduler
Доста добър въпрос - аз даже си поиграх малко да потърся как се справят с това комерсиалните компоненти и от това, което видях, използват се именно Уиндоус сървиси, които се събуждат отвреме-навреме и правят това, което искаш. Тоест подхода на Вал е ок и очевидно така се прави, само дето не знам на нормален (shared) хостинг това точно как ще стане. Трябва да имаш права да инсталираш сървиса.
Има и по-лесни начини. Примерно слагаш си функционалността, която искаш в нормално конзолно приложение и си нагласяш от Контрол Панела на Уиндоуса Scheduler-a да го вика когато поискаш. Пак може да има проблеми с хостинга обаче.
Ако имаш SQL Server, има scheduling също - можеш да викаш сторната процедура както си го сетнеш от Ентерпрайз Менажера. Ако е за пращане на майли - има една вградена процедура, която май се казваше xp_sendmail и можеш да пращаш мейли директно през SQL Server. Но това също зависи дали хостинга ти го поддържа.
А това за кеш-а - за пръв път чувам кеш да може да се използва по такъв начин. Ти пробвал ли си го това? Работи ли? На мене ми изглежда като доста брутален хак.
Има и по-лесни начини. Примерно слагаш си функционалността, която искаш в нормално конзолно приложение и си нагласяш от Контрол Панела на Уиндоуса Scheduler-a да го вика когато поискаш. Пак може да има проблеми с хостинга обаче.
Ако имаш SQL Server, има scheduling също - можеш да викаш сторната процедура както си го сетнеш от Ентерпрайз Менажера. Ако е за пращане на майли - има една вградена процедура, която май се казваше xp_sendmail и можеш да пращаш мейли директно през SQL Server. Но това също зависи дали хостинга ти го поддържа.
А това за кеш-а - за пръв път чувам кеш да може да се използва по такъв начин. Ти пробвал ли си го това? Работи ли? На мене ми изглежда като доста брутален хак.
Re: ASP.NET Scheduler
За съжаление нито сторд процедурата, нито пращането на мейлове ме касаят. най общо казано на някаква дата трябва да се сетне определено пропърти на определен обект. може и на много обекти - зависи колко от тях са нагласени за тая дата...
А това за кеша - да, пробвал съм го - виж как се адва към Кеш обекта - може да се зададе таймспан за който е валиден обекта, както и колбек функция. Дали е хак - не знам, но друго нищо не успях да намеря с подобно действие...
Всъщност може - примерно за всеки такъв сцхедулед обект си пресмяташ таймспана и му пускаш един таймер, ама ако имаш например 1000 такива обекта (а в конкретния случай това може да се случи като едното нищо) подозирам че сървера бая ще се смахне...
Ние сме точици във вселената. А всеки човек е една цяла вселена...
А това за кеша - да, пробвал съм го - виж как се адва към Кеш обекта - може да се зададе таймспан за който е валиден обекта, както и колбек функция. Дали е хак - не знам, но друго нищо не успях да намеря с подобно действие...
Всъщност може - примерно за всеки такъв сцхедулед обект си пресмяташ таймспана и му пускаш един таймер, ама ако имаш например 1000 такива обекта (а в конкретния случай това може да се случи като едното нищо) подозирам че сървера бая ще се смахне...
Ние сме точици във вселената. А всеки човек е една цяла вселена...
Re: ASP.NET Scheduler
Не знам точно как са направили таймерите на ниско ниво (ще проверя като имам време), но на мен ми се вижда най-логично да се пуска отделен thread за таймера и да се слийп-ва за периода на таймера. Това по принцип не би трябвало да забави много приложението, но от друга страна това са си 1000 threads ;-)
The road to hell is full of good intentions...
The road to hell is full of good intentions...
Re: ASP.NET Scheduler
Както се казваше в Inside C#, нишките трябва да се използват само когато е необходимо. 
Ние сме точици във вселената. А всеки човек е една цяла вселена...
Ние сме точици във вселената. А всеки човек е една цяла вселена...