wcf几种调用方式的性能讨论

最近一直在研究WCF ,所以在这里和大家讨论一些小想法,

一、之前做过几个项目 WPF和Silverlight的 都用到了WCF做服务支持,感觉WCF不错,但是框架都不是我写的,所以最近一直在看这方面的资料,个人比较爱好web项目,之前一直用的是三层架构,所以有一个想法是用web项目+WCF+EF4 实现B/S结构的搭建 ,在网上看这么用的人特别少,不知道是为什么,大家说说看法??

 

二、在网上看了很多WCF调用的例子,所以我也写了一个

服务接口如下:

namespace FIS.Contracts
{
[ServiceContract]
public interface ICalculator
{
[OperationContract]
string Add(double x, double y);
}
}

我在客户端调用的时候专门做了一层代理

namespace Client.Proxy
{
public class ProxyCalculatorClient : BaseClientProxy<ICalculator>, ICalculator
{
public ICalculator ICalculator
{
get {
return Channel;
}
}

public ICalculator GetICalculator()
{
return Channel;
}

public string Add(double x, double y)
{
return Channel.Add(x, y);
}
}
}


我的问题来了,客户端调用Add方法的时候有以下3种方法

ProxyCalculatorClient c = new ProxyCalculatorClient();

// 调用1
c.ICalculator.Add(8,3)

// 调用2
c.GetICalculator().Add(8, 3);

// 调用3
c.Add(8, 3);

以上3个方式都可以实现 Add方法,为什么我看大多数的写法都是去实现接口然后把方法一个一个分开,

个人认为其实第一种方式或第二种方式比较简单,直接把接口返回就行了,客户端想用哪个方法就用哪个方法,这里就是个人不明白的地方

请大虾们指点一下 以上3种方法的差别,不太了解调用WCF服务通道是什么时候打开的什么时候关闭的,是不是和以上的写法有直接关系, 主要考虑的性能方面有什么区别????

 

posted on 2012-04-06 00:36  Jingnan  阅读(1289)  评论(4编辑  收藏  举报

导航