Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller web开发-MVC和it';s的局限性_Model View Controller - Fatal编程技术网

Model view controller web开发-MVC和it';s的局限性

Model view controller web开发-MVC和it';s的局限性,model-view-controller,Model View Controller,MVC在模型、视图和控制器之间建立了明确的区别 对于现在的模型,web框架提供了将模型直接映射到数据库实体(ORM)的能力,IMHO最终由于直接的数据库I/O而导致运行时的性能问题 问题是,如果真的是这样的话,为什么模型ORM如此实用,每个web框架都想有机地支持它,或者不支持它 如果一个网站有巨大的流量,它肯定不会工作。但是有什么工作要做呢?直接连接到数据库绝对不是一个明智的解决方案。您的问题是什么 从网页直接访问数据库是个好主意吗 A:没有 使用ORM是个好主意吗 A:有争议:见 使用MVC

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

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

问题是,如果真的是这样的话,为什么模型ORM如此实用,每个web框架都想有机地支持它,或者不支持它

如果一个网站有巨大的流量,它肯定不会工作。但是有什么工作要做呢?直接连接到数据库绝对不是一个明智的解决方案。

您的问题是什么

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

A:没有

使用ORM是个好主意吗

A:有争议:见

使用MVC模式是个好主意吗

答:是的,它与“直接”数据库访问无关,而是将应用程序逻辑与模型和显示分离开来。(简而言之)

不将数据库逻辑放在网页中的理由与性能无关——这与安全性/可维护性等有关。从网页调用usp可能比使用ORM性能更好,但这是不好的,因为性能增益可以忽略不计,缺点也很明显

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

最简单的方法是在您的模型中使用实体框架或Linq Sql之类的东西——在web教程中有很多这样的例子

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


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


解决方案的另一部分是在控件中实现缓存,并能够在几个实例上分配负载

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

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


即使这是真的,使用ORM也可以解决很多问题,因为模型很容易在数据库之间来回更新和转换。购买额外的web服务器或云实例来解决性能问题要比购买额外的开发人员或额外的开发时间来解决其他人已经为您编写了ORM的问题便宜得多。

问题在于,代码与数据库紧密耦合,即,这将是网站升级的噩梦。而且,只要您直接与数据库联系起来,无论要添加多少台机器,您都无法解决基本的性能问题。更奇怪的是,为什么所有这些流行的web应用程序框架仍然朝着这个方向发展。@汤姆:使用ORM会导致与数据库的紧密耦合??事实上恰恰相反?@tom——正如@BonyT所暗示的那样——使用ORM的一个要点是将模型与数据库解耦。除了映射之外,它们还提供了模式的简单实现,可以将各种特定于持久性的代码从模型中拖出。当所有流行的web应用程序框架都朝着一个在你看来根本有缺陷的方向发展时,你很有可能看不到全局。