Bu bir kendime not yazısıdır. Daha sonradan unutma ihtimalime karşın kendimce notlar alıyorum.
Windows Hizmetleri, Windows işletim sistemi üzerine koşan ve Hizmetlet ekranı aracılığı ile yönetebildiğimiz bir ekran. Arka planda çalışan ve bir arayüze sahip olmayan bu uygulamaları, dilerseniz el yordamıyla, dilerseniz otomatik olarak başlatabiliyorsunuz.
Benim de bir ihtiyaç üzerine arka planda sürekli olarak çalışacak bir REST API çalıştırma zaruretim oluştu. Bu notu da üzerinde unutmamak adına alıyorum.
Söz konusu Windows Servisi olduğu için, Windows işletim sistemine sahip olan bir bilgisayar ve Visual Studio gereksinimlerimizi oluşturuyor.
Windows Service
seçilir.
private HttpSelfHostServer server;
private HttpSelfHostConfiguration config;
protected override void OnStart(string[] args)
{
config = new HttpSelfHostConfiguration("http://localhost:9191");
config.Routes.MapHttpRoute(
"DefaultApi",
"api/{controller}/{action}"
);
config.Formatters.Remove(config.Formatters.XmlFormatter);
server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
}
protected override void OnStart(string[] args)
{
server.CloseAsync().Wait();
server.Dispose();
}
public class ServiceController: ApiController
{
[HttpGet]
public Dictionary<string, dynamic> Information()
{
return new Dictionary<string, dynamic>()
{
{ "name", "MyService" },
};
}
}
installutil MyService.exe
komutu verilerek ilgili uygulamanın Hizmetler bölümüne kaydı gerçekleştirilir.installutil /u MyService.exe
komutu ile dilendiği zaman uygulamanın Hizmetler üzerindeki kaydı silinir.Bağımlılığı bulunan Newtonsoft.Json
paketinin sürümü biraz olarak geliyor. Ben derleme aşamasında bu nedenle ciddi sıkıntılar yaşadım. Newtonsoft.Json
paketinin sürümü yükselttiğinizde olası sorunları ortadan kaldırabilirsiniz.
Her ne kadar Windows'u sevmesem de, işim gereği bu tarz geliştirmeler yapmak zorunda kalabiliyorum. Eğer olur da Windows üzerinde bir hizmet olarak Web API çalıştırmak isterseniz, bu yöntemi kullanabilirsiniz.