標籤:har 訊息佇列 ntc 特性 管理器 發布 arp 系統 class
在我之前的一篇部落格中我介紹了如何發布WCF服務並將該服務寄宿於IIS上,今天我再來介紹一種方式,就是將WCF服務寄宿在Windows服務中,這樣做有什麼好處呢?當然可以省去部署IIS等一系列的問題,能夠讓部署更加簡單,當然WCF的寄宿方式一般分為以下四種方式,針對每一種方式我來簡單介紹以下:
具體的寄宿方式詳細資料請參考MSDN:https://msdn.microsoft.com/zh-cn/library/ms733109(v=vs.100).aspx
一、WCF服務寄宿方式:
1):寄宿在IIS上:與經典的webservice託管類似,把服務當成web項目,需要提供svc檔案,其缺點是只能使用http協議,也就是說,只能使用單調服務,沒有工作階段狀態。IIS還受連接埠的限制(所有服務必須使用相同的連接埠),主要優勢是:用戶端第一次請求是自動啟動宿主進程。
2):寄宿在WAS上(全稱Windows啟用服務):WAS 是一個新的進程啟用服務,它是使用非 HTTP 傳輸協議的 Internet 資訊服務 (IIS) 功能的一般化。WCF 使用接聽程式適配器介面來傳遞通過 WCF 支援的非 HTTP 協定(例如,TCP、具名管道和訊息佇列)接收的啟用請求。可託管網站,可託管服務,可使用任何協議,可以單獨安裝和配置,不依賴IIS。需要提供svc檔案或在設定檔內提供等價的資訊。
3):自承載:開發人員提供和管理宿主進程生命週期的一種方法。可使用控制台程式,WinForm視窗程序,WPF程式提供宿主服務。可使用任意協議。必須先於用戶端啟動。可以實現WCF進階特性:服務匯流排,服務發現,單例服務。
4):寄宿在Windows服務上:此方案可通過託管 Windows 服務承載選項啟用,此選項是在沒有訊息啟用的安全環境中在 Internet 資訊服務 (IIS) 外部承載的、長時間啟動並執行 WCF 服務。服務的生存期改由作業系統控制。此宿主選項在 Windows 的所有版本中都是可用的。可以使用 Microsoft 管理主控台 (MMC) 中的 Microsoft.ManagementConsole.SnapIn 管理 Windows 服務,並且可以將其配置為在系統啟動時自動啟動。此承載選項包括註冊承載 WCF 服務作為託管 Windows 服務的應用程式定義域,因此服務的進程生存期由 Windows 服務的服務控制管理員 (SCM) 來控制。
這一篇主要用來介紹第四種即:WCF程式寄宿在託管的Windows服務中。
1 建立一個WCF服務,並按照相關規則來建立一個完整的WCF程式。
a:定義服務介面
// 注意: 使用“重構”菜單上的“重新命名”命令,可以同時更改代碼和設定檔中的介面名“IService1”。 [ServiceContract] public interface IBasicService { [OperationContract] string Login(string username, string password, string version); [OperationContract] Users GetUserInfo(string userName); [OperationContract] bool SaveOption(string option_name, string option_value); [OperationContract] string GetOptionValue(string option_name); [OperationContract] bool SaveOptionByUser(string option_name, string option_value, int userid); [OperationContract] string GetOptionValueByUser(string option_name, int userid); [OperationContract] string TestSQLConnection(); }
將WCF寄宿在託管的Windows服務中