Skip to main content

Swift / Objective C ile Mac Os Servisi Oluşturma

Windows servisleri konusunda bir çok kaynak ve örnek kod bulmak mümkün fakat osx dünyasında malesef  bu kadar kaynak yok. Umarım bu yazımda kafanızda ki tüm soruları yanıtlamış olurum.


İlk öncelikle bir konuya açıklık getirmek istiyorum. Mac dünyasında windows servis gibi bir yapı yok. Peki nasıl oluyor bu işler? 

Mac osx'ler için servis nasıl yazarım diyorsanız bu yazımda size kısaca ve net bir şekilde açıklamaya çalışacağım. 
  1. Xcode'da hangi template'i seçeceğim? Cevap console application işimizi görecektir. 
  2. Uygulamanızı console applicationda yazdıktan sonra executable outputunuzu bir path'e kopyalayın. Örneğin Applications altına.
  3. Peki kullanıcı login olduğunda bu uygulamayı nasıl otomatik olarak çalıştıracağız, hangi aralıklarla çalıştıracağız? Bu işlemler için bir .plist uzantılı bir dosya hazırlamamız gerekiyor. Bu dosya içerisinde servisimizin çalışması için gerekli tüm tanımlamaları yapacağız. (Ayrıntılar)
          Yukarıda örnek bir .plist dosyası görebilirsiniz. Burda yer alan :

    • Label : Servis adı
    • Program arguments : Output pathiniz
    • Runatload: Kullanıcı login olduğunda çalışsın mı?
    • Start interval : Servisiniz çalışma sıklığı.
  4. Oluşturmuş olduğumuz bu .plist uzantılı dosyanın adının com.servisname.plist olduğunu varsayalım. Bu dosyayı "~/Library/LaunchAgents" altına kopyalayalım. Bu sayede kullanıcı login olduğunda sistem otomatik olarak .plist dosyamız içerisinde ki tanımlamalarımıza göre uygulamamızı çalıştıracaktır.
  5. Son olarak hazırlamış olduğumuz .plist dosyamızı sisteme tanıtmamız gerekiyor. Bunun içinde terminal'de aşağıdaki scripti çalıştırmamız gerekli.
  6.  launchctl load ~/Library/LaunchAgents/com.servicename.plist
  7. Bu işlemin ardından yine terminal de launchctl list komutunu çalıştırarak servisinizin adını görebilirsiniz. (Bilgisayarınızı restart etmeniz gerekebilir.)
  8. Servisinizi silmek istiyorsanız, bu plist dosyasını silmeniz yeterli olacaktır. Ayrıca unload etmek istiyorsanız : launchctl unload ~/Library/LaunchAgents/com.servicename.plist
  9. Hazırlamış olduğumuz bu servis için paket/setup oluşturmayı da bu yazımda bulabilirsiniz.
         Evet ilk servisimizi oluşturduk. Hatırlatmak isterim ki çok basit ve düz anlatmaya çalıştım. Bu yazıyı okuduktan sonra aşağıdaki referansları mutlaka okumanızı tavsiye ederim.


  • http://nathangrigg.net/2012/07/schedule-jobs-using-launchd/
  • https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/DesigningDaemons.html
  • http://www.codepool.biz/how-to-create-a-background-service-on-mac-os-x.html







Comments

Popular posts from this blog

Single Sign On (SSO)

Single sing on daha önce duymadığım bana yabancı bir konsepti fakat bununla ilgili bir araştırma yaptıktan bunula ilgili bir uygulama geliştirdim. SSO'yu kısaca tanımlamak gerekirse web uygulamalarınızıza tek bir login sayfasından giriş yaptıktan sonra diğer uygulamalara login olmadan giriş yapabilmenizi sağlayan bir yöntem. Örnek vermek gerekirse www.google.com sayfasından login olduğunuz zaman, www.gmail.com adresinden maillerinize bakmak isterseniz sisteme login olmadan direkt maillerinize ulaşabilirsiniz. Bu konu hakkında internetteki bence en iyi dokümana ve örnek koda buradan ulaşabilirsiniz. Kolay gelsin.

En basit şekliyle Sql Join

WCF Servisinin HTTPS Yayını ve Metotlarına Kullanıcı adı Parola ile Erişim

Giriş Bu yazıda bir wcf servisinin https olarak bir iis üzerinde yayınlanmasını ve de servis metotlarının bir kullanıcı adı ve şifre korunması için neler yapılması gerektiğini bulabilirsiniz. Not: Bu yazıda Wcf servisi bir web application üzerinde yer almaktadır. Gerekli Tool’lar SelfCert.exe:  Servisin yayınlanacağı iis için gerekli ola sertifika oluşturmak    için kullanacağız. winhttpcertcfg.msi:  Command line’dan komut çalıştıracağımız bir exe’dir. Oluşturduğumuz sertifikanın iis’de yer alan application pool tarafından okunabilmesine izin verilmesi için kullanılır. WCF Servis Ayarları Wcf servisi güvenliğini ve verilerinin gizlilğini iki aşamalı bir koruma ile  sağlayacağız: Clientların servis içerisinde yer alan metotlara erişebilmeleri için izin verilen kullanıcı adı ve paraloları bilmesi gerekmektedir. Bu amaçla servis uygulamasına bir adet .cs file ekleyip içerisini Custom Validation da ki gibi dolduralım. Bu işlemden sonra içi...