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服务通道是什么时候打开的什么时候关闭的,是不是和以上的写法有直接关系, 主要考虑的性能方面有什么区别????