/* by josh */

2014年9月22日 星期一

[WCF] 建立net.tcp之WCF服務

以下示範如何建立一個使用net.tcp協定的WCF server
其中合約定義在IFileRepositoryService.cs
而合約內容實作在FileRepositoryService.cs


步驟1.設定服務內容(於App.config中點選右鍵->編輯WCF組態)


  • 設定服務的名稱及服務所使用的行為名稱
  • 在主機中加入net.tcp的服務位址
    



  • 新增端點並將端點類型設為netTcpBinding,另外需指定合約名稱
        
步驟2.新增一個類型為netTCPBinding的繫結(Binding),並設定繫結各項參數


步驟3.於[進階].[服務行為]中新增一個服務行為(serviceBehavior);且因為使用net.tcp的關係,此處必須新增一個serviceMetadata用來給SvcUtil.exe產生Proxy

  • serviceMetada中必須將HttpGetEnabled改為True;並且於HttpGetUrl中指定SvcUtil.exe去找尋服務的位址,此處不可與WCF net.tcp 服務使用同一個port



步驟4.程式中撰寫開啟服務的程式碼

 ServiceHost host;
 FileRepositoryService service;
 service = new FileRepositoryService();
 host = new ServiceHost(typeof(FileRepositoryService));
            
            
 host.Faulted += new EventHandler(Host_Faulted) 
 try
 {
    host.Open();
 }

其中ServiceHost位於System.ServiceModel命名空間中

程式執行後便可在SvcUtil中利用serviceMetadata中的服務位址去產生Proxy檔案及client的.config檔案

之後便可於Client端程式中加入此cs檔案並且利用此class新增wcf物件,而Client端的.config則使用output.config中的內容即可