Archive
Windows Service made Easy
What is Windows service?
Rekan-rekan pasti sudah mengetahui apa yg dimaksud dengan windows service. Singkatnya, Windows service memungkinkan kita untuk menjalankan aplikasi yg berjalan pada sesi windowsnya sendiri. Service ini dapat dapat otomatis berjalan ketika komputer booting. Kita bisa start, pause dan jug restart service. Service tidak memiliki interface.Service ini cocok digunakan untuk server side dimana kita butuh fungsionalitas yg tidak menggangu dengan user yang bekerja pada komputer yang sama.
Aneh aja klo kita buat aplikasi server dengan menggunakan Console Application. Bisa aja sih. Tapi bakalan gak aman dan bisa di close tanpa sengaja sama orang lain. Klo di Linux kita punya daemon di windows kita punya Windows Service.
Just run services.msc you will see the list of windows service
Jika anda memiliki SQL Server running pada system anda maka kita dapat melihat services dari SQL Server sebagai berikut.
Untuk lebih jelasnya dapat dibaca pada referensi berikut
Introduction to Windows Service Applications
Langkah2 untuk membuatnya dengan cara manual dapat diikuti pada tutorial berikut
So Whats new?? We already know that…. Sabar kita akan segera masuk kepada kemudahan yang ditawarkan Open Source pada .NET Development
Getting Easy with TopShelf
Salah satu yang saya suka dari development di windows based khususnya .NET Framework adalah zero friction. Banyak yang bisa dilakukan dengan mengurangi hal2 yang tidak perlu dan focus ke hal2 yang essential saja. Term Zero Friction Development dipopulerkan oleh Ayende Rahien – NHibernate Creator. That’s why I choose .NET for my primary platform instead of Java.
Kita dapat menggunakan TopShelf utk menghilangkan friction yang kita alami dalam membuat windows service. Kita tidak perlu lagi mengulangi step by step walkthrough yang membosankan itu setiap kali akan membuat windows service. Hanya dengan beberapa line of code kia dapat membuat windows service.
Pertama kali download terlebih dahulu library TopShelf nya. Pilih versi yg terbaru.
Jika anda penasaran dan ingin mengutak atik source code nya bisa di clone repository. Tetapi sebelumnya install Git untuk windows terlebih dahulu. Dan kemudian jalankan command berikut ini.
git clone git://github.com/Topshelf/Topshelf.git
Extract binary yang telah kita download tadi dan kita akan mendapatkan TopShelf.dll. Untuk kali ini abaikan saja dulu assembly yang lain. Pilih folder sesuai dengan framework yang kita gunakan.
Pada tutorial kali ini kita akan membuat File Watcher yang berfungsi untuk medelete setiap file yang ada di directory D:\sterilfolder. Yapz. Saya sudah kehabisan akal untuk memilih contoh yang sesuai. Yg penting intinya windows servicenya dan background processing nya toh. Anda bisa menyesuaikannya dengan kebutuhan.
Buat Project Console Application
Tambahkan reference ke TopShelf.dll
Ubah target frameworknya dari .NET Framework 4 Client Profile menjadi .NET Framework 4
Buat kelas yang berisi long running process utk watcher kita tersebut.
Ketikkan code berikut pada Main.cs untuk meng host service tersebut.
Kita mendapat keuntungan dengan dapat menjalankan aplikasi tersebut dari console dan dari window service. Jika ingin menjalankan sebagai console tekan saja F5 atau CTRL + F5 atau Jalankan executablenya
Untuk menjalankannya sebagai windows service pindah ke direktori dimana exe nya telah dibuat. Dan ketikkan perintah berikut ini dari command prompt. Jangan lupa untuk menjalankan command prompt dengan priviledge administrator.
Perhatikan bahwa service kita tersebut sudah terinstall di service control panel. Hanya saja servicenya masih dalam keadaan mati.
Jika kita ingin menginstall dan langsung menjalankan service tersebut kita dapat mengeksekusi perintah. Kita akan melihat apakah service kita berjalan.
Copy file apa saja ke dalam directory D:\sterilfolder. Maka file tersebut akan di delete dengan segera .
Mudah sekali bukan?
Untuk lebih lengkapnya silahkan baca reference berikut ini
TopShelf Getting Started
Command Line Syntax
Windows Service in 5 Steps with TopShelf
My Another Blog .. Again
I hope you can enjoy my another blog like i do.. 😀