【问题标题】:WCF Client: How to optimize Service calls?WCF 客户端:如何优化服务调用?
【发布时间】:2011-08-30 15:32:20
【问题描述】:

我正在开发一个 WPF 客户端,它与使用 NHibernate 将数据保存在数据库中的 WCF Web 服务进行交互。

我了解我可以向我的客户端添加服务引用,以便从 Web 服务的元数据生成类。然后,这些类将允许我通过简单地实例化对象并使用它们调用方法来与我的服务交互。

我的问题是:

我应该按原样使用这些对象,还是通过将服务调用“包装”在一个处理与 Web 服务的所有通信的类中来进行任何可能的改进?

换句话说,每次我想与我的服务通信时在我的客户端中创建一个代理是否会在性能方面付出高昂的代价?如果是这样,我是否需要创建一个“包装”生成的类并保留通道的类?

除了简单地创建代理并使用它与服务交互之外,您还可以推荐哪些改进?

谢谢

【问题讨论】:

    标签: .net wcf wcf-client


    【解决方案1】:

    请允许我将您引向 this article,它讨论了客户端代理中的通道缓存。

    【讨论】:

    • 谢谢Jesse,我会看文章的。这可能正是我所需要的。
    • 您还应该look at this question and the answers 获得有关处理 WCF 如何为 ClientBase 继承的代理实现 Dispose 模式的建议。如果您为生成的代理编写自己的包装器,则需要考虑到这一点。
    • 哇,Sixto,这让我想到了,谢谢!我也想为此创建自己的答案:stackoverflow.com/questions/573872/…
    • 通过阅读 Jesse 的链接和浏览网页,我了解到,从 .NET 3.5 开始,如果您使用 SVCUTIL 的自动生成代理,通道工厂会自动为您缓存(大部分时间)。条件在文章中有详细说明。至于 Sixto 的链接,您可以在此处找到 Dispose 问题的解决方案(适用于 Visual Studio 2010):wcfproxygenerator.codeplex.com/SourceControl/list/patches。此插件将使用生成正确处理异常的代理的工具替换 Visual Studio 的服务引用代理生成工具。简而言之,不需要包装器。 :)
    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多