2016-04-27 73 views
0

我正在使用SQL CE(4.0)数据库作为本地高速缓存以访问主SQL Server(Express 2014)中特定视图的记录。我的算法的每次迭代我想验证本地缓存并使用主服务器的必要记录进行更新。在数据库之间快速传输行数

我目前的解决方案序列化一个包含行的DataTable(使用SyncFramework代理)并通过WCF将其反序列化并插入到缓存中。理由是只需要打开一个单一的WCF端口。问题是这对我的目的来说太慢了。

如果我放宽单端口要求,我可以从另一种方法获得更好的性能吗?

+0

带有JSON的Web API并使用SqlCeBulkCopy在客户端上插入快速或TableDirect ADO API。 – ErikEJ

回答

0

不,启用多个端口不会增加数据传输或处理的性能。 TCP端口不是可以强调的物理资源,而是一个逻辑结构,用于标识特定进程或服务类型。

一些东西,你可以做些什么来提高客户机和服务器之间的通信性能:

  • 使用更快的结合:像NetTcpBinding的或NetNamedPipeBinding。
  • 在将数据发送到服务器之前压缩数据,以便将较少的信息从客户端传输到服务器。 (使用DataTable可能不是最好的策略)。
  • 异步进行服务调用。所以你不必等待服务器响应继续在客户端工作。
  • 微调WCF以并行接受更多连接。
  • 如果您不需要它,请使用自托管服务以避免IIS开销。
+0

对不起,我不认为我很清楚。我只需要一个端口,我同意。 我正在寻找根本不同的解决方案。我可以通过网络直接做ADO吗?这将完全绕过WCF序列化。 – bbush

+0

你可以直接做ADO,性能肯定会增加。但这取决于您的架构决策,并取决于您的非功能需求。我完全推荐的一件事是从业务规则中抽象出将缓存策略分开的缓存层。因此,您可以稍后将其切换为更快或可扩展的解决方案,以满足您的需求。 –