【问题标题】:Wcf config settings for .svc service for maximum performance and restricted clients.svc 服务的 Wcf 配置设置以获得最佳性能和受限客户端
【发布时间】:2012-02-24 20:13:22
【问题描述】:

我在 Windows 2003 服务器的 IIS 上安装了 wcf .svc 服务,在 asp.net 应用程序中安装了客户端,安装在同一域中的不同 Windows 2003 服务器上。 IIS 主机上只能使用 AFAIK 的 http 传输。

我需要指定配置设置,即

  1. 最大化性能

  2. 只允许我的客户(位于我的域中)使用我的服务。 该服务不应该被发现,也不应该被未经授权的客户使用。

更新:我认为消息证书加密可以满足第二个要求,但从性能角度来看并不好。

该服务由带有字符串或字符串参数列表的数字操作组成

[OperationContract]
List<string> TranslateList(List<string> textList);

字符串很短,列表中的数字通常也很小。客户端正在同步调用服务并期望快速收到响应。

请建议使用哪些配置设置?

是否会针对其他配置更改设置,例如

配置B:客户端和服务位于同一个 Windows 2003 服务器上

配置C:客户端和服务位于在同一个 Windows 2008 服务器上(我希望我可以使用命名管道传输)

配置D:客户端和服务位于不同的 Windows 2008 服务器上。(我希望我可以使用 TCP 传输)

【问题讨论】:

  • “在 IIS 主机上只能使用 AFAIK 的 http 传输” - 不完全是。如果您安装 Windows Server AppFabric,那么您的 IIS 托管的 WCF 服务可以公开 TCP、MSMQ命名管道 协议,但后者仅是 localhost。 AppFabric - Features and Capabilities

标签: wcf security iis configuration


【解决方案1】:
  1. 性能:您可以压缩您的请求和响应。您可以使用gZip 实现此目的。
  2. 仅限我的客户
    • 从您的 web.config 中删除 mex 绑定,然后将 httpGetEnabled 设置为 false。这样,没有人可以创建您的服务的代理。
    • 您可以使用 Http Headers 检查请求是否仅来自您的客户端。阅读有关此here 的更多信息。

关于选择绑定here是一篇好文章

配置B:WSHttpBinding
配置C:NetNamedPipeBinding
配置D:NetTcpBinding

您还可以检查 NetTcpBinding here 的性能

希望对你有所帮助。

【讨论】:

  • 删除 mex 并禁用 httpGetEnabled 是指没有人可以自动生成服务代理吗?
  • 添加 Http 标头将不起作用。黑客也可以添加相同的标题。
  • 是的。没有人可以为您的班级创建代理。您可以放置​​动态标头,例如会话 ID。您可以限制每分钟的通话次数,这样就没有人可以玩服务了。由于您的服务客户端是 ASP.Net,因此最终用户将看不到服务的端点(假设所有 AJAX 调用都通过 ASP.Net)。
  • @MichaelFreidgeim 我不认为如果你公开一个 WSDL 那就是世界末日。无法保证无限数量的猴子无论如何都无法重新创建 WSDL。最好专注于在连接到服务的线路上设置尽可能多的安全性(在这种情况下,如果您不想通过证书使用主机身份验证,则应该使用 SSL)并通过自定义服务行为或扩展执行授权。不要在方法中这样做。 Lowy, Programming WCF Services: Mastering WCF and the Azure AppFabric Service Bus
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2011-07-01
相关资源
最近更新 更多