【发布时间】:2010-06-09 15:42:35
【问题描述】:
我有一个 Silverlight 应用程序,它由一个 MainWindow 和几个在 MainWindow 上更新和绘制图像的类组成。我现在正在扩展它以跟踪数据库中的所有内容。
不谈细节,假设我有这样的结构:
MainWindow
Drawing-Surface
Class1 -- Supports Drawing
DataContext + DataServiceCollection<T> w/events
Class2 -- Manages "transactions" (add/delete objects from drawing)
Class3
每个“类”都被传递一个对绘图表面的引用,因此它们可以独立地与之交互。
我开始在 Class1 中使用 WCF 数据服务,它运行良好;但是,其他类也需要访问 WCF 数据服务。 (我应该在 MainWindow 中定义我的“DataContext”并将引用传递给每个子类吗?)
Class1 需要对“事务”数据进行读取访问,而 Class2 将需要对某些绘图数据进行读取访问。所以我的问题是,在哪里定义我的 DataContext 最有意义?
这样做是否有意义:
- 定义一个“全局”WCF 数据服务“上下文”对象并在我的所有后续类中传递对它的引用?
- 为每个 Class1、Class2 等定义一个“上下文”实例
- 是否每个需要访问数据的方法都定义自己的“上下文”实例并使用闭包处理异步加载/完成事件?
这样的结构会更有意义吗?长时间保持活动的“DataContext”打开有什么危险吗?此应用程序的典型用例可能需要 1 分钟到 40 多分钟。
MainWindow
Drawing-Surface
DataContext
Class1 -- Supports Drawing
DataServiceCollection<DrawingType> w/events
Class2 -- Manages "transactions" (add/delete objects from drawing)
DataServiceCollection<TransactionType> w/events
Class3
DataServiceCollection<T> w/events
【问题讨论】:
标签: .net wcf silverlight wcf-data-services