2009-10-27 46 views
2

我正在設計一個C#中的Windows應用程序,它在第一次運行時創建一個本地數據庫(SQLite),並將其中的數據(大約200 MB甚至更多)作爲來自遠程服務器的數據流由用戶指定的標準。C#中的Windows應用程序?

目前我已計劃直接從應用程序訪問數據庫服務器。

問題:

  1. 是它作爲服務器自動管理連接和我節約開發一個TCP/IP接口,從應用程序中直接使用的數據庫服務器是一個好主意。
  2. 什麼可以是第二個選項?提供一個TCP/IP服務器或接口(寫它不費時?)。
  3. 由於數據量大,我應該使用壓縮?
+0

如果您打算直接訪問遠程數據庫,那麼本地數據庫何時/如何使用?你是否連接到遠程數據庫只是爲了下拉其數據的一個子集並使用它創建本地數據庫,然後從遠程數據庫斷開連接? – 2009-10-27 16:56:45

+0

首先,下載的數據不會改變,只是更新。數據的使用將非常頻繁,因此一旦在本地加載,就不會有遠程調用。 – Vishal 2009-10-27 17:06:48

+0

您的問題標題相當模糊。嘗試找到描述你的問題的東西。 – OregonGhost 2009-10-27 17:18:33

回答

1

沒有進入大的細節,我可以說,你可以使用ASP.NET C#(你可以選擇任何.NET語言),你可以使用POST發送和接收數據。

爲什麼你需要壓縮?你只是發送結果?如果它很大,可以使用現有的庫。我已經在過去使用sevenzipsharp沒有太多的問題。

編輯:服務器上可能有一個選項輸出數據gzip,所以你可能不需要使用任何東西。

+0

它是一個流數據和99%的接收。 – Vishal 2009-10-27 17:11:00

0

通常最好使用ADO.NET或LINQ to SQL(實體框架)直接連接到您的數據庫,除非用戶將在使用應用程序時斷開連接。

如果您打算讓用戶斷開連接,請繼續使用SQLite,或者您可以使用ADO.NET,它可以保存數據的XML文件,並像用戶計算機上的表一樣訪問它,而無需SQLite的額外依賴。

我不會使用壓縮,因爲C#沒有它的內置庫,並需要額外的依賴。

嘗試只使用.NET Framework而無需額外的DLL,並且您將擁有更易於安裝和維護的更靈活的應用程序。

ADO /實體框架 - http://msdn.microsoft.com/en-us/library/h43ks021.aspx

+0

僅供參考,.Net已經內置了對GZip的支持 - http://msdn.microsoft.com/en-us/library/system.io.compression.aspx – JonoW 2009-10-27 17:17:49

+0

但是隻有J#擁有創建ZIP文件的庫。 GZip不會創建一個.zip文件。 – 2009-10-28 12:34:24

3

隨着WCF你可以避免寫TCP/IP代碼的成本,並有一個獨立的服務器或託管在IIS的Web服務。此外,可以添加壓縮而無需更改代碼。

您必須嘗試使用​​和不使用壓縮。壓縮率高度依賴於數據,壓縮時間也是一個問題。

0

假設您的意圖是根據本地存儲的客戶端查詢拉下服務器上的數據子集,那麼出於安全性和控制的原因,您可能應該考慮使用Web服務,而不是直接暴露數據庫到互聯網。

有很多創建服務的選項 - WCF是新的主要方法。NET應用程序,並直接在服務器和客戶端實現 - 在這種情況下,我也可以看看ADO.NET Data Services作爲提供一組豐富的服務的捷徑。