Mar*_*man 9 c# asp.net asp.net-mvc webforms
我们有一个基于WebForms的Web应用程序,它具有以下属性:
大型业务对象框架(Close knit DAL/Business Objects/Serverside验证,类似于CSLA)预编译并放置在Bin文件夹中.使用了很多UserControls.
看看MVC的概述,似乎对代码如何拆分存在明显的分歧,没有会话状态(这似乎很奇怪,但如果网站主要提供内容可能还可以吗?)并且看起来构建页面看起来类似于经典asp(使用<%%>标签)
我对MVC有错误的解释吗?MVC只是一个特定的架构,或者是事情的发展方式,WebForms最终会被删除?当现有的业务对象框架存在时,如何拆分MVC?为什么没有会话状态?UserControls在MVC中工作吗?
我意识到这可能是主观的,所以大多数都在寻找你对这个主题的评论来让我自己的想法.
Nic*_*ver 11
MVC与WebForms的90%+相同,但当然每个人都在进行辩论时,他们往往会把这个问题留下来.
您可以根据需要在下面提供尽可能多的图层来提供yor数据,是的,您可以执行UserControl样式.这更像是一种思维方式的改变而不是技术的改变.MVC有它的优点,它包含了HTTP 是stateleess这一事实.Webforms在一定程度上抽象了这个事实,使一些事情变得更容易(例如,查看状态).会话状态,编译......它就在那里,它位于两者之下的同一框架中.
简而言之:使用您想要的东西,研究得很好(示例项目无处不在).如果你深入研究项目,需要及时考虑转换,它是学习曲线以及实际的代码时间. 这个决定取决于你和你的团队,如果它太不同了,那么它可能不是很有益,因为有一些调整.如果你对新技术感觉更舒服,MVC可以更清洁...... 两者都有其用途.
我不会在WebForms中启动另一个项目,但那就是我,以及我对此感到满意......你真的必须弄清楚哪种感觉更自然,如果适用,你的团队.
此外,tvanfosson提出了一个很好的观点:更多的验证或者之前在Web项目中的任何自定义逻辑,移动所需的时间就越多.如果你已经拥有了很好的层次分离,那么你处于更好的位置,如果没有,这是另一个主要的时间考虑因素.
听起来你的域模型和演示文稿之间有很多耦合.如果是这样的话,需要进行大量的重新设计.MVC确实支持Session状态,但它不使用ViewState - 听起来你有点混乱.它不支持普通的UserControl或任何依赖于ViewState的东西.您可以为MVC创建"控件"(称为"部分"视图),以便功能存在,但形式不同.在MVC中,您的视图与业务模型非常分离,通常您将拥有一组特定于视图的模型,这两个模型在两者之间进行调解,并且视图是强类型的视图模型,而不是业务模型.
虽然我建议将MVC作为基于Web的应用程序的更好架构,但在你的情况下,我不确定切换是否有意义(至少现在).我建议坚持使用WebForms(根据Scott Hanselman不会消失)或者从新功能(或应用程序)开始慢慢迁移到MVC.