Sayfalar.com

Alt Kategoriler
İçerik Gönder
Yazı
Soru
Kısa Mesaj
Ekran Görüntüsü

ASP.NET Core ile Azure Webjoblari ve Kolay Deployment

10/6/2016


Yaziyi yazdigim zamanda bu bilgiye ulasmak kolay olmamisti o yuzden burada paylasiyorum.

Azure webjonlari cronjoblar gibi calisir. Belirlerdiginiz tarihde ya da belirlediginiz aralikta bir komut calistirmak icin kullanabilirsiniz. Benim amacim web sitemdeki gunluk raporlarin her aksam 21:30 da email adresime gonderilmesiydi. Oncelikle bunun icin ozel bir controller ve action olusturdum.

http://www.projem.com/GunlukRapor/Gonder gibi. Bu controller ve actionda Authroize controller yapmadim ama guvenlik amacli 2 farkli parametre istedim. Aslinda guvenlik acisindan bakildiginda bu dogru bir uygulama degil ama cok hizli ve basit bir sekilde ihtiyacimi cozmek icin.

public IActionResult Gonder(string parametre1, int parametre2)

{

if (parametre1 == "gizlisifre" && parametre2 == 65535)

{

 // databaseden gunluk verileri alan komutlar

// benim email adresime gunluk verileri gonderen komutlar

}

return "OK";

}

Burasi aslinda webjobla alakali degildi bu sadece webjob a yaptirmak istedigim islemin basit bir cozumu idi. Genellikle ayri bir console uygulamasi olusturarak bu isi yapiyorlar, bu yontem herne kadar cok guvenli olmasada ben bu sekilde yapmayi tercih ettim.

Simdi esas amacimiz olan webjob u olusturalim. Azure webjoblar bir cok dosyayi calistirabiliyor ama bizim amacimiz dogru parametreler ile http://www.projem.com/GunlukRapor/Gonder adresine request gondermek oldugu icin basit bir ps1 dosyasi olusturacak ve icine asagidaki satiri yazacagiz. webjob-calistir.ps1 adli dosyayi olusturalim ve icine asagidaki komutu yazalim.

Invoke-WebRequest -Uri "https://www.projem.com/GunlukRapor/Gonder/?parametre1=gizlisifre&parametre2=65535"

bu dosya cagirildiginda yukaridaki komut calisacaktir. Bu komut sadece verdigimiz adres ve parametrelere request gondermektedir. Buda bizim gunluk webjob umuzu tetikleyecektir.

ASP.NET Core projemizi publish ettigimizde bu dosyanin Azure tarafindan webjob olarak algilanmasi icin ozel bir klasore kaydetmemiz gerekiyor. Projeniz de oncelikle App_Data klasorunu olusturun. Bu klasorun icinde jobs klasorunu olusturun, jobs klasorunun icinde triggered klasorunu olusturun. Triggered klasorunun icinde ise gunlukrapor klasorunu olusturun. gunlukrapor klasorunun ismini istediginiz gibi degistirebilirsiniz bu webjobuna verdiginiz isimdir. Simdi olusturdugumuz ps1 dosyasini gunlukrapor klasoru icine kayit edelim. Istediginiz dosya adini kullanabilirsiniz.

Tum bunlari yaptikdan sonra son adim olarakda settings.job dosyasini gunlukrapor klasoru icerisinde olusturalim. Bu dosya Azure a webjobun ne zaman calismasi gerektigini bildiriyor. Cron Expression kullaniyoruz. Her gun 21:30 da calismasini istedigimiz icin asagidaki satiri dosyaya ekleyip kayit ediyoruz.

{"schedule":"0 30 21 * * *"}

Tum bunlari yaptikdan sonra projesini Azure a publish ederseniz webjobunuz otomatik olarak yaratilacaktir. Dizin yapisi burada cok onemli eger dosyalari dogru dizinin altina eklemezseniz yada settings.job dosyasinin icerigi yanlis olursa webjobunuz calismaz.

 Asagida benim projemde kullandigim webjobu ve dizin yapisini gorebilirsiniz.






Yorum Gönder

Puan

0

Katılan Kullanıcılar

MrCha0s

71