宿主
每個WCF服務都必須托管在Windows進程中,該進程稱為宿主進程(host process)
單個宿主進程可以托管多個服務,相同的服務類型也可以托管在多個宿主進程中。
?
wcf中托管服務一般有一下四種:
寄宿方式 | 描述 |
Console寄宿 | 利于開發調試,但不是生產環境中的最佳實踐。 |
winform寄宿 | 方便與用戶進行交互,用戶想開就開,想關就關,但如果機器重啟了,不得不自己手動開一下,危險+麻煩。 |
IIS寄宿 | 此寄宿在實戰項目中得到了廣泛的應用。好處有:隨系統啟動和停止。iis有大量的管理策略對其進行管理。即想利用wcf的功能,還想訪問asp.net的功能。 |
Window Service 寄宿 | 這個寄宿在實戰中也是廣泛運用的,同時也是隨系統開啟或者停止。 |
?
通信模式
WCF在通信過程中有三種模式:請求與答復、單向、雙工通信。
模式 | 描述 | 特點 |
請求與答復模式 | 客戶端發送請求,然后一直等待服務端的響應(異步調用除外),期間處于假死狀態,直到服務端有了答復后才能繼續執行其他程序。 | 請求與答復模式為WCF的默認模式,即使返回值是void 也屬于請求與答復模式。 缺點:如果用WCF在程序A中上傳一個2G的文件,那么要想執行程序B也許就是幾個小時后的事情了。如果操作需要很長的時間,那么客戶端程序的響應能力將會大大的下降。 優點:有返回值我們就可以向客戶端返回錯誤信息,如:只接收".rar"文件等信息。 |
單向模式 | 客戶端向服務端發送求,但是不管服務端是否執行完成就接著執行下面的程序。 | 優缺點與“請求響應模式”差不多倒過來。 特點:使用 IsOneWay=true 標記的操作不得聲明輸出參數、引用參數或返回值 |
雙工模式 | 雙工模式建立在上面兩種模式的基礎之上,實現客戶端與服務端相互的調用。相互調用:以往我們只是在客戶端調用服務端,然后服務端有返回值返回客戶端,而相互調用不光是客戶端調用服務端,而且服務端也可以調用客戶端的方法。 | 雙工模式是建立在以上兩種模式之上的模式,他們并不沖突。 支持回調的綁定有4種:WSDualHttpBinding、 NetTcpBinding、 NetNamedPipeBinding、 NetPeerTcpBinding |