C#流程 - Datastream,XML和datagrid

时间:2010-04-08 12:34:38

标签: c# architecture process

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

所以我好奇你会建议我如何设置工作流程(即,从数据流中分割数据并同时填充文件和网格,或者您是否建议首先填充XML文件并设置计时器以使其具有网格读取文件?)我真的在寻找最佳性能。

1 个答案:

答案 0 :(得分:2)

首先,datagrid是UI元素,因此它的工作应该只是以UI为中心 - 它不应该控制应用程序的进程/工作流程。我不认为你是在暗示你会这样做 - 所以我只是想确保你不这样做:)。

怎么做?将应用程序拆分为多个部分,每个部分都完成一项工作并且做得很好:

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

见下图。

你可以使用一些设计模式 - 但根据给出的信息我不确定哪些是合适的 - 但希望这在平均时间有用。

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

  • 传输数据?
  • 呈现给用户?
  • 反映变化(如果是这样 - 在哪些位之间激烈地发生)?
  • 你走动了多少数据,它有多久变化?
  • 基于网络还是胖客户端?

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

框显示主要组件,这些组件可能包含各种类。 这些线显示了主要的信息流。

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