原文http://msdn2.microsoft.com/en-us/library/ms979213.aspx
为了有助于管理你的应用程序的表现层,你应该把它分成可管理的小单元。A number of terms related to this concept are heavily used in this guide. These include:

l         A user interface process----一组有关系的用户活动实现一个目标。用这个方式把活动分组,你可以定义每个组中的视图并且决定它们之间是如何导航的。

l         A UIP task----一个UIP运行实例。

l         UIP状态----可以被保存的作业快照。

这些terms,连同其它重要的相关UIP terms将在”UIP Application Block术语表”中被详细的讨论。

UIP Application Block允许你抽象应用程序中表现层的代码到另外一个层。使用 UIP Application Block的应用程序把表现层分为以下两层:

l         UI组件----这些组件组成了应用程序的UI。用户看到并与这些组件交互。UI组件负责获得数据并展现给用户。

l         UIP组件----这些组件管理UI元素并且整理后台的活动,比如说导航,工作流控制,状态和视图管理。用户看不到UIP组件,然而这些组件对UI组件给予了重要的支持。

下图展现了在一个基于.net的分布式应用程序中这两个层的架构:

图一 基于.net的分布式应用程序组件层次

UIP Application Block 是一个构建用户界面组件的框架,这些组件主要负责:

l         通过用户界面组件管理信息流

l         在用户界面进程的活动中管理事务

l         在出现异常时修改用户进程

l         Separating the conceptual user interaction flow from the implementation or device where it occurs

l         维护相关业务状态,通常保持一个或多个用户交互所影响的业务实体

这意思是它也会管理:

l         从UI层收集数据并在服务器端执行批处理(更新)操作

l         在一个user interface process中保持一个任务进程的跟踪

把你的用户进程组件从你的用户界面组件中分离出来,你就能把应用程序中控制本质行为的代码从用户界面中抽象出来。这能让你写的一些控制流程和状态管理的代码可以在不同类型的应用程序中重用,而不依赖于所使用的UI。它也允许你改变很少的代码就可以管理多用户界面,并且给你更多的测试弹性,因为你可以分离测试进程到逻辑单元而不依赖于用户界面。

Model–View–Controller

UIP Application Block是基于MVC模式的,它是把用户界面和业务逻辑分离开来的基本设计模式。包括模型,视图,控制器这三个清晰的对象:

l         模型----这个对象了解所有要显示的对象并管理这些数据与应用程序的操作,它可以被想像成输入输出系统的操作部分。

l         视图----这个对象管理那些用户将要看到的信息。多数视图能用不同的方式显示相同的信息。它可以被想像成输入输出系统的输出部分。

l         控制器----这个对象允许用户和应用程序交互。它从用户那里得到数据并向模型说明数据。它可以被想像成输入输出系统中的输入部分。

下图二描述了这三个对象之间的关系:

图二 MVC 类结构

视图和控制器对象都依赖于模型。而模型对象既不依赖于视图也不依赖于控制器。这就是把它们非开的好处之所在。这种分离让模型能够在不依赖于表现层的情况下被建立。

具体的怎么样去正确的实现你的MVC模型,依赖于你的应用程序类型。例如,在许多rich client应用程序和smart client应用程序中分离控制器和视图并不是主要的,许多UI框架就只用一个对象实现了这个角色。而在web应用程序中,视图(浏览器)和控制器(处理http request的服务器端组件)的分离是非常重要的。

转载于:https://www.cnblogs.com/GodSpeed/archive/2007/08/27/871395.html

