频繁访问 WCF 服务的最佳方式
Best Way To Frequent Access to WCF Service
我有 WCF 服务。 WCF 服务公开了一组直接与 CRM 对话的方法。我从这些服务中获取的大部分数据都是查找数据,而且我经常获取这些数据。这会降低性能,因为我网站中的单个表单包含从 CRM 获取的多个查找。
为了解决这个问题,我想到了:
*创建一个 windows 服务,该服务将抓取所有数据并保存在本地数据库中。该服务将在特定时间后 运行 以确保所有数据同步。
*缓存数据。对于检索 cretin 类型查找的方法的每次调用,数据将被缓存,这样任何类似的调用将 return 缓存的数据。
我的问题是:
1-还有比这更好的方法吗?
2-如果不是,哪个更好?
我不建议创建缓存服务来提供对 CRM 数据的更快访问。它只是一个具有持久性的远程缓存,它也可以像您提到的第二种方法那样集成到您的 wcf 服务中。
如果您能保证所选数据在例如 1 小时前从 CRM 系统中选择时仍然有价值,那么您使用缓存的方法在这里是正确的方法。问题是,您的客户是否可以接受在过去一小时内错过 CRM 中可能完成的最新更改。
只是说->小心缓存。
我的建议:
如果你的 wcf 服务访问频率很高,比如每秒 100 次,缓存 5-10 秒通常可以通过不减少数据的实际情况来极大地减少访问。
但是:
大多数数据库系统和表旨在提供快速、并发的数据读取访问(f.e。分页)。 Ms-Sql 例如存储已知的、经常使用的脚本和存储过程的执行计划,以提高未来调用的性能。
因此,在引入缓存(应经常谨慎使用)之前,首先确保您的 CRM 确实无法处理您的读取访问。
我有 WCF 服务。 WCF 服务公开了一组直接与 CRM 对话的方法。我从这些服务中获取的大部分数据都是查找数据,而且我经常获取这些数据。这会降低性能,因为我网站中的单个表单包含从 CRM 获取的多个查找。
为了解决这个问题,我想到了:
*创建一个 windows 服务,该服务将抓取所有数据并保存在本地数据库中。该服务将在特定时间后 运行 以确保所有数据同步。
*缓存数据。对于检索 cretin 类型查找的方法的每次调用,数据将被缓存,这样任何类似的调用将 return 缓存的数据。
我的问题是:
1-还有比这更好的方法吗?
2-如果不是,哪个更好?
我不建议创建缓存服务来提供对 CRM 数据的更快访问。它只是一个具有持久性的远程缓存,它也可以像您提到的第二种方法那样集成到您的 wcf 服务中。
如果您能保证所选数据在例如 1 小时前从 CRM 系统中选择时仍然有价值,那么您使用缓存的方法在这里是正确的方法。问题是,您的客户是否可以接受在过去一小时内错过 CRM 中可能完成的最新更改。 只是说->小心缓存。
我的建议: 如果你的 wcf 服务访问频率很高,比如每秒 100 次,缓存 5-10 秒通常可以通过不减少数据的实际情况来极大地减少访问。
但是: 大多数数据库系统和表旨在提供快速、并发的数据读取访问(f.e。分页)。 Ms-Sql 例如存储已知的、经常使用的脚本和存储过程的执行计划,以提高未来调用的性能。 因此,在引入缓存(应经常谨慎使用)之前,首先确保您的 CRM 确实无法处理您的读取访问。