درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من

    تا 75 درصد تخفیف ویژه شب یلدا بر روی کلیه محصولات وب سایت توسینسو فقط تا 30 آذر

    مانده تا پایان تخفیف ها

    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      مهدی عادلی فر
      امتیاز: 144149
      رتبه:6
      117
      196
      285
      1466
      مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم. پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      مدرس: امیر حسین فضلیخانی
      این دوره را در 12 قسط خریداری کنید
      دوره آموزشی Exploit نویسی به زبان Perl
      دوره آموزشی Exploit نویسی به زبان Perl
      مدرس: ایمان جوادی
      این دوره را در 7 قسط خریداری کنید
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 18 قسط خریداری کنید
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      مدرس: ایمان جوادی
      این دوره را در 13 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی طراحی رابط کاربری با JavaFX
      دوره آموزشی طراحی رابط کاربری با JavaFX
      مدرس: حسام رسولیان
      این دوره را در 13 قسط خریداری کنید
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      مدرس: کاظم تقندیکی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      مدرس: کاظم تقندیکی
      این دوره را در 20 قسط خریداری کنید
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      مدرس: مهدی عادلی فر
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 78 قسط خریداری کنید
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 27 قسط خریداری کنید
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی ساخت ربات تلگرام
      دوره آموزشی ساخت ربات تلگرام
      مدرس: کاظم تقندیکی
      این دوره را در 8 قسط خریداری کنید
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 23 قسط خریداری کنید

      زمانبندی و انجام یک کار تکراری و اتوماتیک در پس زمینه وب

      تاریخ 20 ماه قبل
      نظرات 3
      بازدیدها 604
      سلام به ITPRO های عزیز و تبریک سال نو. حالتی را در نظر بگیرید که شما در وب سایت خود باید یک سری فایل ها را حذف کنید و یا هر یک ساعت یک بار برای مدیر ایمیل بفرستید و یا داده های خود را آرشیو کنید. در کل اگر بخواهید در وب سایت خود در بازه های زمانی یک کار تکراری را انجام بدهید چه کاری باید انجام دهید. انجام این کار در برنامه نویسی دسکتاپ بسیار آسان است. شما یک Thread می سازید و یا از تایمر استفاده می کنید ولی در وب نمی توان به همین راحتی عمل زمان بندی را انجام داد. در این آموزش روشی را به شما یاد می دهیم که با کمک آن بتوانید در سایت های asp.net یک کار تکراری را در بازه های مختلف انجام دهید. با استفاده از این روش شما می توانید یک کار را هر روز و یا هر ساعت یا هر دقیقه و بازه های زمانی دیگر انجام دهید. برای این کار مراحل زیر را برای ساخت یک پروژه با ما همراهی کنید.

      ساخت پروژه


      در ابتدا ویژوال استودیو را باز کرده و از منوی file بر روی new و سپس project کلیک می کنیم. در این صورت پنجره ای باز می شود که اجازه انتخاب نوع پروژه را به شما می دهد. مانند شکل زیر
      زمانبندی و انجام یک کار تکراری و اتوماتیک در پس زمینه وب

      در این صفحه مانند عکس از سمت چپ web را انتخاب کنید و از بخش سمت راست Asp.Net Web Application را انتخاب کنید. دقت داشته باشید که در این آموزش ما از زبان سی شارپ استفاده می کنیم. یک نام برای پروژه در پایین پنجره انتخاب کنید و بر روی OK کلیک کنید. در این صورت یک صفحه مانند عکس زیر ظاهر خواهد شد که شما می توانید نوع پروژه را انتخاب کنید که می توانید از انواع پروژه های Asp.Net که web form, mvc , web api می باشد انتخاب کنید. مهم نیست که نوع پروژه ای که انتخاب می کنید کدام باشد. برای مثال ما در این پروژه نوع MVC را انتخاب می کنیم و بر روی ok کلیک می کنیم.
      زمانبندی و انجام یک کار تکراری و اتوماتیک در پس زمینه وب

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


      افزودن بسته ها


      برای این که امکان زمانبندی به پروژه اضافه شود باید بسته quartz.net را بر روی پروژه نصب کنیم. برای این کار در پنجره solution explorer که عکس آن را در بالا می بینید بر روی نام پروژه کلیک راست کنید و Manage Nuget Packages را انتخاب کنید. تا پنجره زیر باز شود.
      زمانبندی و انجام یک کار تکراری و اتوماتیک در پس زمینه وب

      در این تصویر بسته هایی که بر روی پروژه شما نصب شده است نشان داده می شود و اگر آپدیتی برای هرکدام ارایه شده باشد نشان داده می شود. حال برای این که quartz را نصب کنیم به tab اولی یعنی browse می رویم و در قسمت سرچ عبارت quartz.net را جستجو کنید. دقت کنید که به اینترنت متصل باشید. بعد از این که جستجو کردید نتیجه جستجو به شما نشان داده می شود که بر روی اولین بسته کلیک کنید و از سمت راست گزینه install را انتخاب کنید. در این حالت فرایند نصب شروع خواهد شد و بسته ها دانلود شده و بر روی پروژه شما نصب می شوند. بعد از این که فرایند نصب تکمیل شد صفحه بسته های شما به شکل زیر خواهد شد
      زمانبندی و انجام یک کار تکراری و اتوماتیک در پس زمینه وب

      این شکل بیان می کند که بسته نصب شده است زیرا که روی quartz تیک سبز رنگ خوده است.

      شروع برنامه نویسی با quartz


      پس از نصب بسته ها نوبت به برنامه نویسی می رسد. بسته quartz سه بخش دارد. Job, trigger, scheduler که با استفاده از این بخش ها عمل زمان بندی را انجام می دهیم. Job کاری است که باید انجام شود. Trigger مشخص می کند که چه زمانی و با چه فاصله زمانی عمل ما تکرار شود. Job , trigger باهم در داخل scheduler قرار می گیرند. یک job یک کلاس است که از اینترفیس IJob ارث بری می کند. این اینترفیس یک متد به نام execute دارد که باید پیاده سازی شود. برای مثال ما می خواهیم یک برنامه بنویسیم که هر چند دقیقه یک بار یک ایمیل ارسال کند و تاریخ ارسال ایمیل را در فایل بنویسد برای همین یک کلاس در پروژه می سازیم و نام آن را EmailJob قرار می دهیم. برای این کار بر روی پروژه کلیک راست می کنیم و Add و سپس گزینه آخر که class است را انتخاب کرده و نام آن را EmailJob قرار می دهیم و بر روی ok کلیک می کنیم. حال کلاس ما ساخته می شود. کد کلاس را باید به شکل زیر تغییر دهیم
      namespace WebApplication1
      {
          using System;
      
          using Quartz;
          public class EmailJob:IJob
          {
              public void Execute(IJobExecutionContext context)
              {
              }
          }
      }
      
      حال باید متد Execute را پیاده سازی کنیم. گفتیم که می خواهیم یک ایمیل ارسال کنیم و زمان ارسال را در فایل ذخیره کنیم. برای این کار کد زیر را می نویسیم
      public void Execute(IJobExecutionContext context)
              {
                  using (var message = new MailMessage("user@gmail.com", "user@live.co.uk"))
                  {
                      message.Subject = "Test";
                      message.Body = "Test at " + DateTime.Now;
                      using (var client = new SmtpClient
                      {
                          EnableSsl = true,
                          Host = "smtp.gmail.com",
                          Port = 587,
                          Credentials = new NetworkCredential("user@gmail.com", "password")
                      })
                      {
                          client.Send(message);
                      }
                     
                  }
                  File.AppendAllText("time.data", DateTime.Now.ToString("F"));
              }
      
      دقت کنید که اطلاعاتی که ما برای ایمیل دادیم اطلاعات تستی بوده و کار نمی کند ولی شما اگر اطلاعات درست وارد کنید مشکل حل خواهد شد. حال باید یک scheduler هم بسازیم. برای این کار یک کلاس دیگر به نام MyScheduler در پروژه می سازیم. در این کلاس هم باید job را مشخص کنیم و هم باید trigger را بسازیم. برای این کار ما یک متد به نام Start تعریف کرده ایم که کد آن به شکل زیر خواهد بود
      using Quartz;
      using Quartz.Impl;
      
      namespace WebApplication1
      {
          public class MyScheduler
          {
              public static void Start()
              {
                  var scheduler = StdSchedulerFactory.GetDefaultScheduler();
                  scheduler.Start();
                  var job = JobBuilder.Create<EmailJob>().Build();
                  var trigger = TriggerBuilder.Create()
                      .WithDailyTimeIntervalSchedule(
                          builder =>
                              builder.WithIntervalInMinutes(10)
                                  .OnEveryDay()
                                  .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))).Build();
                  scheduler.ScheduleJob(job, trigger);
              }
          }
      }
      
      در کد بالا یک scheduler تعریف کرده ایم و آن را استارت کرده ایم. سپس job را مشخص کرده ایم که گفته ایم از EmailJob یک job ساخته شود. سپس یک Trigger ساخته ایم که می گوییم هر روز و هر 10 دقیقه یک بار اجرا شود و هر روز از ساعت 00:00 شروع به کار نماید. در انتها هم گفته ایم که scheduler شروع به کار کند.
      حال بعد از این که این کار ها را انجام دادیم باید کل Scheduler را در یک قسمت روشن کنیم. برای این کار ما باید در فایل global زمانبند را روشن کنیم برای این کار باید فایل Global.asax را باز کنیم و کد زیر را به متد Application_start اضافه کنیم.
      MyScheduler.Start();
      
      که کد این فایل به شکل زیر خواهد شد.
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      using System.Web.Optimization;
      using System.Web.Routing;
      
      namespace WebApplication1
      {
          public class MvcApplication : System.Web.HttpApplication
          {
              protected void Application_Start()
              {
                  AreaRegistration.RegisterAllAreas();
                  FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                  RouteConfig.RegisterRoutes(RouteTable.Routes);
                  BundleConfig.RegisterBundles(BundleTable.Bundles);
                  MyScheduler.Start();
              }
          }
      }
      
      
      به همین سادگی!! البته شاید ارسال ایمیل به خاطر اطلاعات نادرست خطا بدهد ولی نوشتن در فایل به درستی انجام خواهد گرفت. برای این که به فایل time.data دسترسی داشته باشید باید به مسیر
      C:\program files (x86)\IIS Express\
      
      بروید خواهید دید که تاریخ ها ثبت می شود پس برنامه به درستی کار می کند. امید وارم که از این آموزش استفاده کرده باشید. ITPRO باشید


      نویسنده: مهدی عادلی فر
      منبع: Itpro
      هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.



      برچسب ها
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      • اگه بخوایم با زدن یه دکمه به تعداد مشخصی ایمیل ، با فاصله زمانی مشخص، ایمیل ارسال بشه، امکانش هست؟
      • بله شما بخش ارسال ایمیل رو زمان بندی می کنید و ایمیل ها با فاصله زمانی مشخص ارسال خواهند شد.
      • لطفا اگر ممکن هست آموزش نسخه 3 نیز در سایت قرار دهید
        باسپاس

      برای ارسال نظر ابتدا به سایت وارد شوید