使用Windows服務發布WCF服務【轉載】

來源:互聯網
上載者:User

原文地址:http://hi.baidu.com/grayworm/blog/item/1d2ccdd6cc23b12506088b6b.html

上一篇文章中我們通過編寫的控制台程式或WinForm程式來為本機或遠程機提供WCF服務的方式,我們稱這種方式為Self-Host服務發布方式,這一篇文章我們來看一下如何編寫Windows服務來發布WCF服務。

第一步:建立Windows服務程式WindowsServiceHost


《圖1》


《圖2》

第二步:向ConsoleBookServiceHost程式中添加兩個引用:一個是WCF服務庫Services項目的引用,另一個是System.ServiceModel引用。

第三步:修改Service1的屬性
在Service1的設計介面中右擊,選擇“屬性”,把其中的(Name)和ServiceName都改為BookServiceHost


《圖3》

第四步:在Service1中編寫代碼如下


《圖4》

第五步:配置App.Config。
在這裡我們不再詳細說明如何配置了,我們直接把上一次SelfHostBookService項目中的App.Config複製過來卻可


《圖5》

到這裡我們已經作好一個發行就緒BookService服務的Windows Service宿主程式了。
下面我們要看一看如何把這個Windows Service運行起來。

第六步:為服務添加安裝程式。
在Service1設計介面中右擊,選擇“添加安裝程式”


《圖6》
產生安裝程式組件,出現介面如下


《圖7》
serviceProcessInstaller1:服務安裝的資訊


《圖8》
serviceInstaller1:服務本身的資訊


《圖9》
編譯成功

第七步:安裝上面編寫完的服務
開啟VS2008命令視窗,進入當前項目的bin/Debug檔案夾中,執行命令 :installutil WindowsServiceHost.exe


《圖10》


《圖11》

第八步:啟動BookServiceHost服務
開啟服務管理員,我們可以看到我們剛剛註冊上的服務已經存在了,但還沒有啟動,右擊“啟動”


《圖12》

第九步:測試服務:
開啟IE,在地址欄中輸入:http://localhost:8081/BookService 出現下面的介面


《圖13》
在VS2008命令視窗中輸入:wcftestclient http://localhost:8081/BookService 出現下面的介面


《圖14》
調用相應終結點的方法添加書籍,運行正常。

 

 

 

===============================我是分割線========================================================

這裡在給出打包部署windows服務的方法

Windows服務在Visual Studio 以前的版本中叫NT服務,在VS.net啟用了新的名稱。用Visual C# 建立Windows服務不是一件困難的事,本文就將指導你一步一步建立一個Windows服務並使用它。這個服務在啟動和停止時,向一個文字檔中寫入一些文字資訊。

第一步:建立服務架構
要建立一個新的 Windows 服務,可以從Visual C# 工程中選取 Windows 服務(Windows Service)選項,給工程一個新檔案名稱,然後點擊 確定。

你可以看到,嚮導向工程檔案中增加WebService1.cs類:

其中各屬性的含意是:

ü         Autolog                 是否自動寫入系統的記錄檔

ü         CanHandlePowerEvent     服務時候接受電源事件

ü         CanPauseAndContinue          服務是否接受暫停或繼續啟動並執行請求

ü         CanShutdown 服務是否在運行它的電腦關閉時收到通知,以便能夠調用 OnShutDown 過程

ü         CanStop                              服務是否接受停止啟動並執行請求

ü         ServiceName                       服務名

 

第二步:向服務中增加功能
在 .cs代碼檔案中我們可以看到,有兩個被忽略的函數 OnStart和OnStop。

OnStart函數在啟動服務時執行,OnStop函數在停止服務時執行。在這裡,當啟動和停止服務時,向一個文字檔中寫入一些文字資訊,代碼如下:

protected override void OnStart(string[] args)

