如何从MVP模式转换为SCSF CAB模式?

时间:2011-05-06 10:18:17

标签: mvp cab scsf

我在MVP模式中设计并开发了我的应用程序。我没有使用任何软件工厂来实现这一目标。现在我想转向SCSF模式和CAB结构。

我需要知道它是否可以以任何更简单的方式完成,因为CAB结构只实现了MVP。

2 个答案:

答案 0 :(得分:1)

我同意Wali的看法。你已经准备好了你的意见。假设他们是完美的MVP。现在你需要将它们分类为模块。 我们创建了子工作项,因此当用例启动时,它是一个新的子工作项实例,添加到模块的工作项集合中。因此,当用例完成时,我们只是终止了子工作项。如果发生任何异常,那么childworkitem现在将受到模块工作项的影响。 SCSF具有可以在屏幕上组合多个视图的功能。因此,您需要注意是否可以使用ZoneWorkspace来避免重复的UI和逻辑。 决定模块如何进行通信,说明事件或命令。 如何在视图和模块之间传递数据。现在你有了Shell,你需要决定你将在shell上拥有的所有区域。 shell上的默认设置是什么。模块如何监听Shell。什么事件Shell从模块中听取自定义。

SCSF具有依赖注入。因此,确定您将拥有的UI服务是什么。相应地将它们注入Presenter。

答案 1 :(得分:0)

在CAB和SCSF中,有代码就绪的MVP类(和接口)。因此,如果您已经干净地实现了它,那么只要您掌握了类,就可以复制您的方法。

试着简要介绍一下: -

1)IView - 它是View的一个引用,它只公开了Presenter(或任何其他类)可以访问的那些set属性/方法

2)视图 - 它具有Presenter的引用,可以访问演示者的所有公共/受保护方法。按照设计,它不能访问任何服务,因为您需要WorkItem(服务容器,状态,命令,事件等)。出于所有实际目的,View仅用于管理UI控件,绑定,对象状态等。

3)Presenter - 它引用了WorkItem(通过它可以访问所有服务)。演示者有责任在服务的帮助下操纵数据。

4)WorkItemController - WorkItemController可以使用与UseCase相关的功能,如ui控件的布线/取消连接,视图的定位等。

它不仅仅是SCSF / CAB中的MVP,而是UI应用程序的整体设计。其中包括以下内容: -

  1. 模块化结构
  2. 按需架构。
  3. 服务模式
  4. 命令
  5. 事件处理程序 等
  6. 首先,您必须检查codeplex docs,看看您的项目是否可以在该平台/架构中轻松升级。如果您刚刚开始并且考虑使项目具有可扩展性和企业级别,我会推荐CAB / SCSF。