WCF中常見的幾種Host,承載WCF服務的方法

2021-04-25 03:57:49 字數 4042 閱讀 6960

1:寫在前面

我們都知道wcf在執行的時候必須自己提供宿主來承載服務。wcf 本身沒有附帶宿主,而是提供了乙個 servicehost 的類,該類允許您在自己的應用程式中host wcf 服務。然後呼叫 servicehost 的 open 方法即可。我們知道wcf是針對soa的一套技術.對於soa而言,我們必須確保服務能夠正常執行,平穩的執行,所以此時如何host我們的服務,用什麼來host我們的服務是很重要的,所以我們要為我們的應用程式選擇乙個合適的host方式是很有必要的.

2:常見的幾種host

使用visual studio.net可以建立以下幾種不同型別的託管應用程式:

winforms 應用程式

控制台應用程式

windows 服務

承載於 internet 資訊服務 (iis) 中的 web 應用程式

下面我會以乙個demo為例,來介紹這幾種常用的host.

3:hoster特徵

4:soultion結構圖

首先我們介紹在windows services中host wcf service.windows service 是由作業系統管理的程序,在.net環境中已經提供了這樣的模板,以windows services作為host是乙個很不錯的選擇:

windows services host對應用solution中的wcfwindowsserviceshost.

services contract和services

[servicecontract]

public inte***ce itest

public class test:itest

5:windows services host

首先我們建立乙個windows service 專案.

windows services專案中包含兩個檔案:service1.cs 檔案和 program.cs 檔案。其中 service1.cs 檔案包含服務實現,而 program.cs 檔案則用於例項化並實質上承載 windows 服務。要在 windows 服務內部承載 wcf 服務,只需執行 windows service的 start() 方法和 stop() 方法

servicehost host;

public windowservicetest()

protected override void onstart(string args)

protected override void onstop()

配置檔案:

事實我們可以看到編寫host在windows services上的wcf服務很簡單,windows services固然有很多好處,比如說隨作業系統一起啟動,無須人為的開啟,而且不限定你的繫結技術,話說windows service 有這麼多好處,當然也有不好的地方,比如安裝windows service.我們必須通過installutil.exe 工具或通過安裝包中的自定義操作來安裝服務。這個工具在安裝sdk後會自帶的,installutil的使用也很簡單,下面我們以自定義安裝服務為例

在 windows 服務專案中開啟 service 類的設計器檢視。在右擊視窗中,單擊「新增安裝程式」,這樣我們就會新增了乙個名為projectinstaller的元件,在專案中雙擊這個檔案,有乙個servicesinstall1的元件,我們右擊可以修改他的名字,起動型別等,

為了建立安裝 windows 服務的安裝程式,我們需要向solution中新增安裝程式和部署專案(windowsservicesetup)。以下步驟描述了如何向解決方案新增安裝程式和部署專案:

新建乙個安裝專案:

2:右鍵單擊安裝專案,指向 view->custome action.

3:右擊customer action,將主輸出的檔案加入custome action中

4:生成專案,並安裝,這樣我們就可以啟動我們的servcies裡.我們可以開啟windows services管理工具檢視我們安裝後的servcie

若要在 iis 中host wcf services,需要有乙個擴充套件名為 .svc 的檔案。事實上在我們專案模板中已經提供了這樣的模板.該檔案將服務與其實現相關聯,並且是 iis 自動建立 servicehost 的手段。iis 將接管服務與 servicehost 之間的互動,不必再由您自己例項化和啟動 servicehost。.svc 檔案的第一行包含一條夾在 asp.net 指令內的指令,用於指示檔案指向哪個服務。在 iis 中承載 wcf 服務的預設行為是該 iis 控制 servicehost 的例項化。

我們也可以在其他專案模板中新增svc檔案:

在 iis 中進行host意味著您必須在應用程式的 web.config 檔案中設定 wcf 配置。web.config 如下

在 iis 中host wcf services的預設行為是該 iis 控制 servicehost 的例項化。在client端我們直接引用位址,缺省會在我們的客戶端生成**檔案,無須我們使用svcutil工具來生成客戶端的**.

注意:endpoint的address應該為空,以就是說svc 檔案將會確定服務的 base 位址

這種方法再簡單不過了,因為大多數時候在測試專案的時候,我們都會用這樣的host,

啟動host:

using (servicehost host = new servicehost(typeof(test)))

client:

public class coclient : clientbase, itest

}

SQL中常見的幾種連線

left join 和 right join 規律 a表left join b表 則返回a表的所有符合條件的記錄。a表的字段不會為null,而b表沒有對應記錄時,字段值返回null b表left join a表 則返回b表的所有符合條件的記錄。b表達字段不會為null,而a表沒有對應記錄時,字段值返...

mysql中常見的幾種索引

主鍵索引 資料列不允許重複,不允許為null,乙個表只能有乙個主鍵。唯一索引 資料列不允許重複,允許為null值,乙個表允許多個列建立唯一索引。可以通過 alter table table name add unique column 建立唯一索引 可以通過 alter table table na...

說下js中常見的幾種迴圈

var arr 1,2,3,4,5 arr.foreach item,index,array var arr 1,2,3,4,5 var arr1 arr.map item,index,array console.log arr1 2,4,6,8,10 var arr 1,2,3,4,5 var f...