超越MVP:为企业级应用程序UI体系结构扩展MVP模式

Model-View-Presenter (MVP) 展现了一种关于 UI 模式的突破性思维方式,并明确了 UI 设计人员应 该在应用程序中保持独立。

但是,对 MVP 模式有许多种不同的解释。例如,有些人想当然地认为 MVP 模式明确表示 UI 体系结 构模式。这对于企业级应用程序来说,并不完全正确。与其他类型的 UI 应用程序相比,企业级应用程序 需要满足许多不同的需求,涉及更多相关方,更加复杂,而且更多地交叉依赖于其他系统(例如服务、其 他应用程序等)。这些独有的特征要求企业级应用程序的 UI 体系结构更强调灵活性、易维护性、可重用 性和实施一致性,并且要求业务功能与基础技术分离,从而避免依赖于特定的产品和供应商。

如果仅仅采用 MVP 模式本身作为企业级应用程序的 UI 体系结构模式,会出现一些问题。下面列出了 部分问题:

典型的企业级应用程序包含许多视图,一个视图中发生的事件可能会影响其他视图。例如,在一个屏 幕中单击一个按钮,可能会导致显示一个弹出窗口,同时可能会更新另一个屏幕的数据。谁负责控制这样 的屏幕流逻辑?这是否应该由每个视图的配对表示器控制?

在面向服务的体系结构 (SOA) 中,应用程序 UI 通常会通过服务来获取信息。例如,UI 可能需要调 用所生成的 WCF 服务客户端代理,以便调用 WCF 服务以获取数据。直接调用此服务客户端代理是不是一 种良好的表示器设计呢?如果这些服务采用不同的技术实现,或者如果服务模型被更改,应该如何设计 UI 体系结构,才能使这些变化对 UI 实现的影响降到最低?

根据这种思路,有些实现可能会在整个应用程序中使用所生成的服务客户端代理模型。这样做会不会 有什么风险?如果需要专用的 UI 模型,哪个部分负责在服务客户端代理模型与 UI 模型之间提供映射?

这些都已经不是新问题,而且已经引入了许多其他模式来弥补这些漏洞。例如,引入应用程序控制器 模式是为了承担控制导航流的责任。

我想,如果能够将这些零零散散的 MVP 扩展讨论收集到一起并绘制 UI 体系结构设计的整体视图,一 定会很有帮助。从企业级应用程序的角度来看这个问题,可以帮助 UI 架构师认识到 UI 设计所需的关键 部件并定义统一的模式来指导 UI 应用程序的实现。

本文通篇使用了术语“MVP 模式”,但实际上,原始的 MVP 模式已经被它的两种变体所取代:一种是 Passive View 模式,另一种是 Supervising Controller 模式。这两种模式分别适应不同的方案,并且 它们各有优缺点。图 1 中描述的 UI 体系结构主要基于 Passive View 模式并对其进行了扩展。这当然 不是说不能基于 Supervising Controller 模式来构成 UI 体系结构,而只是我的个人偏好而已。

图 1 基于 Passive View 模式的 UI 体系结构

时间: 2024-10-27 20:10:30

超越MVP:为企业级应用程序UI体系结构扩展MVP模式的相关文章

通过JCA实现企业级应用程序的“即插即用”

对于那些有多个企业信息系统的公司,把这些企业信息系统整合起来是实现最高效率是至关重要的.JCA(Java Connector Architecture) 提供了一个应用服务器和企业信息系统连接的标准Java解决方案,以及把这些系统整合起来实现最好的工作效率的方法.因为J2EE对企业级应用程序集成的支持已经非常小了(本质上,JMS和XML可以使用JAX应用程序编程接口支持它),Sun和它的Java Community Process伙计建议把J2EE Connector Architecture

应用程序的体系结构

一个应用程序的体系结构是应用程序结构的一种概念性描述. 当前,随着信息技术的飞速发展,现代企业中大多数采用了分布式计算机系统.日益激烈的竞争要求应用程序尽量缩短开发周期,并且具有高度的灵活性,以适应变化多端的市场需要.这一切都对分布式应用程序的开发人员在业务方面和技术方面提出了挑战. 传统的分布式应用程序大多是两层的客户机/服务器模式(Client/Server),客户机直接连接到服务器上,在客户机上负责处理数据和执行客户端应用程序. 这种两层的应用程序体系结构存在着许多限制:客户连接的开销.服

