我在NetTCP Binding上有一个WCF应用程序。在客户端应用程序中,我已将其代理类对象创建为静态。此客户端应用程序可能会在部署后运行4-8小时。基本上在登录窗口我创建并初始化 DataServiceClient 代理类(主要是数据库插入和更新)并在我的应用程序中使用相同的对象,直到用户关闭主窗口。 创建代理类的静态对象是否有任何不利影响(性能明智)?如果是,那我怎么能避免这种情况。在使用静态对象之前,我在每个窗口(在需要的地方)创建了单独的对象,但这增加了窗口加载时间。
如何提高WCF性能。我对它的表现感到满意,但这可能是我的错觉。
答案 0 :(得分:3)
使用相同的实例没有错,但请确保您的错误处理良好。否则,当发生错误并且您必须重新启动整个应用程序时,代理对象将进入故障状态。当状态发生变化时,您可以附加一些事件。 代理对象进入故障状态后,您必须创建一个新的代理对象,无法恢复出现故障的代理对象。
我发现使用邮件头减少了我实际需要公开的方法数量,但这实际上取决于您的服务的功能。 否则我会建议尽可能使用流媒体。保持数据尽可能小。使用二进制格式化程序。
答案 1 :(得分:1)
看起来你的客户端是一个Windows窗体应用程序 - 只要你不在代理服务器上做任何多线程或回调等,静态服务代理就可以了。基本上,在这种情况下,你需要同步对静态变量的访问。
概括地讲,可以改进WCF性能