C# .Net ORM/业务对象框架性能

C# .Net ORM/业务对象框架性能,c#,.net,orm,oop,frameworks,C#,.net,Orm,Oop,Frameworks,目前,我正在使用一个自定义业务对象层(采用facade模式),在该层中,对象的属性从存储过程加载,并为业务逻辑提供一个位置。这在尝试将我们的代码库移动到一个更分层和标准化的应用程序模型时效果很好,但感觉这种方法更多的是一个渐进的步骤,而不是一个永久的步骤 我目前正在考虑转向一个更正式的框架,这样某些架构决策就不必是我自己的了。在过去,我曾与CSLA和Linq-to-SQL合作,虽然我喜欢里昂证券的许多设计决策,但我发现它对我的口味来说有点臃肿,Linq-to-SQL可能没有我想要的性能。我一直对

目前,我正在使用一个自定义业务对象层(采用facade模式),在该层中,对象的属性从存储过程加载,并为业务逻辑提供一个位置。这在尝试将我们的代码库移动到一个更分层和标准化的应用程序模型时效果很好,但感觉这种方法更多的是一个渐进的步骤,而不是一个永久的步骤

我目前正在考虑转向一个更正式的框架,这样某些架构决策就不必是我自己的了。在过去,我曾与CSLA和Linq-to-SQL合作,虽然我喜欢里昂证券的许多设计决策,但我发现它对我的口味来说有点臃肿,Linq-to-SQL可能没有我想要的性能。我一直对NHibernate的流行和Linq向实体的推动感兴趣,但是性能是一个关键问题,因为有时需要一次获取大量记录(>15k)(请不要讨论原因)就性能而言,我很好奇采用正式的.Net对象框架的最佳选择是什么

注意:这将主要用于Winform和WPF应用程序


复制:

对于任何ORM,您都将通过过程缓存中的1级获得开箱即用的提升。特别是在负载情况下,如果它已经在那里,它就不会去冥王星(DB)。大多数ORM都有机会注入L2 out proc缓存。它们的优点是它们只需插入ORM。签出NCache for NHibernate。

O/R映射器性能将在很大程度上取决于应用程序的设计方式以及业务对象的映射方式。例如,您可以通过在循环中延迟加载子对象来轻松降低性能,这样1000个对象的1个select就变成了1001个select(googlen+1 select)

o/r映射器最大的性能提升之一是开发人员的生产率,这通常比应用程序性能更重要。对于在最新硬件上运行的大多数应用程序,最终用户通常可以接受应用程序性能。开发人员的性能仍然是一个瓶颈,无论对问题应用了多少Mountain Dew.:-)

-那里的性能测试几乎就是你想要看到的


您必须查看物化测试(获取大量项的性能正是它所显示的);此外,您还可以将ORM的性能与普通ADO.NET上近乎理想的SQL的性能进行比较。

听起来您在询问对象关系映射框架(简称ORM)-你应该考虑改变你的问题的标题来指定,因为许多人可能不理解你所说的“对象框架”的意思。我认为你在寻找一个对象关系映射器(ORM),而不是一个“.NET对象框架”。您可能需要相应地更改标题…感谢您的建议,我将其更改为ORM/业务对象框架,因为我不反对类似于CSLA的东西,它不是一个完全的ORM。现在的问题是找到真正想要谈论性能的人。;)如果缓存的使用是可能的,那么会有一个提升。但是,例如,如果他按顺序从数据库中读取数千个非常简单的对象,缓存将不会有多大帮助:ORM中的缓存可以显著提高随机读取的性能(实际上,通过简单地减少ORM和RDBMS之间的聊天次数),而不是按顺序读取的性能(因为根本没有聊天次数)。这太棒了!比我要找的还要多的数据。谢谢