惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
Y
Y Combinator Blog
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
N
News and Events Feed by Topic
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
博客园 - 叶小钗
B
Blog
Vercel News
Vercel News
T
Tenable Blog
T
The Exploit Database - CXSecurity.com
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
F
Fortinet All Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes
L
LangChain Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Check Point Blog
A
About on SuperTechFans
W
WeLiveSecurity
The GitHub Blog
The GitHub Blog

博客园 - Jingnan

微信支付开发 c# SDK JSAPI支付开发的流程和微信大坑 T4模板根据数据库表和列的Description生成代码的summary的终极解决方案 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程一 平台介绍 wcf几种调用方式的性能讨论 ASP.NET 4.0 URL路由改进支持 WPF 用webBowser 嵌套 URL地址 显示ReportViewer导出EXCEL的一些问题 简单的封装一个HTML 弹出对话框的空间 原型模式(Prototype) 恶性代码 - Jingnan - 博客园 AdvDataList分页 例码 问一个关于生成静态页面的问题 简单读区XML - Jingnan - 博客园 使用XMLDataSource简单实现多级下拉菜单 ASP.NET实现新闻页面的分页功能[生成静态版] 更新 增加 用Table形式
WCF同样功能不同写法的性能问题
Jingnan · 2012-04-06 · via 博客园 - Jingnan


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