为新项目选择OR Mapper

Łuk*_*.pl 5 c# orm asp.net-mvc-2

我们即将开始一个新项目.它将是一组具有大量共享组件的Web应用程序.它每天将有多达50,000个独立用户访问,它将成为某种管理面板.所有项目都将在asp.net mvc 2中构建,它们都将在一个SQL Server数据库上运行.

直到我找到了ormbattle.net网站,NHibernate的性能测试与其他映射器相比看起来非常差,我们一直非常关注NHibernate .在这个总结中,我发现之前我不知道图书馆. BLToolkit看起来很有前途,但有两个 - 优点和缺点.

BLToolkit的社区支持很少,很少有例子,我也没有真正听说过在一个大项目中使用它的人.它也很轻巧,这意味着它不支持很多关系,延迟加载和缓存...

另一方面,性能非常好,而且它也有非常好的Linq支持.

在这种情况下,我在选择以下方式之一:

  1. 不要太关心性能并使用Nhibernate或EF或只使用L2SQL(哪个更好?)并使用具有更多有用功能的ORMapper.
  2. 专注于这个伟大的性能,并基于这个BLToolkit构建一些自己的解决方案,使用这个库作为一个非常好的基础.如果我在MVC中使用动作缓存,我可能不需要缓存.可能我不需要关联,因为我可以用连接表达式编写好的LINQ查询.可能我不需要延迟加载,因为我将仔细构建将从DB获得的所有我需要的精确方法.

在这种情况下,我不是在寻找判决.我要求的是一个小小的讨论,指出一些我没有考虑过的问题,或者只是与我分享一些关于不仅使用BLToolkit而且还使用其他或映射器的经验.

Ric*_*ier 3

您能否使用您正在考虑的几个不同的 ORM 创建原型,并看看它们的性能是否足以满足您的需求?您可以编写一些一次性的“性能峰值”代码,并使用 Visual Studio 中的数据生成器使用示例数据填充表。

我认为基于认为替代方案性能不够好而选择 ORM 是一种过早的优化 - 除非您已经完成了测试来证实您的怀疑。


关于 ormbattle.net,这是Ayende 的看法- 他是 NHibernate 开发人员之一。这是很久以前的事了,我不知道ormbattle.net 从那时起是否发生了变化。

LINQ to SQL 不再被积极开发 - 因此如果您想使用 Microsoft 的 ORM,EF 将是最佳选择。

与 EF 相比,我个人更喜欢 NHibernate,但当前版本的 EF 确实比当前版本的 NHibernate 拥有更完整的 LINQ 实现。NHibernate 3(今年晚些时候发布)将提供完整的 LINQ 支持,以及另一个名为QueryOver的类型安全 API 。