2010-04-08 93 views
3

我正在寻找一些关于如何设置一个小型应用程序的工作流程的建议/建议。当应用程序启动时,数据网格将通过XML文件填充。一旦运行应用程序将收到一个数据流,我希望更新文件和数据网格。C#处理流程 - 数据流,XML和数据网格

因此,我很好奇你会建议如何设置工作流程(即,从数据流拆分数据,同时填充文件和网格,或者你会建议先填充XML文件并设置计时器网格读取文件?)我真的在寻找最佳性能。

回答

2

首先,数据网格是UI元素,所以它的工作应该只是以用户界面为中心 - 它不应该控制应用程序的过程/工作流程。我不认为你是在暗示你会这样做 - 所以我只是想确保你不会:)

如何做到这一点?将应用程序拆分成部分,其中每个部分执行一项任务并且执行得很好:

  • 在逻辑层中,有一个处理数据流的组件(接口/服务)。为了未来的灵活性,如果可以的话,摘要出来。 WCF可能是一个选项(?)
  • “管理”逻辑层内的数据 - 将其用作主要(数据)真相源。
  • 使用事件驱动模型将主数据源保留在syunc中,同时发起用户和服务启动的更改。
  • 有处理特定更新任务(文件/ UI & DataGrid)的(子)组件。
  • 最后,逻辑层还将包含一个中心位置,您可以在其中管理所有内容。

见下图。

会有一些设计模式可以使用 - 但我不确定哪些设计模式是合适的,但基于给定的信息 - 但希望这将有助于平均时间。

就绩效而言 - 在哪些方面你认为性能是一个问题?

  • 传输数据?
  • 渲染给用户?
  • 反映变化(如果是这样 - 在哪些位之间兴奋地)?
  • 你移动的数据量是多少,它多久改变一次?
  • 基于Web或胖客户端?

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

的框显示的主要组成部分,这可能会包括各种类的。 这些线条显示主要的信息流。

“中央控制器”运行该节目。 “主数据”是数据的私人副本。 DataGrid(或任何其他类型的“客户端”)可以通过事件发送更新到中央控制器。 数据通过同一桶事件处理程序(同样存在于同一逻辑区域中)传递给控制器​​(由谁决定如何处理)。您可能希望将这些定义在接口后面,以便您可以根据需要更换实现。其中一个可能是本地数据提供者,它需要数据(而不是将它推送到控制器/事件处理程序)