写点什么

Web Forms 拥抱 Model-View-Presenter

  • 2011-06-17
  • 本文字数:575 字

    阅读完需:约 2 分钟

纵然 ASP.NET Web Forms 也可以应用 MVC 风格的架构,但绝大多数的人都认为这两者之间的配合太糟糕。富客户端组件和 Web 窗体的有状态性与 MVC 模式相容得并不好。然而,开发人员仍然渴求 MVC 带来的分离与可测试性。开源项目 Web Forms MVP 正是试图做到这一点。

Web Forms MVP 的主要目标是——在仍然保持由使用富客户端控件所带来的高水平生产力的前提之下,像 ASP.NET MVC 一样提供尽可能多的控制。在最简单的情形下,Web Forms MVP 仅仅需要开发人员将他们的逻辑部分从后置代码(code-behind)的文件之中转移出来,放到 Presenter 里面。

Web Forms MVP 声称在组合页面方面尤其出色。Web Forms MVP 鼓励开发人员将页面分解成单独的可重用的组件,而不是一个单一页面与 action controller。每个组件都被认为是单独的视图,有与之相对应的 Presenter。Presenter 应该小、基本上相互独立,但他们也可以互相通信。

这个框架还内置了控制反转和依赖注入。其正式发布包含了集成 Castle 和 Unity 的库。其姐妹项目 Web Forms MVP Contrib ,还提供了对 Ninject、StructureMap 以及 Autofac 的支持。

由于大部分的逻辑转移到了 Presenter 里面,你可以像在其他框架下测试 controller 或者 view-model 一样,使用相同的技术对它们进行自动化测试。Web Forms MVP 的底层框架,大部分来自于 ASP.NET MVC 在一开始就引入的 System.Web.Abstractions 库。

2011-06-17 19:532024
用户头像

发布了 76 篇内容, 共 24.5 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

深入理解 volatile 关键字

编程江湖

volatile JAVA开发

如何与 Dapr 集成打造 Apache APISIX 网关控制器

API7.ai 技术团队

云原生 网关 dapr Apache APISIX ingress-controller

架构实战营-模块六

瓜子葫芦侠

「架构实战营」

[Pulsar] 消息生命历程(四)——Broker的消息处理

Zike Yang

Apache Pulsar 11月日更

Java开发基础之开发环境搭建

@零度

JAVA开发

架构原则

卢卡多多

架构 11月日更

译文 | Apache Pulsar 集群如何确保消息不丢

Apache Pulsar

Java 分布式 云原生 中间件 Apache Pulsar

docker vs docker-compose 解密

liuzhen007

11月日更

贪心算法:加油站 ⛽

空城机

算法 大前端 11月日更

Prometheus Exporter (十)Ping Exporter

耳东@Erdong

Prometheus ping exporter 11月日更

linux 上查找包含特定文本的所有文件

入门小站

Linux

博文推荐 | 基于 Pulsar 事务实现 Exactly-Once 语义

Apache Pulsar

Java 架构 云原生 中间件 Apache Pulsar

央视新闻联合百度智能云打造首个AI手语主播

百度大脑

人工智能

Android C++系列:Linux进程间通信(二)

轻口味

c++ android jni 11月日更

vue3 学习笔记 (三)——vue3 自定义指令

码仔

Vue3 自定义指令

小谈C#异常

喵叔

11月日更

风口上的低代码:我们看到了这些变化与趋势

脑极体

详解阿里开源分布式事务框架Seata

博文视点Broadview

复杂业务系统高扩展架构设计与实践

鲸品堂

构架

程序员如何应对职业天花板

石云升

职场天花板 职场经验 11月日更

在线文本按列截取工具

入门小站

工具

JSRE中的多任务与多线程

编程江湖

html5 大前端

如何使用find和locate 命令在Linux 中查找文件和目录?

Ethereal

Linux find locate

Flutter:如何在没有插件的情况下制作旋转动画

坚果

flutter 11月日更

Hadoop 入门笔记—核心组件 YARN

编程江湖

大数据 hadoop

云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离

华为云开发者联盟

EI企业智能 数据仓库服务GaussDB(DWS) 逻辑集群

《深入理解JVM虚拟机》读书笔记:第二章 Java内存区域与内存溢出异常

Joseph295

没有人比我更会使用集合!对,是dart中的集合

程序那些事

Java flutter dart 程序那些事 11月日更

【高并发】浅谈AQS中的CountDownLatch、Semaphore与CyclicBarrier

冰河

Java 并发编程 多线程 高并发 异步编程

搞定大厂算法面试之leetcode精讲6.深度优先&广度优先

全栈潇晨

算法面试 Leet Code

Apache APISIX request_uri 变量控制不当,存在路径穿透风险公告(CVE-2021-43557)

API7.ai 技术团队

Apache 云原生 漏洞修复 Apache APISIX ingress-controller

Web Forms拥抱Model-View-Presenter_.NET_Jonathan Allen_InfoQ精选文章