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.
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.
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.
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.
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.
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.
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.
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)
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.
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.
Archives
- May 2013 (1)
- April 2013 (2)
- March 2013 (1)
- February 2013 (1)
- January 2013 (2)
- May 2011 (1)
- April 2011 (2)
- October 2010 (1)
- September 2010 (1)
- July 2010 (1)
- June 2010 (4)
- May 2010 (4)
- April 2010 (9)
- March 2010 (13)
- February 2010 (1)
- December 2009 (1)
- November 2009 (4)
- October 2009 (3)
- July 2009 (1)
- June 2009 (2)
- May 2009 (6)
- April 2009 (11)
- March 2009 (2)