我想了解以下情况的选项:
我有一个C#winforms应用程序(在VS 2010中开发)分发到该国的许多办事处。应用程序与位于不同位置的主服务器上的C#Web服务进行通信,并且在另一个位置有一个数据库(SQL Server 2012)。 (所有服务器都运行Windows Server 2008)
总部(我们所在地)利用相同的前端来管理数据库中的某些信息,这些信息需要随时可供所有办公室使用 - 实时。同时,他们更改的任何数据都需要在总部随时可用,因为我们有一个实时仪表板Web应用程序,可监控整个站点的统计数据。
目前,用户抱怨应用程序运行的速度。他们说这真的很慢。我们在一个关键业务环境中工作,每分钟等待都可能意味着失去一个客户。
我研究过以下选项,但不是来自数据库背景,所以不太确定我的方案的最佳路径是什么。
我目前在应用程序启动时缓存了大量的查找数据,但这也需要2-3分钟才能完成,这是不可接受的!
有没有人有任何想法?
答案 0 :(得分:2)
通过Web服务运行所有内容,不需要在客户端本地部署其他SQL Server。除非WS也在本地部署,否则WS将无法与这些数据库通信。
在建议任何具体改进之前,您需要对发生瓶颈的地方进行基准测试。各种客户端和Web服务之间的延迟是什么,然后是Web服务和数据库?数据库是否显示等待?一旦你知道了最糟糕的情况,那就改进一下,然后逐渐减少。
一些一般性的想法,但是:
UPDATE 在你的评论之后,另外两个想法。如果您的Web服务有效负载很大,您可以尝试在Web服务上添加压缩(如果尚未实现)。
您还可以更新客户端以在线程中异步执行WS调用,或者如果您使用async / await使用.NET 4.5。这至少允许客户端使用UI,但不必修复数据加载时间的任何问题。