2016-04-27 77 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,性能肯定會增加。但這取決於您的架構決策,並取決於您的非功能需求。我完全推薦的一件事是從業務規則中抽象出將緩存策略分開的緩存層。因此,您可以稍後將其切換爲更快或可擴展的解決方案,以滿足您的需求。 –