首页 新闻 会员 周边 捐助

请问有EntityFramework和MVC结合的大数量应用架构或案例吗?

0
悬赏园豆:80 [已解决问题] 解决于 2012-08-20 09:57

首先我描叙一下这两个工具对于我的好处

1)EntityFramework比较适合建模,用CodeFrist和Scaffold非常容易生成基本代码,EF非常容易控制并发和事务。

2)MVC对于前端的控制和SEO控制比较灵活,与Jquery.Ajax()等效果结合更好、

 

现在面临的问题就是处理大数据量时该组合就容易遇到瓶颈,不知道大家有没有更好的解决方案!前后端的优化方案皆可拿出来分享:

1)例如前端直接Json传输是否比返回强类型对象更好?

2)后端把查询单独用其他的例如DataReader之类的替换更好?

或者还有缓存IOC等的应用,在这里希望得到大家的指点和交流。

leeolevis的主页 leeolevis | 初学一级 | 园豆:43
提问于:2012-08-02 16:06
< >
分享
最佳答案
0

几十万条数据,正确使用Entity Framework不会有性能问题。

博问现在就用的是Entity Framework + MVC。

收获园豆:20
dudu | 高人七级 |园豆:30778 | 2012-08-02 17:52

可能是页面上调用不同的数据太多了, 比如一些统计类的直接Count出来

请问dudu博问有没有做什么架构或优化之类的?如果有的话希望你改天写篇实际项目的文章分享下嘿

leeolevis | 园豆:43 (初学一级) | 2012-08-03 09:34

@leeolevis: 用SQL Profiler查看一下实际执行的SQL语句,要么是SQL语句问题,要么是索引问题。

dudu | 园豆:30778 (高人七级) | 2012-08-03 10:37
其他回答(5)
0

你说的瓶颈有哪些

Johnny Yan | 园豆:256 (菜鸟二级) | 2012-08-02 16:54

如果完全不改造的话几十万条数据就很慢呢。

支持(0) 反对(0) leeolevis | 园豆:43 (初学一级) | 2012-08-02 17:04
1

不太理解你的JSON传输和强类型对象是什么意思?

我只知道,运行在服务器端的代码使用强类型最优;运行在客户端的脚本,需要服务器将强类型转换为传输格式(JSON,XML或者其它什么形式的字符串表示法),根据传输数据的大小,JSON会比XML小。

 

使用EF,还是使用DataReader的区别并不大,差异在于将TDS数据转换为对象的开销。如果有特别的需求,同时又允许这样做,可以直接使用DataReader,将数据直接按照固定格式写入传输流中,而不用经历转换为强类型或DataTable后再转换为传输数据格式。

收获园豆:20
Launcher | 园豆:45050 (高人七级) | 2012-08-02 18:14

前台普通加载的数据可以用jQuery.tmpl等方案取代,性能会好一点(只适合List,用在增改上EF和MVC集成的验证功能就不那么好用),你后面说的那段话很对,我现在正正在寻求一个取代EF查询慢的方案,还没找到合适的。其实性能主要体现在查询列表和列表统计上,可能我关联做的有点多的缘故

支持(0) 反对(0) leeolevis | 园豆:43 (初学一级) | 2012-08-03 09:50

@leeolevis: 一般来说,我不认为EF的查询会比直接编写SQL查询要慢,你可以通过EF生成的查询语句与你自己编写的查询语句在SQL Server Management Studio中测试便知。EF的流程很简单,把表达式转换为SQL,然后执行,增加的开销就是把表达式转换为SQL,对于一个复杂的SQL的执行时间而言,可以忽略不计。因此,你应该先做测试。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2012-08-03 10:02
0

http://www.nopcommerce.com/downloads.aspx这个似乎可以做参考

收获园豆:20
sinhbv | 园豆:2579 (老鸟四级) | 2012-08-03 08:06

多谢,以前看过。但没有实际了解

支持(0) 反对(0) leeolevis | 园豆:43 (初学一级) | 2012-08-03 09:36
2

如果数据量特别巨大的话,还是要考虑的数据库的优化。比如建立索引,对表进行表分区,读写分离,对常用的sql以存储过程代替。并且实际的开发当中要EF与ADO.NET配合使用,发挥各自己优势。并且要合理的使用缓存机制,比如redis和mongodb以及memcache和合理使用。同时要做到代码规范,分层合理,页面结构合理。比如将js一般放到页面尾端。合并共用的js。有了这些,大数据的处理将不是问题。当然,硬件上也需要扩充,如果条件允许的话。

收获园豆:10
jerry-Tom | 园豆:4077 (老鸟四级) | 2012-08-03 10:39

恩,说的非常好。这些我也知道一些,但是具体的运用上还需要花费很多时间去研究。谢谢,以后希望有机会多交流。博客关注你呢

支持(0) 反对(0) leeolevis | 园豆:43 (初学一级) | 2012-08-03 10:57
0

这是生成的sql语句有问题,你优化下生成出来的sql语句,比如在数据库建立索引,应该能解决你的问题。

收获园豆:10
az235 | 园豆:8483 (大侠五级) | 2012-08-03 15:16

建议用sql Profiler 把sql语句抓出来,然后去执行看看

支持(0) 反对(0) az235 | 园豆:8483 (大侠五级) | 2012-08-03 15:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册