繁体   English   中英

C#ASP.NET,WebForms到MVC:在我们的案例中改变是否有意义?

[英]C# ASP.NET, WebForms to MVC : Does it make sense to change in our case?

我们有一个基于WebForms的Web应用程序,它具有以下属性:

大型业务对象框架(Close knit DAL / Business Objects / Serverside验证,类似于CSLA)预编译并放置在Bin文件夹中。 使用了很多UserControls。

看看MVC的概述,似乎对代码如何拆分存在明显的分歧,没有会话状态(这似乎很奇怪,但如果网站主要提供内容可能还可以吗?)并且看起来构建页面看起来类似于经典asp(使用<%%>标签)

我对MVC有错误的解释吗? MVC只是一个特定的架构,或者是事情的发展方式,WebForms最终会被删除? 当现有的业务对象框架存在时,如何拆分MVC? 为什么没有会话状态? UserControls在MVC中工作吗?

我意识到这可能是主观的,所以大多数都是在寻找你对这个主题的评论来让我自己的想法。

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。

MVC是一款闪亮的新瓶装葡萄酒,适用于网络及其工作方式。

另一方面,您最终可以远离asp.net视图状态和页面生命周期,回发,疯狂URL等。

如果您需要从webforms转移到MVC,请查看您可能在应用程序UI中使用的第三方控件的依赖性。 并非所有供应商都拥有MVC等价物。 Sessions和ViewState是在UI端查看的其他最重要的方面。 如果您有一个面向公众的Web应用程序,请考虑URL被加入书签。 所有这些可能是迁移到MVC时要考虑的其他因素。

通常,我建议首先将代码分解为模型 - 控制器层,一旦完成,然后将UI更改为View并使用MVC的URL路由机制。 或者,您可以使用任何正常的URL重写模块并首先发布REST样式的URL并将旧URL重写为新URL,然后将应用程序的各部分慢慢转换为MVC。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM