在SQL Server Compact和WCF服务之间有效地使用手动数据同步

时间:2014-02-05 10:42:17

标签: c# sql .net sql-server wcf

我有一个Web服务器和一个数据库服务器。 Web服务器上有一个WCF服务和一个使用它的网站。网站请求来自WCF服务的数据,WCF服务连接到数据库服务器,获取数据并将其返回到网站。

为了优化此过程并减少对WCF服务的调用,我决定在Web服务器上手动缓存数据。我能想到的一个选择是Microsoft Sync Framework。但后来我意识到我必须自己创建一个同步框架来实现我的目标。因为Microsoft Sync Framework不为我的进程提供任何选项。我的过程实际上是这样的:

  1. 网站请求数据。
  2. 网站的业务逻辑检查网站的App_Data文件夹中的压缩版(sdf)数据库是否可用。
  3. 如果存在,请从紧凑版中获取数据。
  4. 如果不存在,请连接到WCF服务并从主数据库服务器获取数据并将其复制到压缩程序,然后从压缩版中获取。
  5. 所以我想问的是,这种技术有效吗?如果是,是否有任何替代方法可以快速实现这项技术?或者我必须手动编写所有代码?

4 个答案:

答案 0 :(得分:1)

在某些情况下它可能很有效,但我可以建议您在本地SQL Server Express而不是Compact中使用presreve数据缓存。

SQL Server Compact的类型系统与SQL Server不同。我知道EF6支持两者,但我不会自己开始这个旅程......

在任何情况下都应该有理由说明为什么需要使用cache throwgh RDBMS ..

答案 1 :(得分:1)

它可以工作,但如果是我,我的目标是提高性能/缓存您的Web服务器和后端SQL服务器之间的调用,我不会选择sql server compact edition用于缓存目的。< / p>

redismemcached之类的内容可能是提高缓存层性能的更合适/更高性能的方法。紧凑的SQL Server可能会减少对后端服务器的调用次数,但它可能会以较慢的响应时间为代价。

答案 2 :(得分:1)

通过使用memcache可以提高性能。

这些是实现memcache的步骤

  1. 您必须创建一个窗口服务,它将从数据库中检索数据并以JSON格式存储在内存缓存中(键值对)。

  2. 对于网站创建处理程序文件作为API,将从内存缓存中检索数据并显示结果。

  3. 我已经在我的一个项目中实现了它,它以毫秒为单位检索数千个数据

答案 3 :(得分:1)

您还可以使用NHibernate二级缓存。有关更多信息,请阅读本文http://www.codeproject.com/Articles/529016/NHibernate-Second-Level-Caching-Implementation。它将数据存储在MemCache中,并检测记录的更改。

另一种缓存技术是AppFabric,您可以在此处查看更多详细信息:http://msdn.microsoft.com/en-us/library/ff383731(v=azure.10).aspx