我正在寻找一些关于如何设置我正在构建的小型应用程序的工作流程的意见/建议。当应用程序启动时,数据网格将通过 XML 文件填充。一旦运行应用程序将收到一个数据流,我希望更新文件和数据网格。
所以我很好奇您对我如何设置工作流有何建议(即,从数据流中拆分数据并同时填充文件和网格,或者您会建议先填充 XML 文件并设置一个计时器来让网格读取文件?)我真的在寻找最佳性能。
最佳答案
首先,数据网格是 UI 元素,因此它的工作应该只以 UI 为中心 - 它不应该控制应用程序的流程/工作流。我不认为你是在暗示你要那样做 - 所以我只是想确保你不会 :)
怎么做?将应用程序拆分成多个部分,每个部分都完成一项工作并且做得很好:
- 在逻辑层中,有一个处理数据流的组件(接口(interface)/服务)。为了将来的灵 active ,如果可以的话,将其抽象出来。 WCF 可能是一个选项 (?)
- “管理”逻辑层内的数据 - 将其用作主要(数据)真实来源。
- 使用事件驱动模型使主要数据源与用户和服务发起的更改保持同步。
- 拥有(子)组件来处理特定的更新任务(文件/用户界面和数据网格)。
- 最后,逻辑层还将包含一个中心位置,您可以在其中编排所有内容。
见下图。
您可以使用一些设计模式 - 但我不确定根据给定的信息哪些是合适的 - 但希望这在此期间会有所帮助。
就性能而言 - 您认为性能在哪些方面是个问题?
- 传输数据?
- 呈现给用户?
- 反射(reflect)变化(如果是 - 在哪些位之间)?
- 您移动了多少数据,更改频率如何?
- 基于 Web 还是胖客户端?
alt text http://www.freeimagehosting.net/uploads/09a5e70b03.jpg
方框显示了主要组件,这些组件可能包含各种类。 线条显示了主要的信息流。
“中央控制员”主持节目。 “主要数据”是数据的私有(private)副本。 DataGrid(或任何其他类型的“客户端”)可以通过事件将更新发送到中央 Controller 。 数据通过相同的事件处理程序桶(相同之处在于它们存在于相同的逻辑区域中)传递到 Controller (谁决定如何处理它)。您可能希望将这些定义在接口(interface)后面,以便您可以根据需要交换实现。其中之一可能是本地数据提供者去请求数据(而不是将其推送到 Controller /事件处理程序。
关于C# 流程 - 数据流、XML 和数据网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2599810/