歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 移植Windows自宿主WCF服務到Linux/Mono2.8

移植Windows自宿主WCF服務到Linux/Mono2.8

日期:2017/3/2 16:32:33   编辑:Linux服務器
 Windows服務是這些後台程序、後台服務的正規名詞。Windows服務的運行可以在沒有用戶干預的情況下,在後台運行,沒有任何界面。通過 Windows服務管理器進行管理。服務管理器也只能做些簡單的操作:開始,暫停,繼續,停止。Windows服務的特點:在後台運行,沒有用戶交互,可以隨Windows啟動而啟動。

  後台服務在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服務。我們服務的代碼結構如下

移植Windows自宿主WCF服務到Linux/Mono2.8

  要將.NET程序移植到Mono,我們一般會使用net 應用遷移到Mono 工具 (Moma)檢查下兼容性。下面這個項目的檢查結果,看看是不是Mono2.8完美支持WCF。

移植Windows自宿主WCF服務到Linux/Mono2.8

  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,留待後續補充,歡迎有做好的同學共享下怎麼做?

  作者: 自由、創新、研究、探索……

Copyright © Linux教程網 All Rights Reserved