2010-04-08 92 views
3

我正在尋找一些關於如何設置一個小型應用程序的工作流程的建議/建議。當應用程序啓動時,數據網格將通過XML文件填充。一旦運行應用程序將收到一個數據流,我希望更新文件和數據網格。C#處理流程 - 數據流,XML和數據網格

因此,我很好奇你會建議如何設置工作流程(即,從數據流拆分數據,同時填充文件和網格,或者你會建議先填充XML文件並設置計時器網格讀取文件?)我真的在尋找最佳性能。

回答

2

首先,數據網格是UI元素,所以它的工作應該只是以用戶界面爲中心 - 它不應該控制應用程序的過程/工作流程。我不認爲你是在暗示你會這樣做 - 所以我只是想確保你不會:)

如何做到這一點?將應用程序拆分成部分,其中每個部分執行一項任務並且執行得很好:

  • 在邏輯層中,有一個處理數據流的組件(接口/服務)。爲了未來的靈活性,如果可以的話,摘要出來。 WCF可能是一個選項(?)
  • 「管理」邏輯層內的數據 - 將其用作主要(數據)真相源。
  • 使用事件驅動模型將主數據源保留在syunc中,同時發起用戶和服務啓動的更改。
  • 有處理特定更新任務(文件/ UI & DataGrid)的(子)組件。
  • 最後,邏輯層還將包含一箇中心位置,您可以在其中管理所有內容。

見下圖。

會有一些設計模式可以使用 - 但我不確定哪些設計模式是合適的,但基於給定的信息 - 但希望這將有助於平均時間。

就績效而言 - 在哪些方面你認爲性能是一個問題?

  • 傳輸數據?
  • 渲染給用戶?
  • 反映變化(如果是這樣 - 在哪些位之間興奮地)?
  • 你移動的數據量是多少,它多久改變一次?
  • 基於Web或胖客戶端?

alt text http://www.freeimagehosting.net/uploads/09a5e70b03.jpg

的框顯示的主要組成部分,這可能會包括各種類的。 這些線條顯示主要的信息流。

「中央控制器」運行該節目。 「主數據」是數據的私人副本。 DataGrid(或任何其他類型的「客戶端」)可以通過事件發送更新到中央控制器。 數據通過同一桶事件處理程序(同樣存在於同一邏輯區域中)傳遞給控制器​​(由誰決定如何處理)。您可能希望將這些定義在接口後面,以便您可以根據需要更換實現。其中一個可能是本地數據提供者,它需要數據(而不是將它推送到控制器/事件處理程序)