host3nter

آموزش: استفاده از Task Scheduler یا windows service برای وظایف زمان بندی شده

سلام. شاید برای خیلی ها پیش اومده باشه که بخوان یک سری وظایف از پیش تعیین ...

موضوع آموزش: استفاده از Task Scheduler یا windows service برای وظایف زمان بندی شده,.

ASP.NET, برنامه نویس, برنامه نویسی

تاريخ ارسال:2014/07/11

هاست سنتر سلام. شاید برای خیلی ها پیش اومده باشه که بخوان یک سری وظایف از پیش تعیین شده رو در web app خودشون اجرا کنن، میخوام با چند مثال این روش رو توضیح بدم حالاتی وجود داره وقتی یه برنامه تحت وب asp.net به اجرای یک سری کد در زمان های مشخص نیاز پیدا میکنه. که میتونه ایجاد برخی گزارش های روزانه ، ایمیل های یادآوری و تبلیغاتی به کاربرا در زمان تعیین شده ، آنلاین نگه داشتن وب سایت به وسیله صدا کردن صفحات ساختگی هر 10 دقیقه یک بار ، بک آپ گیری از دیتابیس و غیره باشه. خود asp.net راه حلی ساده و قابل اعتماد برای این مشکل نداره. اگر بخوایم فقط از asp.net استفاده کنیم برای اجرای وظایف زمانبندی شده ، باید Scheduled task رو شبیه سازی کنیم که در موارد ساده به خوبی کار میکنه. و در ضمن این تنها راه حلیه که شما پیش رو دارین وقتی از هاست اشتراکی استفاده میکنید (البته میگن Quartz.NET توی هاست اشتراکی هم خوب کار میکنه) آموزشی که میخوام بذارم تو فروم به دو قسمت تقسیم میشه استفاده از Task Scheduler یا windows service برای وظایف زمان بندی شده Scheduled task در asp.net (به زودی لینک آپدیت میشود) برای اینکه آشنا بشین با شبیه سازی Scheduled task توسط asp.net آموزش دوم رو هم دنبال کنید تنها مشکلی که با asp.net هست فقط روی متد هاشه، یعنی وقتی برنامه asp.net به دلایل متعدد ریستارت بشه یا حتی متوقف بشه ،تمام اجراهای scheduled task هم به تاخیر میفتن یا حتی اصلا دیگه اجرا نمیشن. به همین دلیل، برای اجرای وظایف مهم که در یک زمان مشخص باید اجرا بشن، توسعه دهنده ها معمولا روش های قابل اعتماد تری رو انتخاب میکنن مثل استفاده از windows service یا task scheduler خود ویندوز. اگر شما سرور اختصاصی برای web app خودتون داشته باشید، خب میتونید windows service رو روی سرور نصب کنید تا وظایف زمانبندی شده رو اجرا کنه. در سرور های اشتراکی، کاربرها معمولا نمیتونن windows service رو نصب کنن، اما شما میتونید windows service رو از روی کامیپوتر های دیگه ی سرور اجرا کنید که به صورت اتوماتیک یک webservice جدید رو براتون ایجاد میکنه. بریم سر وقت کد نویسی: using System.ServiceProcess; namespace TestWindowsService { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { } protected override void OnStop() { } } } windows service خیلی قابل اعتماد تر از scheduled taskیه که فقط با asp.net ساخته شده. چون برنامه asp.net به دلایل مختلفی احتمال داره متوقف یا ریستارت بشه. پس اگه برنامه asp.net شما در یه برهه زمانی به هر دلیلی کار نکنه، این به این معنی هست که کارهای زمان بندی شما هم اجرا نخواهند شد. (بدبختی ها از اینجا شروع میشه) دلایل مختلف زیادی وجود داره که یک برنامه asp.net ریستارت میشه، میتونه به خاطر تغییرات در web.config ، تغییرات در فولدر bin ، تغییرات در global.asax ، تغییرات در app_global_resources یا فولدر app_local_resources باشه، میتونه تغییرات به خاطر فولدر app_code هم باشه. حتی گاهی به خاطر اینکه در بعضی دوره های زمانی سایت هیچ بیننده ای نداره (معمولا بازه های زمانی شب) وب سرور برنامه asp.net رو شات دان میکنه در نتیجه وظایف زمان بندی شده دیگه اجرا نمیشن، تا یه بیننده وارد سایت بشه و وب سرور برنامه asp.net رو دوباره اجرا کنه. اجرای کد ها در win service و متدهای asp.net معمولا شبیه به هم. توی آموزش دوم (Scheduled task در asp.net) دو مثال وجود داره برای تکرار دوره های زمانی، یکی Timer و دیگری Thread. که دقیقا این ایده ها کاملا مفید و قابل استفاده در windows service هست. در واقع به جای استفاده از application_start در global.asax، از OnStart متد برای ساخت حلقه تکرار شونده استفاده میشه. کد زیر مثالی از windows serviceـه که از thread برای ساخت کلاسی استفاده میکنه که به صورت دوره ای متد ScheduledTask رو صدا میزنه using System.ServiceProcess; using System; using System.Threading; namespace TestWindowsService { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { // وقتی ویندوز سرویس اجرا بشه ترد ها ساخته میشن ThreadStart tsTask = new ThreadStart(TaskLoop); Thread MyTask = new Thread(tsTask); MyTask.Start(); } static void TaskLoop() { // توی این مثال به وسیله while حلقه به صورت بینهایت اتفاق میفته // شما میتونید یک سری پارامتر ها رو بهش اضافه کنید اگه نیاز دارید که گاهی سرویس متوقف یا ریستارت بشه while (true) { // اول متد اجرا میشه ScheduledTask(); // بعد از اجرای متد یه زمان مشخصی رو منتظر میمونه تا دوباره متد بالا رو اجرا کنه...در این کد هر یک ساعت یک بار اجرا میشه System.Threading.Thread.Sleep(TimeSpan.FromHours(1 )); } } static void ScheduledTask() { // اینجا اتفاقی که هر یک ساعت یک بار باید اتفاق بیفته رو بنویسید...میتونه صدا کردن کلاس های دیگه در لایه های دیگه و غیره باشه } protected override void OnStop() { // } } } متد OnStop وقتی اجرا میشه که سرویس متوقف شده باشه...متد OnStop خیلی میتونه ... هاست,دامین,سایت,وب,طراحی

سوال: دستوری بجای ReadLn در شبکه ایندی که بجای لاین با دریافت کلمه پایان پذیرد

نصب خودکار برنامه های جانبی

گذاشتن طرح توی themeforest.net / کسی اطلاعی داره مارو مطلع کنه لطفا

سوال: سخت تر کردن امکان خواندن کدهای سایت

سوال: ساخت elearning

بازدید ساز سئومارک

فازی c-mean

آموزش:, استفاده, از, Task, Scheduler, یا, windows, service, برای, وظایف, زمان, بندی, شده

آموزش: استفاده از Task Scheduler یا windows service برای وظایف زمان بندی شده

میزبانی وب ,هاست,فضای وب,ویندوز,لینوکس,دات نت,پی اچ پی,web hosting,windows host,linux host,asp.net,php,sql server,mysql میزبان پایتخت ارائه دهنده خدمات میزبانی وب، هاست و هاستینگ، میزبانی هاست، دامین، میزبانی نمایندگی، نمایندگی وب، سرور مجازی و سرور مجازی ابری می باشد.هاست,میزبانی وب,دامین,سرور مجازی,میزبان پایتخت,host,domain,vps,mizban paytakht,hosting,share hosting,میزبان وب,میزبانی هاست,هاستینگ

google
logo-samandehi