2011-11-09 45 views
0

我有一個客戶端服務器應用程序,顯示客戶端用於觸摸屏的位置。目的是從民意調查,問卷調查中收集數據,並與客戶進行交互式任務(例如在數據庫中進行搜索)。客戶端是一個WPF應用程序,我可以從服務器將用戶控件推出並顯示出來。到現在爲止還挺好。爲插件提供數據源的架構

直到現在我還沒有能夠從服務器公開一個通用數據源到客戶端。我試圖完成的是爲客戶端提供「連接到服務器的東西」,允許客戶端保存數據(例如搜索或輪詢結果),然後查詢數據源的數據。

從客戶端的各種控件收集的數據差異很大,從問題/答案到搜索/結果 - 我想通過我的服務器進行傳輸。這樣每個客戶端不會將自己的數據連接到數據庫。

我想在我的服務器數據庫中有一個表,每個客戶端數據(類型和列)的元數據,然後是一個簡單的表來存儲數據。

有關這種或其他方法的任何想法?

+0

不能通過讓你的控件通過WCF訪問數據來解決這個需求嗎? – 2011-11-09 08:58:44

+0

是的,它可以。但是我公開了一個使其他人可以開發插件的API,並且這些插件也應該可以訪問數據源。我不知道他們的數據結構。也許可以提供一個字典,一個用於讀取,一個用於寫入? –

回答

0

我們在談論多少數據?

我的第一個建議,但這可能與你的API不太一致,是使用命令設計模式來發送和接收數據。這樣可以靈活地添加或更改功能,而無需更改通信層,特別是如果您能夠通過插件加載新命令。但是,這對於客戶端插件來說不太可能。

對於較小的數據量,讓客戶創建一個CSV或XML文件,將其存儲在服務器上,並在需要時請求它的副本是否可行?然後,您可以將其加載到DataTable或類似的結構中,以在客戶端上運行查詢。您可以存儲對數據所做的任何更改,並在客戶端完成後將其發送回服務器。這樣做的好處是客戶端可以指定他們想要的數據以及他們想要如何存儲它,而服務器組件不關心。

對於大數據量......不知道。我有創建元數據表和創建他們描述的表的經驗,並建立了一個查詢框架,但我認爲這是最好的解決方案。事情往往會很快得到混亂 - 查找表,多對多關係,級聯查找表,層次結構等等。我會仔細考慮在你走這條路線之前你所擁有的各種數據要求。

如果您沒有受數據的SQL限制,您可以考慮使用類似RavenDB(或其他NoSQL解決方案)來存儲其數據。只要他們可以序列化要發送到服務器的對象,就可以將它們存儲在數據庫中。發送查詢到服務器可能是一個問題(雖然我不知道)。