App 服务器后台应用程序 用哪些框架或者模式?

问题描述 App 服务器后台应用程序 用哪些框架或者模式? app应用服务器前端接入部分可以用web server. 后台服务程序,不会要0起点干起吧.现在都用哪些框架呢? 解决方案 后端取决于你想做什么事情,不同的业务要求有很多框架

阿里云MVP Meetup极客开跑,与MVP一起玩转云计算

9月2日,在杭州科技寺创业空间,开展了一场开发圈的线下交流会,这是阿里云及MVP.合作伙伴们共同举办的首次MVP线下沙龙会,是增强与开发者感情的第一次尝试. 沙龙分为三个组成部分:MVP分享.提问.自由交流时间. 第一部分三位MVP的分享,他们是来自不同公司不同行业,使用着不同的产品,用着不同的解决方案.就此他们结合自己的业务场景,根据使用阿里云产品的经验,多纬度地分享了使用云过程中的经验. 尤其是第三位分享MVP王鹏翰,就如何通过阿里云日志事件序列打造高效搜索引擎进行了分享,他通过自己对日志服

将32位Informix ODBC应用程序迁移到64位模式

本文将讨论 Informix ODBC 驱动程序的 64 位二进制文件与真正的 64 位驱动程序的差别.同时,您还将了解如何迁移当前的 32 位或 64 位 Informix ODBC 应用程序,从而能够利用真正的 64 位驱动程序.包括个人电脑在内的所有新计算机都支持 64 位处理能力.64 位系统与 32 位系统相比具有明显优势,因此越来越多的系统都运行在 64 位操作系统上.64 位操作系统可以处理 64 位宽度的整数位数和内存地址,这将在 整体上提高性能和可扩展性.如果将 32 位和 6

visual studio-vs2013 在不设置启动项的情况下怎么实现执行选中应用程序(不是调试模式)

问题描述 vs2013 在不设置启动项的情况下怎么实现执行选中应用程序(不是调试模式) vs2013 在不设置启动项的情况下怎么实现执行选中应用程序(不是调试模式) 例如:我现在一个解决方案里有多个WinForm项目,我想随意启动其中任意一个项目而不进入调试模式.crtl+F5只能启动设置了启动项的项目. 解决方案 我通常的做法就是利用任务栏,将这些程序运行起来,然后固定到任务栏上.然后直接运行就直接点. 解决方案二: 通过 vs2013 可能达不到你想要的效果 "生成"还能对选中项进

基于体系结构扩展的云计算安全增强研究

基于体系结构扩展的云计算安全增强研究 刘宇涛 夏虞斌 陈海波 近年来,云计算的安全问题得到了广泛的关注.由于云计算模式的共享.外包和开发的特性,用户并不拥有对计算和数据的完全控制:相反,云平台内部的恶意系统管理员可在用户不知情的情况下窃取或篡改用户的关键数据.研究者们为保护云计算数据的隐私性与完整性,对体系结构进行了扩展,尝试缩小云安全所依赖的软硬件栈.本文阐述了这些研究中采用的主要技术类型,包括内存隔离增强.安全处理器加密等. 基于体系结构扩展的云计算安全增强研究

C#打印图片设置报错 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。

问题描述 当应用程序不是以UserInteractive模式运行时显示模式对话框或窗体是无效操作.请指定ServiceNotification或DefaultDesktopOnly样式,以显示服务应用程序发出的通知.打印设置弹出框PrintDocumentpdDocument=newPrintDocument();PrintDialogprintDialog=newPrintDialog();printDialog.Document=pdDocument;if(printDialog.ShowD

开发J2EE企业级应用程序要领

J2EE,作为开发mission-critical的企业级应用的一整套规范的整合平台.其规范之多.内容之广,从而给开发J2EE应用带来了很多"麻烦".比如,为实现内容的RDBMS存储,我们可能的方法有JDBC.Entity Beans.JDO.O/R Mapping工具(TopLink.Hibernate).XML-DBMS.JAXB等方法(其中一些方法不是J2EE规范所包含的).因此,为实现J2EE各层(至少有表示层.控制层.商业逻辑层等3层)以及层与层之间的耦合,J2EE系统架构师