Linq to Sql vs Nhibernate vs SubSonic vs Stored Procedure(Help)

时间:2009-07-14 14:55:55

标签: asp.net-mvc nhibernate linq-to-sql linq-to-entities datareader

我希望为新闻频道开发一个网站。

所以,显然它每天会收到很多点击量,每天都会更新很多..

我有ASP.Net和SQL Server的经验..

这些是我正在考虑使用的技术。考虑到需要的负载量,请帮我选择正确的方法..

技术??

1) ASP.Net Webforms

2) ASP.Net MVC 1.0

和数据访问?

1) Linq to SQL (令人印象深刻但谣言说微软正在放弃它)

2) Linq to Entities (效果问题)

3) Datreader / Dataset

4) SubSonic (不知道)

5) NHibernate (不知道)

请在发表评论时解释您的观点..

由于

Chitresh

9 个答案:

答案 0 :(得分:4)

我现在选择的工具是ASP.Net MVC 1.0和NHibernate。

这是我的推理:

ASP.Net MVC

我更喜欢MVC而非WebForms,原因如下。

  • ASP.Net MVC清楚地将我的控制器逻辑与我的观点分开
  • 在ASP.Net MVC中,我不必完成WebForms中的页面生命周期
  • 我发现使用像jquery这样的好Javascript库在ASP.Net MVC中编写AJAX应用程序更容易。 ASP.Net MVC还可以非常容易地将结果作为JSON返回而无需太多工作
  • 为ASP.Net MVC应用程序编写测试更为直接。作为一名顾问,我必须同时在多个项目之间进行多项任务,并且通过良好的测试可以更轻松地从一个项目转移到另一个项目。

<强> NHibernate的

虽然NHibernate有一个不错的学习曲线,但它可以让你的实体更加容易。我喜欢NHibernate,我可以:   - 自动延迟加载我的集合   - 级联从根对象删除并更新到其子对象   - 一组强大的查询对象,包括Linq,Criteria API和HQL(如果你真的想要,甚至可以直接使用SQL)   - 几个缓存选项

如果您打算使用NHibernate,我肯定会使用FluentNhibernate。它使映射更容易。

答案 1 :(得分:2)

如果我是你,我会使用LINQ to SQL,而不用担心微软“放弃”它。首先,微软并没有放弃LINQ to SQL,而是为了允许其他供应商(Oracle,DB2等)将LINQ引入其中而为其创建另一条路径。我已经阅读了LINQ团队的主要成员发表的几篇文章,他们将继续修改LINQ to SQL,并且从那里到他们的新工具的迁移路径将很容易。其次,LINQ to SQL很容易与数据上下文一起使用。如果您了解SQL,那么学习LINQ并不太难。

至于使用哪种技术,1)ASP.Net Webforms或2)MVC:我的答案是它们不是互斥的。 Webforms可以构建在MVC模型之上,也可以不构建。无论您是否使用MVC,都取决于您。如果你想快速和肮脏地完成你的网站,我可能会跳过MVC。如果您希望将来可以轻松扩展您的网站和/或允许图形设计人员在不弄乱代码的情况下对设计进行更改,那么我将实现MVC。

答案 2 :(得分:1)

WebForms和MVC之间的选择实际上取决于您是否喜欢模型 - 视图 - 控制器方法。就个人而言,我更喜欢WebForms,但我正在学习MVC(在Rails中),只是为了拓宽我的经验并获得更好测试的好处。这两种情况都适用于您的情况,因为它们都能够扩展到大型系统。

关于数据,我鼓励你在选择任何形式的Linq之前进行长时间的思考。请参阅以前的讨论:

Doesn't LinqToSql Miss the Point?

Is LinqToSql Powerful Enough? Aren't fluent interfaces easy to build?

我不推荐使用SubSonic,因为文档不存在。你会拔出你的头发试图弄清楚它是如何工作的。这很令人难过,因为在很多方面,它比Linq更好。

最后,我总是选择围绕ADO.NET使用自定义DAL包装器。首先,我知道我得到了什么。其次,你真的必须知道SQL,所以为什么通过尝试学习第二种数据访问语言会让生活变得更加困难? Linq和SubSonic的缺点很明显,优势主要是理论上的(再次,请参阅链接中的讨论以获取更多信息)。

答案 3 :(得分:0)

在性能方面,它们都能够处理数千个并发用户。

任何高流量网站上最大的性能考虑因素都是缓存。 WebForms / MVC具有出色的输出缓存选项(实际呈现的HTML)(最有效),以及数据对象的API缓存。

我认为您最好的选择是使用您最熟悉的数据访问框架 - 您最熟悉的设计模式/工具集。之后:缓存,缓存,缓存。

答案 4 :(得分:0)

你有使用ASP.NET的经验,我说要坚持下去,但如果你想学习一些新的ASP.NET MVC的好方法。

数据访问取决于您的需求和您喜欢的内容。

LINQ2SQL和DataReader / Dataset使用直接访问数据库,对于简单的应用程序来说很好。

LINQ2Entities,SubSonic和NHibernate是ORM框架,它适用于将来需要可扩展性的应用程序。

最好使用一些存储库模式来访问数据。

答案 5 :(得分:0)

微软并没有“放弃”Linq-to-SQL本身,只是没有添加主要功能(而不是向EF添加功能)。

我的偏见是将ASP.NET MVC与Fluent-NHibernate一起使用。我认为使用这些工具可以在灵活性和易用性之间取得平衡。但是,如果您对WebForms有更多经验,那么使用它将减少您的加速时间。除非你打算直接使用ADO.NET,否则我也倾向于避免使用DataSet。

答案 6 :(得分:0)

由于您已经熟悉ASP.NET和SQL,为什么不关注ASP.NET MVC和SubSonic。我认为新的.NET MVC可以促进更清晰,更有条理的代码,而SubSonic ORM似乎可以帮助您快速启动和运行,从而使您的数据库与代码相关。这是一个链接,可以找到有关SubSonic http://subsonicproject.com/docs/The_5_Minute_Demo的更多信息。有我的想法! :)

BTW,我个人使用ASP.NET MVC和NHibernate。

答案 7 :(得分:0)

我只是在开发一些东西,而且你现在处于同一个十字路口。 如果您是经验丰富的开发人员,我建议您选择 Asp.net MVC 。总的来说,我对它有很好的体验。

考虑到你的DAL,它有点棘手。

我们确实选择使用LINQ to Entities(因为L2SQL被放弃了),但我们最终使用自定义T4模板来生成EDMX文件中的代码。它工作得很好,我们拥有所需的所有可能的定制。但如果我现在必须选择,我可能宁愿选择 Subsonic 3 (因为LINQ to DB支持和T4生成器)或 Fluent nHibernate 。我知道Subsonic可能不会提供我所需要的,但我可以自定义模板。另一方面,nHibernate不支持LINQ to DB,这是我的偏好。

修改 如果你问我:LINQ to Entities基本上是LINQ to SQL,附加映射到自定义类型。好。有一些微小的差异,但总的来说就是它的本质。 MS似乎正在放弃它。

答案 8 :(得分:0)

如果你想要一个简单的干净设计,以便在将来实现和扩展,那么请使用asp.mvc和实体框架。我将从asp.net mvc网站上的电影数据库视频教程开始。