|
18
|
| Nicholas Piasecki · 技术社区 · 17 年前 |
|
|
1
15
好吧,既然我已经花了几个小时研究各种方法,我想我会尝试一下我自己的问题。
所以我花了五个小时试图实现这一点,在
various
blogs
之后
但是
你看,创建WCF客户端代理的新方法是 more expensive you might think . 我自己编写了一个快速而肮脏的应用程序来测试性能:new()启动一个新代理并调用一个方法十次大约需要6秒钟,而new()启动一个代理并只调用该方法十次大约需要1秒钟的三分之五。这只是令人沮丧的性能差异。
所以我可以为客户端代理实现一个池或缓存,对吗?嗯,不,这不容易解决:客户端凭据信息处于通道工厂级别,因为它可能用于保护传输,而不仅仅是消息,而且一些绑定在服务调用之间保持实际传输的打开状态。由于客户端凭据对于代理对象是唯一的,这意味着我必须为当前网站上的每个用户都有一个唯一的缓存实例。内存中可能有很多代理对象,非常接近我一开始试图避免的问题!既然我必须去触摸
回到绘图板:我的第二种方法,也是我认为我现在将要使用的方法,是坚持客户机Web站点和WCF服务之间的X509证书安全性。我将在消息中发送一个自定义的“UserName”SOAP头,WCF服务可以检查该SOAP头,确定它是否来自受信任的子系统(如网站),如果是,则安装一个
Codeproject
和
random people on Google
这些都是很好的东西,因为它们帮助我快速启动和运行,即使在之后
running into a weird WCF bug when it comes to custom endpoint behaviors in configuration
这就是我最后做的。WCF服务中的实际服务代码可以执行以下操作
无论这些人是如何获得身份验证的,或者有些人住在SQL server中,或者有些人住在Active Directory中:
我希望这能帮助一些可怜的人。 |
|
|
2
0
对于匿名用户公共访问,请使用basichttpbinding,并在web.config文件中包含以下内容
|