後台服務在Unix/Linux上叫做Daemon,在Linux系統中就包含許多的Daemon。判斷Daemon最簡單的方法就是從名稱上看。 Linux下自動啟動的服務都在/etc/rc.d/init.d/目錄下,比如說mysql。如果不想讓一個服務自動運行,把/etc/rc.d /init.d/目錄下的這個服務腳本移除掉就可以(一定要移除嗎,不可以使用類似Window下的手動啟動?)。
可以操作的狀態:
start 啟動服務,等價於服務腳本裡的start命令
stop 停止服務,等價於副外長腳本stop命令
restart 關閉服務,然後重新啟動,等價於腳本restart命令
reload 使服不重新啟動而重讀配置文件,等價與服務腳本的reload命令
status 提供服務的當前狀態,等價於服務腳本的status命令
condrestart 如果服務鎖定,則這個來關閉服務,然後再次啟動,等價於condrestart命令
Mono 下的Windows服務叫做mono-service,mono-service 運行.net 1.0 程序集 和用 mono-service2 運行.net 2.0 以上的程序集。mono 2.8已經不支持.net 1的程序了,所以我們現在都是使用mono-service2,命令行說明文檔參考http://manpages.ubuntu.com/manpages/lucid/man1/mono-service.1.html。
Mono 2.8對wcf的支持也比較好了,這裡的例子就是將Windows下self host的一個wcf服務移植到Linux上。
1、在Window下編寫一個WCF 服務端作為Window服務。我們服務的代碼結構如下
要將.NET程序移植到Mono,我們一般會使用net 應用遷移到Mono 工具 (Moma)檢查下兼容性。下面這個項目的檢查結果,看看是不是Mono2.8完美支持WCF。
DynIPServiceWS是WCF的windows服務的宿主,我們把代碼放到Linux下使用MonoDevelop編譯.放到/home/geffzhang/Projects/DynIPServiceWS目錄下,切換到這個目錄,執行命令
mono-service DynIPServiceWS.exe
運行DynIPClient.exe,返回運行結果說明服務已經在運行,如果客戶端出現目標機器積極拒絕說明服務沒有啟動。
mono DynIPClient.exe。
關於Mono下的WCF的可以參考這個博客,作者寫了一個系列的文章:http://veritas-vos-liberabit.com/monogatari/
本文的例子下載:office.live.com/self.aspx/.Public/WCF/DynIPUpdater%5E_0.1.zip">http://cid-33478a966734670f.office.live.com/self.aspx/.Public/WCF/DynIPUpdater%5E_0.1.zip
目前還有一個問題沒有解決,就是如何把mono-service包裝成Linux的Daemon,留待後續補充,歡迎有做好的同學共享下怎麼做?
作者: 自由、創新、研究、探索……