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

En basit şekliyle Sql Join

WCF Json Web Servisi Oluşturma

Wcf json web servisinin nasıl oluşturacağımızı basit bir şekilde adım adım görsellerler anlatmaya çalışacağım. Visual Studio üzerinden yeni bir boş web application oluşturalım. Oluşturduğumuz web applicationımıza bir adet wcf service ekleyelim. Oluşturduğumuz wcf servisinin çalıştığından emin olmak için projemizi run edelim.(açılan url'inin sonuna web servisinin adını eklemeyi unutmayalım. Örneğin http://localhost:49264/service.svc Projemizin referenslarına System.ServiceModel.Web.dll ekleyelim. Web servisimizin interfacine aşağıdaki görselde ki gibi sayhi metodu ekleyelim. Metodun taglari burda çok önemli. Son olarak interfacede tanımladığımız metodumuzu implement edelim. Web servisimiz artık kullanıma hazır. Aşağıdaki url'den web servisimizin metodunu kullanabiliriz. http://localhost:49264/service.svc/json/sayhi

ASP.NET uygulamalarında WebResource kullanımı (WebResource.axd)

          Web uygulamalarında genellikle resourcelar uygulama içerisine eklenerek sayfalarda path'lari ile çağırılırlar. Bu kullanım açısıdan çok kullanışlı bir yöntem değildir. Şöyleki bazı resourcelarımız her uygulamada olması gereken resourcelardır. Bu resourceları her uygulamaya eklemek etkili bir kullanım değildir. Bunun yerine webresource yöntemiyle istediğimiz resoruceları bir class libary(dll) içerisine koyup, uygulamalarımıza bu dll'i eklememiz daha kullanışlı bir yöntem olacaktır. Bu yazıda da bir image libary dll oluşturmayı ve uygulama içerisinden bu dll içerisinde yer alan resimler çağırmayı adım adım anlatmaya çalışacağım. 1)Solution'ımız 2 adet proje oluşturalım.   - WebApplication(WebApp)   -Class Libary(ResourceLibary) 2)Image libary olarak kullanacağımız dll içerisine image'larımızı ekleyelim. 3)Her bir image'ın üzerine sağ click ile açılan window üzerinden Build Action özelliğini Embedded Resource olarak değiştirelim. ...