UIPAB学习简记

最近想仔细看一下UIP,在这里做些简单的学习笔记:

  • UIP Application Block是基于MVC模式的,这里可以把MVC先简单的看成是input-process-output系统,其中
    • Model负责管理application的数据和各种action,可以看作是processing部分,在UIP中由State类实现,保存用户信息和控制信息;
    • View管理显示给用户的信息,可看作是output部分,在UIP中由WebFormView,WindowsFormView,WindowsFormControlView类来实现,用来在application中创建views;
    • Controller允许用户与application交互,它从用户那里得到input并将指令传递给Model,可以看作是input部分,在UIP中由派生自ControllerBase的类来实现,负责在user interface processing中start、end或者navigation
  • View和Controller都依赖于Model,而Model不依赖于V&C
  • 关键术语:
    • Configuration File
    • UIP Configruation: 获取、验证和保存应用程序中configuration file里的信息;
    • ControllerBase
    • UIP Manager: 提供了一个使用UIPAB的入口,用来以不同的navigator启动或载入一个task;
    • Navigator: 管理在不同view之间的转移,负责选择适当的view,并要求view manager来激活view;
    • View Manager: 按照navigator的要求来创建和激活不同的view;
    • State: 维护process中的状态和task中的当前的view;
    • State Persistence Provider/Store: 获取state信息并持久化保存;
  • UIPAB以如下方式工作:
    • 你的应用程序调用UIP Manager上的一个方法(StartNavigationTask, StartOpenNavigationTask, 或 StartUserControlsTask),某个Task通过上述方法被启动后,views和navigation的创建,以及state的管理都可以在UIP中进行;
    • UIP manager创建适当的navigator(如graph navigator, user controls navigator, 或 wizard navigator),并向navigator传入必要的信息;
    • navigator调用UIPConfigSettings类来获取从配置文件中解析出来的配置信息;
    • navigator根据配置文件中指定的views的类型来创建适当的view manager;
    • navigator创建或加载一个task;
    • navigator决定那个view被激活;
    • navigator通过UIP manager发布一个NavigateEvent 事件,该事件可以被UIPAB之外的程序使用,其中提供了当前的view和下一个view的信息;
    • navigator调用State对象的Save方法,State对象可以调用适当的State Persistence Provider来保存当前状态;
    • navigator调用适当的view manager的ActivateView方法,并向view manager传入view的名字,这个方法负责创建controller并显示view;
    • view显示之后,用户获得控制权,在用户在界面上执行任何动作之前(比如点击按钮),UIP不会做什么;
    • 如果用户执行了某个动作,会导致view上的某个方法被调用,该方法接着会调用controller上的某个方法,根据用户所执行的动作,controller将去做下面的某件事:
      • 执行或者委托一个与业务逻辑相关的函数(比如将信息保存到DB),这中业务逻辑将导致view的刷新或state的变化,如果该函数导致了当前state的改变,那么State类将产生一个StateChanged 事件,用以通知所有监听状态变化的listener;
      • 调用navigator上的Navigate 方法来转移到下一个view或者user control,并且更新State对象;
      • 调用SuspendTask 方法从内存中清除State对象,但是不从state persistence storage中清除;
      • 调用CompleteTask 方法从内存和state persistence storage中把State对象清除掉;
      • 调用OnstartTask 方法连接其它task;

转载于:https://www.cnblogs.com/bbpnb/archive/2004/06/01/12751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值