【发布时间】:2012-06-15 10:05:35
【问题描述】:
我正在使用命名管道 WCF 服务,它有大约 1000 种方法(是的,我知道这不是一个好习惯,但它是生活......)。
我遇到的问题是,在启动 WCF 服务时,ServiceHost 类的构造函数大约需要 10 秒。通过跟踪,我发现时间都花在了准备服务描述上(ServiceHostBase 类的InitializeDescription 方法)。我猜是因为这个服务契约中定义的方法太多了。
哪位大神可以帮忙解答一下如何才能加快这个大服务合同的启动时间?
我知道在一个服务合同中定义这么多方法并不是一个好习惯。但我无法更改服务合同(例如将其分成几个较小的合同)。你知道,这才是真正的生活……
谢谢。
【问题讨论】:
-
如果不能重构糟糕的设计是你的生活,那么我强烈建议你改变你的生活。 WCF 必须找到它需要发布的所有方法和类型以创建元数据(WSDL 等),当你拥有的类型和方法越多时,它本身就会越慢。
-
好 ieal :) 但改变我的生活并不是我近期的计划。回到问题上来。此 WCF 服务驻留在自托管的桌面应用程序(基于 Windows)中,用于与另一个进程通信。合同中定义的所有方法都是必需的。用户可以随时启动这个应用程序,并且可以调用1000个操作中的任何一个操作。所以我们要在启动的时候准备好所有的方法。我想知道我是否可以加快准备它们的时间。例如,在开始之前“预先准备”它们?也许在开始之前“预编译”它并与某个文件相同?