Home > c#.net, productivity > C#.Net le Windows Service ve Message Queuing Uygulaması

C#.Net le Windows Service ve Message Queuing Uygulaması

Windows service uygulamalari start stop olarak iki asamali bir yapi sunsa da startla baslayan ve devam eden bir surecte icerdigi icin bir kompozisyon calismasi gibi gelir bana; giris gelisme sonuc.
Her asamada yapmak istediklerini kolayca uygulayabileceginiz konfigurasyon konusunda hem config dosyalarini hem de guvenlik icin windows guvenlik ayarlarini adapte edebileceginiz windowsun bu edebi yaklasimli uygulamasina artilariyla oldugu kadar eksileriyle de bakmaya calisalim.

image Visual Studio da sekilde gorulecegi uzere project tiplerinden windows service secerek uzerinde calisacagimiz ana projeyi olusturmakla ise baslayalim. Anlatima partner olarak olarak sectigim bu projede Message Queuing yapisini kullanarak queu yu dinleyen ve gelen paketi mail olarak gonderen ya da paket geldiginde belli kisilere mail olarak uyari gonderen bir servis yazmaya calisacagim.

Windows service projesini olusturdugumuzda karsimiza design viewda acilacak olan ekranda herhangi bir islem yapmayi planlamadigim icin direk olarak code view a geciyorum. Code viewda goreceginiz uzere makalenin girisinde de soyledigimiz gibi Start ve Stop override functionlari ServiceBase den otomatik olarak implemente edilmis olarak gelmekte.

image

Giris gelisme ve sonuc dedigimiz yapiyi servise uygulamak icin isStopped seklinde bir property tanimlayarak start icerisinde olusturacagim processi servis stop olana kadar devam ettirmek yonunde bir yapi kurguluyorum. Bunu bir sleep mekanizmasi kurgulayak belli araliklarla queu yu dinlemek seklinde de tasarlayabilirdik ama servis stop olana kadar kuyrugu dinlemesi ve anlik mesaj atimini saglamasi ornegimiz acisindan daha tercih edilir bir yapi olarak gozukmekte.

image

Bu kurguladigimiz yapiya uygun olarak OnStart processini guncellememiz gerekicek. Bu guncellemeyle birlikte queue yu dinlememiz ve yeni bir mesaj geldiginde haberdar olmamiz gerek. Bunun icin bir handler yazarak bunu gueue ya ReceiveCompleted Handler i olarak attach etmemiz gerekecek. Boylelikle uygulamamizin son asamasi olan mail gonderimini saglayacak ve uyarilar ilgili maillere gonderilecektir. OnStartta gorulecegi uzere proje dahilindeki settings yapisi kullanilarak Queue pathi verilebilmekte ve bu da kullanimi kolaylasirmaktadir.

image

Uygulamamiza son seklini verdikten sonra basit olarak maili atacak fonksiyonu da uygulamamizin icine dahil ediyoruz. Ayri bir yapilandirmayla mail mimarisini harici bir class icerisinde tutmak daha saglikli olacaktir. Ancak ornegimiz icerisinde gozukmesi acisindan mail fonksiyonunu da buradaki govdeye ekledik.

image

Mail fonksiyonalitesiyle birlikte giris gelisme ve sonuc kismimiz tamam. Ancak service uygulamasi icin bir proje daha ekleyerek kurulum asamasini da yapilandirmamiz gerekli. Setup & install asamasini da projemize ekleyerek servisimizin manual degil de kolay bir arayuzle kurulmasini saglamak kullanislilik acisindan faydali olacaktir.

image

Bunun icin ekranda da gorulecegi uzere Other project types kismindan setup & deployment secenegi secilerek sagdaki kisimdan da Setup projesi secilmek suretiyle projemize Setup asamasini katmis oluyoruz.

image

Setup asamasini yapilandirmak icin, ekran goruntusunde gorulecegi uzere proje uzerine sag tiklayarak add project output secerek kuruluma dahil edilecek olan projemizi ekliyoruz. Setup Project->Add->Project Output->Service1(Primary Output)

image

Bu eklemeyi yaptiktan sonra Setup Project->View->Custom Actions sekmesini takip ederek custom actionlarin sagda listelenmesini sagliyoruz. Bu asamayla birlikte Install Rollback asamalarinda neler olacagini tanimlamis olacagiz. Bunun acilan ekranda Custom Actions a sag tiklarak ekrandaki gibi application folderdan primary output olarak ekledigimiz projeyi secerek Custom Actions a dahil ediyoruz.

image

Bu dahil etme isleminden sonra once primary projeyi daha sonra setup projesini build ederek setup projesinde build configurationinda Setup projesi icinde build sekmesini isaretliyoruz. Boylelikle build islemiyle birlikte install icin gerekli msi dosyamiz olusturularak kullanilabilir bicimde sunulmus olacaktir.

Bu islemler sonucunda setup projesine sag tiklayarak install\uninstall secenekleriyle windows servisimizi kurup geri yukleyebiliriz.

  1. No comments yet.
  1. No trackbacks yet.

Leave a comment