我看了很多答案,但没有找到满意的答案。 这是问题所在。我需要创建一个Web应用程序。技术将基于Microsoft堆栈(ASP.NET 4,C#,SQL Server 2008)。基础设施将托管在Amazon EC2上。 我需要决定访问数据的最佳方式。
在高峰期,一次可以有大约100,000人访问该网站。要实现这种规模并具有良好的性能,可以使用Entity Framework还是更好地依靠ADO.NET? Entity框架与ADO.NET是否存在性能问题?
任何提示都会有所帮助。
答案 0 :(得分:1)
由于您正在构建高流量网站,因此您可能应该使用简单的Ado.net。但Micro-ORM可以作为您的选择。例如,SO使用单个文件ORM dapper dot net。 如果您查看Performce表,您将看到EntityFramework不应该是一个选项。我个人喜欢PetaPoco。
http://code.google.com/p/dapper-dot-net/
http://samsaffron.com/archive/2011/03/30/How+I+learned+to+stop+worrying+and+write+my+own+ORM
**Method** **Duration**
Hand coded (using a SqlDataReader) 47ms
Dapper ExecuteMapperQuery<Post> 49ms
ServiceStack.OrmLite (QueryById) 50ms
PetaPoco 52ms Can be faster
BLToolkit 80ms
SubSonic CodingHorror 107ms
NHibernate SQL 104ms
Linq 2 SQL ExecuteQuery 181ms
Entity framework ExecuteStoreQuery 631ms
答案 1 :(得分:0)
实体框架,LINQ2SQL和其他OR映射器在应用程序服务器端的运行时间损失很小。然而,在大多数现实生活中,罚款低于1%。
与大多数技术(以不同方式做同样的事情)一样,性能影响并不是很大程度上取决于技术,而是取决于您如何实现它们。如果键入EF查询转换为循环数据库的多个SQL查询,则可以使用EF进行灾难性故障。但这些案例很容易被发现并且易于修复。