2011-01-06 186 views
3

我發現沒有消費的幫助WCF服務的2種方式從svcutil.exe如何在不使用svcutil.exe的情況下使用WCF服務?

  • ClientBase<IService>
  • ChannelFactory<IService>

我知道ClientBase可能使用ChannelFactory。但我談論寫作之間的選擇:

public sealed class ServiceClient 
    : ClientBase<IService>, IService 
{ 
    ReturnType IService.MethodName(ParameterType parameterName) 
    { 
     return Channel.MethodName(parameterName); 
    } 
} 

// later 
IService client = new ServiceClient(); 
var result = client.MethodName(parameterName); 

ChannelFactory<IMyService> channelFactory = new ChannelFactory<IMyService>(); 
channelFactory.Open(); 

var channel = channelFactory.CreateChannel(); 
var result = channel .MethodName(parameterName); 

channelFactory.Close(); 

哪一個我應該選擇?

回答

5

您有什麼選擇標準?

在功能上,最後,兩種方法都能很好地工作,並且基本上可以爲您提供相同的結果。

你想基於什麼決定?

我的建議:選擇你感覺更舒適的風格!與ChannelFactory<IService>的方法可能需要你寫越來越少的世俗代碼 - 所以也許這對於這種方法會有一點優勢。

這兩種方法都要求在通道的兩端都有.NET,並且該服務和客戶端共享與其中的服務和操作契約的通用程序集 - 因爲客戶端必須至少知道服務接口才能能夠使用連接到服務的兩種方式中的任何一種。

相關問題