{

FileStream fs = new FileStream(@"d:\mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine("mcWindowsService:         Service Started"+DateTime.Now.ToString()+"\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();

 

}

 

protected override void OnStop()

{

FileStream fs = new FileStream(@"d:\mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine(" mcWindowsService: Service Stopped "+DateTime.Now.ToString()+"\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();

}

第三步: 將安裝程式添加到服務應用程式

Visual Studio.NET 隨附有安裝組件,可用來安裝與服務應用程式相關聯的資源。安裝組件在正在安裝到的系統上註冊一項單個的服務,並使服務控制管理員知道該服務的存在。

要正確安裝服務,並不需要在安裝程式中進行任何特殊編碼。但是,如果需要向安裝進程添加特殊功能,則可能偶爾需要修改安裝程式的內容。

       將安裝程式添加到服務應用程式的步驟是:

1:在解決方案中,訪問要向其中添加安裝組件的服務的Design視圖。

2:在屬性視窗中,單擊添加安裝程式連結

這時項目中就添加了一個新類 ProjectInstaller 和兩個安裝組件 ServiceProcessInstaller 和 ServiceInstaller,並且服務的屬性值被複製到組件。

3:若要確定如何啟動服務,請單擊 ServiceInstaller 組件並將 StartType 屬性設定為適當的值。

ü         Manual      服務安裝後,必須手動啟動。

ü         Automatic    每次電腦重新啟動時,服務都會自動啟動。

ü         Disabled     服務無法啟動。

4:將serviceProcessInstaller類的Account屬性改為 LocalSystem

     這樣,不論是以哪個使用者登入的系統,服務總會啟動。

 

第四步:產生服務程式

通過從產生菜單中選擇產生來產生項目。

注意   不要通過按 F5 鍵來運行項目——不能以這種方式運行服務項目。

第五步:安裝服務

訪問項目中的已編譯可執行檔所在的目錄。
用項目的輸出作為參數,從命令列運行 InstallUtil.exe。在命令列中輸入下列代碼:
installutil yourproject.exe
卸載服務

用項目的輸出作為參數,從命令列運行 InstallUtil.exe。

installutil /u yourproject.exe

http://www.cnblogs.com/laiwen/archive/2005/08/21/219590.html

打包:

為服務建立安裝項目

在[檔案] 功能表上指向“添加項目”,然後選擇“建立項目”。
在“項目類型”窗格中選擇“安裝和部署項目”檔案夾。
在“模板”窗格中選擇“安裝項目”。將項目命名為 MyServiceSetup。
安裝項目隨即添加到解決方案。

然後,將 Windows 服務項目的輸出 MyNewService.exe 添加到安裝項目中。

向安裝項目添加 MyNewService.exe

在方案總管中,右擊“MyServiceSetup”,指向“添加”,然後選擇“項目輸出”。
出現“添加項目輸出組”對話方塊。

在“項目”框中選擇“MyNewService”。
在列表框中,選擇“主輸出”,然後單擊“確定”。
MyNewService 的主輸出的項目項被添加到安裝項目中。現在添加自訂動作以安裝 MyNewService.exe 檔。

向安裝項目添加自訂動作

在方案總管中右擊安裝項目,指向“視圖”,然後選擇“自訂動作”。
出現自訂動作編輯器。

在“自訂動作”編輯器中右擊“自訂動作”節點,然後選擇“添加自訂動作”。
出現“選擇項目中的項”對話方塊。

在列表框中雙擊“應用程式檔案夾”將其開啟,選擇“主輸出來自 MyNewService(活動)”,然後單擊“確定”。
主輸出被添加到自訂動作的所有四個節點,即“安裝”、“提交”、“復原”和“卸載”。

在方案總管中,右擊 MyServiceSetup 項目並選擇“產生”。
安裝 Windows 服務

若要安裝 MyEventLog.exe,請右擊方案總管中的安裝項目,並選擇“安裝”。
啟動和停止服務

通過執行下列操作之一開啟服務控制管理員:
在 Windows 2000 Professional 中,在案頭上右擊“我的電腦”,然後單擊“管理”。在“電腦管理”控制台中,展開“服務和應用程式”節點。
- 或 -

在 Windows 2000 Server 中,單擊“開始”,指向“程式”,單擊“管理工具”,然後單擊“服務”。
注意 在 Windows NT 4.0 版中,可以從控制台中開啟該對話方塊。
現在應該看到 MyNewService 列在視窗的“服務”地區中。

從列表中選擇您的服務,右擊該服務,然後單擊“啟動”。
右擊該服務,然後單擊“停止”。
驗證服務的事件記錄輸出

開啟伺服器總管並訪問“事件記錄”節點。有關更多資訊,請參見在伺服器總管中處理事件記錄。
注意 伺服器總管的“伺服器”節點在 Visual Basic 和 Visual C# .NET 的標準版中不可用。有關更多資訊,請參見 Visual Basic 標準版功能或 Visual C# 標準版的功能。
找到 MyNewLog 的列表並展開它。您應該看到服務所執行操作的項。
卸載服務

在“開始”菜單上,開啟“控制台”並單擊“添加或刪除程式”,然後找到您的服務並單擊“刪除”。
還可以通過右擊 .msi 檔案的程式表徵圖並選擇“卸載”來卸載該程式。
注意 如果是在 Windows 2000 上安裝了服務,則必須重新啟動系統後才能重新安裝服務。在 Windows 2000 中,服務在系統重新啟動之前不會完全刪除。  

 

=============

以上經過測試均無問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.