(翻译)UIP Application Block学习系列(三)UIP概念相关推荐

  1. User Interface Process(UIP) Application Block 2.0 研究总结

    By Ben User Interface Process (UIP) Application Block - Version 2.0 环境: WinXP, SQL Server 2000 + SP ...

  2. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  3. Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

    继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 不想细看的朋友 可以直接跳到 最后 方法对比 ...

  4. Vue+Electron学习系列 (三) -- 自动更新

    Vue+Electron学习系列 ​​​​​​​1️⃣Vue+Electron学习系列 (一) -- 初识​​​​​​​ 2️⃣ Vue+Electron学习系列 (二) -- 打包发布 3️⃣ Vu ...

  5. idea学习系列三之版本管理工具

    idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...

  6. Composite UI Application Block学习笔记之Event Broker

    Composite UI Application Block着重于将应用逻辑和界面分开,让应用系统具备更清晰的结构,更强的扩展性.可移植性.在曹严明先生的讲座中,提及到了关于应用CAB开发的几个指导性 ...

  7. [翻译] 神经网络与深度学习 第三章 提升神经网络学习的效果 - Chapter 3 Improving the way neural networks learn

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 > 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 ...

  8. Cosmos的基石:IL2CPU编译器--.net/C#开源操作系统学习系列三

    本文的代码包以cosmos-12304.zip为例(从这个包开始,COSMOS的内核算是有了个基本的雏形,就像是一颗大树在出芽前会先长出庞大的根系,现在就要破土长出第一颗芽了) IL2CPU之于COS ...

  9. Java NIO学习系列三:Selector

    前面的两篇文章中总结了Java NIO中的两大基础组件Buffer和Channel的相关知识点,在NIO中都是通过Channel和Buffer的协作来读写数据的,在这个基础上通过selector来协调 ...

  10. NMock学习系列(三)--- NMock在DDD领域驱动的单元测试中的应用

    介绍 领域驱动设计涵盖的知识点比较多,其中代码的架构.设计.编写基本上只占到其中的很小一部分,其它的大部分讲解的是需求的获取方式.项目的管理方式等知识.本篇就是针对这一小部分的知识点位来展开的.所以本 ...

最新文章

  1. 从Elasticsearch来看分布式系统架构设计,真是666~
  2. enter your credential for http://dev.azure.....Fatal:Authentication failed for ;;
  3. No module named import_export.admin
  4. react学习(28)---react挂载图
  5. apache log4j入门
  6. Vue报错:Unknown custom element: router-view - did you register the component correctly页面中不显示链接
  7. Mol. Biol. Evol. | 中科院动物所揭示石山叶猴适应喀斯特环境的遗传机制
  8. ASP.NET页面与IIS底层交互和工作原理详解 (二)
  9. 有序数组的平方(力扣)
  10. 神经网络的归一化(batch normalization)
  11. 为什么使用一个变频器控制多个电机?
  12. 2011戴尔计算机配置,机型与配置(一)
  13. TimesTen In-Memory Database
  14. 硬盘img镜像备份工具
  15. 使用QT简单写一个串口助手
  16. ios+手机壳+瞬间切换android,不只是双卡双待,这个手机壳能让你的 iPhone 运行 iOS + Android 双系统...
  17. 20155110王一帆 《远程安防监控系统》课程设计个人报告
  18. 初识Python,我想你应该了解这些...
  19. 使用QQ邮箱“邮我”组件,给我写信/意见反馈!方便他人快速给你发邮件
  20. JAVA基础----终弄清java核心技术卷1中的int fourthBitFromRight = (n 0b1000 ) / 0b1000;是怎么回事了。。。

热门文章

  1. Java神鬼莫测之MyBatis中$与#的区别(五)
  2. Jarslink Demo Alibaba(教程 源码)
  3. python写math函数_pythonmathcot函数_Matplotlib 编写数学表达式
  4. 左连接只匹配一条数据_数据库左连接、右连接、内连接、全连接区别
  5. python车牌识别系统开源代码_python实现车牌识别的示例代码
  6. EasyUI:easyUI中自定义icon
  7. Java编程:排序算法——基数排序
  8. Openlayer:学习笔记之控件
  9. MyBatis学习笔记(2)-MyBatis入门
  10. OpenCV_Corner Detect with Harris and goodFeaturesToTrack( 基于Harris及适合跟踪的优质特征的角点检测)