Orm 是否建议制作一个与数据库无关的层接口的web程序?

Orm 是否建议制作一个与数据库无关的层接口的web程序?,orm,repository-pattern,web-architecture,middle-tier,Orm,Repository Pattern,Web Architecture,Middle Tier,我以前是Winforms程序员;我总是将我编写的程序分为两部分,前端WinForms和中间层,由远程处理/WCF提供支持 在这种方法中,前端代码无法访问Linq或System.Data.SqlClient。但这还有一个额外的优势,即中间层是一个即时的面向SOA公民服务的体系结构,可以用于B2B场景、数据库无关和支持internet,即使它只是一个Winforms应用程序 现在我在学习网络技能。使用ProASP.NETMVC中的SportsStore项目,我不可避免地会比较我的旧方法——中间层方法

我以前是Winforms程序员;我总是将我编写的程序分为两部分,前端WinForms和中间层,由远程处理/WCF提供支持

在这种方法中,前端代码无法访问Linq或System.Data.SqlClient。但这还有一个额外的优势,即中间层是一个即时的面向SOA公民服务的体系结构,可以用于B2B场景、数据库无关和支持internet,即使它只是一个Winforms应用程序

现在我在学习网络技能。使用ProASP.NETMVC中的SportsStore项目,我不可避免地会比较我的旧方法——中间层方法和那本书中的存储库方法。存储库方法在front-endSportsStore.WubUI上直接向SQL公开数据访问机制LINQ。使用存储库方法,SportsStore.WebUI仍然可以直接连接到数据库


问题是,在web程序上,我应该让前端只与中间层连接吗?前端可以是数据库无关的,中间层是即时SOA公民,还是应该通过存储库方法ORM直接使用数据库,还是类似的前端?

为了简洁起见,我确信这本书违反了一些最佳实践。作者必须平衡我如何表达自己的观点与正确的表达方式;他们通常会选择前者——这是一本关于web开发的书,不是关于架构的,对吧

您绝对应该继续使用n层体系结构。n层体系结构的全部要点是允许您更轻松地交换层—例如,交换数据库、交换用户界面用ASP.NET替换Winforms