asp.net – 重构遗留的WebForms应用程序以更好地分离关注点
即当MVC不是一个选项时,MVP仍然是下一个最佳选择吗?
我想我会在这里问这个,因为我确信还有像我这样的其他人没有奢侈品参与绿地项目,并希望重构webforms UI以更好地分离演示文稿和业务对象. . 我正在开发一个遗留应用程序,其任务是添加相对较少的附加要求,增强功能和错误修复程序. 我在这里解决的应用程序部分可能被描述为一组CRUD操作的UI,这些操作是持久存储到关系数据库的业务对象. 现有UI使用MultiView控件在关联业务对象(一对一关联或一对多/父子对象)的编辑之间进行导航.是的,这是对的 – 所有这一切都在一页上.不幸的是,UserControls的使用非常少,因此标记和代码隐藏的时间长达数百行. 在每个View上,FormView通过各种ObjectDataSource管理业务对象上的CRUD.在每个FormView的ItemTemplate中,各种服务器控制数据绑定到ObjectDataSource上的字段或方法. 我想引入更多的关注点分离,并从页面代码中获取一些代码. 到目前为止,我的研究建议我可以考虑: > Use a flavour of Model View Presenter;更具体地说 – use an ObjectContainerDataSource from the Web Client Software Factory可以更容易地在当前UI和一组新的Presenter类之间架起桥梁. 如果我满意(3)我仍然想知道如何开始重构以更好地分离演示. 你会怎么做?感恩的任何其他想法…… 这里有一些感兴趣的人的背景: 该领域是在药物研究领域,但这是相当无关紧要的,您可以将其视为非常典型的业务线 – 一系列设置的用户配置,这些设置构成了应用程序另一部分的操作条件. 业务对象层已经以非常一致的方式构建.虽然我可能不喜欢它,但我无法证明改变它是正确的.每个对象都是它自己的存储库/数据访问对象,因为存在“按ID获取”和“按标准获取列表”的静态方法.在可能的情况下,常见操作在抽象基类中实现.每个业务对象都将数据访问工作委托给数据访问层,该数据访问层利用ADO.NET 2.0 Provider Factory机制来保持与具体Provider相对抽象.在这方面,它与使用Microsoft企业库中的数据访问应用程序块的任何应用程序共享很多共同点. 在NUnit中编写了相当详尽的集成测试,它们从头开始设置测试数据库,因此它们需要很长时间才能运行,但至少他们会验证这些内容是否正常工作(无论如何在过去的某些时候;-).几乎没有真正的单元测试(还). 解决方法
WebForms现在以
ASP.NET Web Forms MVP project的形式出现了新的努力
Rob Conery has concerns这可能是一种浪费的努力和不必要的分心现在我们有MVC,但在这个阶段我仍然认为源代码值得一看…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 详解asp.net core封装layui组件示例分享
- asp.net – 在Gridview中有条件地隐藏CommandField或Button
- asp.net-mvc-4 – 如何在现有的web api项目中添加asp.net标
- asp.net – 什么放在会话变量中
- asp.net-web-api – 我是否使用正确的终身经理进行依赖注入
- 使用asp.net必填字段验证器和两个复选框
- 我的ASP.NET Web应用程序无法“找到”App_Code文件夹中的任
- 调试 ASP.NET Core 2.0 源代码
- asp.net – 将代码从Subversion Repository部署到Web服务器
- asp.net-mvc – IIS站点上的高CPU
- asp.net-mvc – MVC4 Action返回没有null的JsonR
- 全面理解 ASP.NET Core 依赖注入
- asp.net全局资源错误’找不到具有键”的资源对象
- asp.net-mvc – ASP.NET MVC中的WebApi [FromUri
- asp.net-mvc – 如何从PropertyInfo或MetaData中
- asp.net-mvc – 如何使用EF Code First解释为枚举
- 如何让ASP.NET AJAX通过GZip压缩发送JSON响应?
- asp.net-mvc – 如何访问querystring在ASP.Net M
- asp.net-mvc-3 – ASP.NET Webforms中的成员资格
- asp.net – 如何使用Twitter作为网站登录