Web开发 - MVC及其局限性

时间:2011-06-30 20:01:26

标签: model-view-controller

MVC在模型,视图和控制器之间建立了明确的区别。

对于模型,现在,Web框架提供了将模型直接映射到数据库实体(ORM)的能力,由于直接数据库I / O,最终导致运行时出现性能问题。

问题是,如果确实如此,为什么模型ORM如此愚蠢,每个Web框架都希望有机地支持它。

对于拥有大量流量的网站来说,它肯定是行不通的。但是有什么工作呢?直接连接到数据库绝对不是一个明智的解决方案。

3 个答案:

答案 0 :(得分:2)

你的问题是什么?

  

从网页使用直接数据库访问是一个好主意吗?

答:没有。

  

使用ORM是个好主意吗?

答:有争议:见How can I design a Java web application without an ORM and without embedded SQL

  

使用MVC模型是个好主意吗?

答:是的 - 它与“直接”数据库访问无关 - 它是关于将应用程序逻辑与模型和显示分开。 (简单地说)。

不将数据库逻辑放入网页中的理由与性能无关 - 它与安全性/可维护性等有关。从网页调用usp可能比使用ORM更高效,但这很糟糕因为性能增益可以忽略不计,缺点很重要。

至于解决方法:如果你的意思是如何将数据库连接到Web应用程序......?

最简单的方法是在您的模型中使用Entity Frameworks或Linq-Sql之类的东西 - 在网络教程中有很多这方面的例子。

  

一个更好的方法IMO,就是拥有一个单独的服务层(可能是基于WCF的),并在其中拥有所有数据库访问权限,DTO将数据传输到具有自己的ViewModel的Web应用程序。

答案 1 :(得分:0)

Mvc不是关于orm,而是关于显示逻辑和业务逻辑的分离。您的公开模型没有理由需要与您的数据库模型完全相同,并且有许多理由可以确保公开的模型与要显示的模型紧密匹配。

要求良好扩展的解决方案的另一部分是在控件中实现缓存,并能够在sevaral实例上分配负载。

答案 2 :(得分:0)

我认为@BonyT给出了一个很好的答案,(我已经投票赞成了:)),我只想补充一点:

“Web框架提供了将模型直接映射到数据库实体(ORM)的能力,由于直接数据库I / O,IMHO最终导致运行时出现性能问题”

即使 为真,使用ORM也可以解决许多问题,因为模型易于更新并在数据库之间来回转换。通过购买额外的Web服务器或云实例来解决性能损失要比购买额外的开发人员或开发中的额外时间来解决其他人已经编写的ORM为您做的事情要便宜得多。