2010-08-16 134 views
1

我有一個WCF服務(與servicecontracts,datacontracts等),就像這樣:服務引用VS程序集的引用,使用WCF服務

[ServiceContract(Namespace = "http://company.com/MyCompany.Services.MyProduct")] 
public interface IService 
{ 
    [OperationContract] 
    CompositeType GetData(); 
} 

[DataContract(Namespace = "http://company.com/MyCompany.Services.MyProduct")] 
public class CompositeType 
{ 
    // Whatever 
} 

如果我想在客戶端使用的服務,我認爲有有兩種選擇:

  1. 使用服務參考(使用WDSL)URL發佈WCF服務;
  2. 使用Assembly Assembly to assembly包含Interfaces,Contracts,DataContracts類。

我使用.NET to .NET方案的90%。

哪一個是最好的方法?哪個彼此的優點?

回答

1

如果您真的想要將服務用作服務,那麼您必須使用服務引用。否則,你只是添加一個依賴到另一個DLL,就像其他任何程序集引用一樣。

另外...如果您的服務連接到任何只能在服務器上運行的數據庫或網絡資源,服務引用實際上是您的唯一選擇。如果您添加程序集引用,客戶端將嘗試與資源建立直接連接......這很可能不應公開。

添加直接程序集引用而不是服務引用的好處在於,您不必經歷所有調用代碼(作爲服務添加的代碼)的開銷(Web服務器處理請求,實例化您的服務,序列化對象,執行代碼,序列化結果以及將所有內容傳回給客戶端)。

+1

程序集引用只有inteface(契約),實現是一個WCF服務。只有我在客戶端添加對ServiceContracts的引用。 – Kiquenet 2010-08-18 06:18:38

+0

如果我有服務參考;如果該服務針對客戶的任何給定實例在不同的計算機上運行(例如,與相同類型的各種遠程服務進行通信),將如何更新服務參考以反映服務的不同位置或它是否需要?客戶也可以在與服務斷開連接時使用這些類型? – Ken 2016-02-05 18:26:35