2010-02-12 66 views
4

如何生成代理的代理,這是我的服務:如何產生WCF服務

using System; 

// Service.cs file 
namespace FirstWcfService 
{ 
    public class Service : IService 
    { 
     #region IService Members 

     public string Hello() 
     { 
      return ("Hello WCF"); 
     } 

     #endregion 
    } 
} 
+0

如果你使用一個通道工廠,你不需要。這很符合你的要求。看到答案,您的其他問題 – 2010-02-12 15:54:05

回答

9

首先,確保您要引用的服務已啓動並正在運行。

然後,在Visual Studio的解決方案資源管理器,平「添加服務引用」:

alt text http://i46.tinypic.com/nmz4ox.png

在出現,輸入您的服務地址,然後單擊「轉到」對話框:

alt text http://i45.tinypic.com/282008m.png

這應該連接到您的服務,探索的元數據,如果一切順利的話,你會在卵石的中間部分看到您的服務(該服務合同及其方法) N:

alt text http://i50.tinypic.com/5p2wyf.png

在單擊「確定」太快 - 注重在左下角的文本框「命名空間」 - 你可以輸入一個命名空間中,你的服務引用(類它生成)將生活。我通常使用類似(project).(servicename).Adapter的東西 - 選擇對您有意義的任何內容。

現在,在Solution Explorer中,你會看到你剛剛提到的服務的新圖標 - 當你點擊「顯示所有文件」按鈕,在解決方案資源管理器工具欄上,你會看到所有的生成的文件。你的班級居住的那個總是叫做Reference.cs

alt text http://i50.tinypic.com/fp9uv6.png

當你敢不敢打開該文件:-),你會看到,你將擁有一個名爲(yourservicename)Client類,這是你需要在你的客戶端代碼來實例化的東西 - 它會承載所有的定義的服務方法,您現在就可以從你的代碼中調用:

alt text http://i48.tinypic.com/3143tyr.png

希望這有助於!

+0

優秀穿行馬克! – ChrisF 2010-02-12 16:50:10

+0

@marc_s:不知道爲什麼,對我來說它不是生成(yourServiceName)客戶端類。雖然我可以在上面的屏幕截圖中看到它。任何想法? – 2014-08-17 13:05:04

2

在配置你的WCF服務的訪問,你有兩個選擇:

選擇一是使用自動生成的對象

var proxy = new MyServiceProxyClient(); 
proxy.open(); 
//do work 
proxy.close(); 

選項2是使用信道工廠

ChannelFactory<IMyService> channel = 
    new ChannelFactory<IMyService>("bindingNameFromYourConfigFile"); 
IMyService client = channel.CreateChannel(); 

client.DoAwesomeStuff(); 

這是一個非常有用的信息blog post您可能想了解何時以及爲什麼要使用這些方法。這screencast也會幫助你。