xml beslemelerinden veri alabilecek bir web sitesi yapıyorum. MVC AP.NET uygulaması olarak yapıyorum. Örneğin her 2 dakikada bir sunucunun sunucusunda bulunan xml dosyalarından veri almak için uygulamaya ihtiyacım olacak. Bu veriler daha sonra depolanacaktır. Sorun şu ki, bu prosedürün web sitesinin sunucuya yükleneceği andan itibaren kesintisiz olarak gerçekleştirilmesini istiyorum. Verileri her 2 dakikada bir almak için ana yöntemde (?) Bir zamanlayıcı kullanmayı düşünüyordum. Ancak burada başka konuları aradım ve AppFabric'i kullanmanın çözüm olacağını öğrendim. Sorun şu ki, mutlak bir başlangıççıyım ve onu kullanmakta zorlanıyorum ... xml dosyasındaki bu sürekli veri güncellemesini elde etmenin daha basit bir yolu var mı?Zamanlanmış görevleri yapmak için MVC ASP.NET uygulaması ayarlama - Bunu başarmak için Yöntem?
cevap
Yerleşik zamanlayıcıyı kullanmak yerine zamanlamayı işlemek için Quartz kullanmanızı öneririm. Son iki projemde Quartz kullandım ve çok etkilendim. Düşünebileceğiniz herhangi bir program hakkında işleyebilir.
http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html
Örnek İş Yaratma:
using Quartz;
using Quartz.Impl;
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail integrationJob = JobBuilder.Create<IntegrationJob>().Build();
ITrigger integrationTrigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(300).RepeatForever()).Build();
scheduler.ScheduleJob(integrationJob, integrationTrigger);
public class IntegrationJob : Ijob
{
public void Execute(IJobExecutionContext context)
{
//Write code for job
}
}
Teşekkür ederiz! Ama ben yeni başlayan biriyim, başka bir sorum var: Zamanlanmış görev xml verilerini çekecek ve listeleri/tabloları güncelleyecektir. Ardından, güncellenmiş model verileri nedeniyle Görünümler güncellenir. Bu, kullanıcıların web sitesini ziyaret edip etmediğine bakılmaksızın işe yarayacak mı? Ve eğer sunucu yeniden başlarsa, tekrar başlayacak, değil mi? – user2868674
Yukarıda gösterildiği gibi iş eklediğinizde .StartNow() uzantı yöntemine sahip olduğunuzdan emin olmak istersiniz. Ardından, kodun zamanlama bölümünü başka bir sınıfa sarmak veya global.asax.cs dosyasına bırakmak ve IIS başlatıldığında, web sunucusunda yapılan herhangi bir istek dikkate alınmaksızın iş çalışır. – Chance
Başka, daha basit ve daha yalındır yaklaşım Visual Studio çözümde bir konsol projesi oluşturmak ve Windows Görev Zamanlayıcı onu tekmelemek sahip olmaktır.
-
Alan Modelleri ve Depo sınıfları
- ASP.NET MVC web uygulaması ile
- A Sınıfı Kütüphane projesi (başvuran: Bunu yapmak için size çözümde en az üç aşağıdaki projeleri olması gerekir Alan Modelleri projeyi başvuran Alan Modelleri projesi)
- Konsol projesi()
, ve web arasında nedenle taşınabilir uygulama ve c onsol uygulaması.
Gerçekten, sadece bir web uygulaması fazlası olabilir herhangi bir proje için bu çözüm kurulumu öneriyoruz:
MyApp.Models
: A Sınıfı Library alan adı modelleri ve Depo sınıfları için. Domain Driven Design yararlanın ve VSMyApp.Models.Tests
projeleri arasında Repository Pattern temel iş mantığı ve ısrarlı depolama taşınabilir erişimi yapmak: Modellerinizin sınıf kütüphanesi için Birim testleriMyApp.Web
: Birimi ve fonksiyonel testler: MVC veya WebFormsMyApp.Web.Tests
proje web projeniz- Birim Testleri: En sevdiğiniz Test koşucu kullanın (MS Testi, NUnit, xUnit, vs)
- Fonksiyonel Testler: Microsoft'tan CodedUI tests veya WatiN programlı web tarayıcısını götürmek için izin verir.Ben de Behavior Driven Development
MyApp.Console
yapmak isteyenler için SpecFlow öneriyoruz: konsol uygulaması, arka plan işi olarak çalıştırılabilirMyApp.Console.Tests
: En konsol uygulaması için birim testleri
biliyorum Bu benim için çok fazla bir şey gibi görünmekle birlikte, benim tecrübelerimdeki projelerim zaman içinde bu yapıya doğru her zaman gözüküyor. Projenizi bu yapıyla akılda tutmak kolaydır ve İş, kaçınılmaz olarak deliliğe dalmak zorunda kaldığı ve uygulamanızın her şeyi yapmasını, ancak kahveyi yapmasını gerektirdiği için çok fazla esneklik sağlar (ne de olsa stajyerler budur!).
Hangfire numaralı telefonu kullanmak isteyebilirsiniz. Görevleri planlamanızı sağlar ve görevleri yönetmek için size güzel bir pano sunar. Bunu NuGet'te bulabilirsiniz ve Hangfire sitesinde bulunan belgeler oldukça iyi.
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
config.UseSqlServerStorage("connection string");
config.UseServer();
});
InitializeJobs();
}
public static void InitializeJobs()
{
RecurringJob.AddOrUpdate("jobName",() => CallToJobFunction(), Cron.Minutely);
}
Ödeme Hanselman'ın günlüğü o bu konuyu tartışır:
Kullanımı çok kolay, burada bir işi her dakika çalıştırmak istiyorsanız Owin Başlangıç sınıfına eklemek zorunda ne bir örnek: http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
- 1. Bunu başarmak için çalışıyorum
- 2. Neden ayarlayıcı yöntemleri dönüş $ bunu yapmak için?
- 3. Bunu yapmak için LINQ'ish yolu nedir
- 4. Nasıl gulp browserify içinde bunu yapmak için?
- 5. ASP.NET MVC Web uygulaması ve ASP.NET Web Uygulaması
- 6. ASP.NET MVC 3 - Kullanım için en iyi yöntem Model görünümünde
- 7. Asp.net MVC Kaynak Dosyaları İçin En İyi Yöntem
- 8. ASP.NET MVC denetleyicisinde HTTP Durumunu ayarlama MVC denetleyicisi sonuçları görüntülenmiyor
- 9. Orta bağımsız değişkenler yapmak için deyimsel yöntem
- 10. Yerel ASP.Net Geliştirme için IIS7.5'i ayarlama
- 11. ASP.NET MVC 2 - Değerleri ayarlama IValueProvider
- 12. C# MVC ASP.NET uygulaması için oluşturulan varsayılan veritabanı nerede?
- 13. Java Desktop Uygulaması için MVC
- 14. Sınıflandırma için ASP.NET MVC kodu
- 15. Bir WCF uygulaması için kimlik bilgilerini ayarlama?
- 16. ASP.NET MVC
- 17. ASP.NET MVC: Kısmi Görünümler için doğru yer?
- 18. ASP.NET MVC
- 19. Neden Celery ile zamanlanmış görevleri çalıştırmak crontab üzerinde tercih edilir?
- 20. ASP.NET MVC OutputCache, kök için çalışıyor URI
- 21. Solgra 3.6'dan 4.0'a geçiş, bunu yapmak için yöntem, ve güvenli mi?
- 22. Özellik için ASP.NET MVC düzenleyicisi şablonu
- 23. Asp.net içinde görev zamanlama görevleri (windows scheduler yazmadan)
- 24. Oylama yapmak için en iyi yöntem oylama veritabanı yapısı
- 25. ASP.NET MVC2 Uygulaması için özel doğrulama kuralları
- 26. ASP.Net MVC Değer Türü için Liste Seç
- 27. Asp.Net MVC için nasıl belge oluşturulur?
- 28. ASP.Net MVC özel Kimlik
- 29. ASP.NET mvc
- 30. MVC eylem yapmak bağlantı yapmak
Veriler, ASP.NET web sitesinin kullandığı veritabanında saklanacak mı? Zamanlayıcı bir iş tarafından kovulacak bir Konsol uygulamasında getirme yapamaz mıydınız? O zaman bu konuda endişelenmek için siteye ihtiyacınız olmaz. Ayrıca, AppFabric'in temel olarak önbellekleme için kullanıldığına inanıyorum. – bump
Web sayfalarını sunmadığınızda ve web isteklerine yanıt vermediğinizde neden bir web uygulaması yapmak istiyorsunuz? Bunu planlı bir görev yapmalı veya bir Windows Hizmeti yazmalısınız. IIS, etkin olmadığında web sitenizi kapatır; bu, görevinizin çalışmadığı anlamına gelir. –
Web uygulaması xml feed'lerinden veri alacak, bunları listelerde/tablolarda saklayacak ve gelecekte bir kısmı veritabanlarında saklanacaktır. Güncellenecek listeler/tablolardaki verilere ihtiyacım var ve güncellemeler verilerini görünümlere gönderiyorum. Web sitesi ziyaretçilerinin sadece izlemeleri görecek – user2868674