我正在开发n层架构,而对于数据访问层,我正在使用Entity Framework 4.1。 数据库只暴露存储过程。我还有一个在WCF中开发的附加层服务层。 对于每个服务调用,请在using语句中使用新的数据上下文。 考虑到服务呼叫将达到每秒1000次,这种方法是对的吗?
最诚挚的问候。
答案 0 :(得分:0)
每秒1000次 - 如果您的服务真的需要做某事,您将需要非常好的服务器或负载平衡的环境。
如果您的数据库只公开存储过程而您无法执行直接SQL(=您不能使用LINQ),则没有理由使用EF。实际上有很多原因你不应该这样做,因为除了性能差得多之外它不会给你任何额外的价值。此外,如果您的存储过程使用多个结果集,表值参数和一些其他高级技术,您将无法在EF 4.1中使用它们。
使用直接ADO.NET将允许您异步执行查询,这可以导致asynchronous WCF service operations =更好地利用您的计算能力和更好的吞吐量。
答案 1 :(得分:0)
您应该更多地担心服务器负载平衡,可伸缩性,WCF性能问题,包括但不限于并发,防御。您应该选择可以根据您的需要轻松扩展的绑定,以及将来的minium击穿时间。
此外,您应该确保在后端进行良好的多线程设计,以支持1000次/秒的基准测试(我仍然想知道它是什么)并提高服务的吞吐量。
EF不会在你的案件中发挥任何作用。你需要原始表现。不要通过添加另一层不必要的东西来杀死。
对于负载平衡,您可以从Loadbalancing
开始