有没有人有关于在 ASP.Net MVC 应用程序中使用 Web 服务作为模型的建议或技巧?我还没有看到有人写过这样做。我想构建一个 MVC 应用程序,但不将其绑定(bind)到使用特定数据库,也不将数据库限制为单个 MVC 应用程序。我觉得 Web 服务(RESTful,很可能是 ADO.Net 数据服务)是要走的路。
最佳答案
您的 MVC 应用程序与数据库分离的可能性或有用性有多大?在您的应用程序生命周期中,您多久看到一次从 SQL Server 到 Oracle 的更改?在过去 10 年我交付的项目中,它从未发生过。
架构就像洋葱,它们在它们所依赖的事物之上具有抽象层。如果您要使用 RDBMS 进行存储,那是您架构的核心。将自己从数据库中抽象出来以便可以交换它是非常错误的。
现在您可以将您的数据库访问与您的域分离,存储库模式是实现此目的的方法之一。如今,大多数成熟的解决方案都使用 ORM,因此如果您想要一种成熟的技术,您可能想看看 NHibernate,或者 ActiveRecord/linq2sql 在您的数据之上获得更简单的事件记录模式。
既然您已经制定了数据策略,那么您就拥有了某种领域。当您向客户端公开数据时,您可以选择通过 MVC 模式执行此操作,您通常会发送从您的域生成的 DTO 进行渲染,或者您可以决定利用像 REST 这样的架构风格来提供更松散耦合的系统,通过提供链接和自定义表示。
当您走向解决方案的外部层时,您会从紧耦合变为松耦合。
但是,如果您的问题是在 REST 架构或 Web 服务之上构建一个 MVC 应用程序,并将其用作模型......何必呢?如果您要拥有一个域模型,为什么不在您的系统和服务中重用它呢?
从 MVC 应用程序生成 UI 和生成 RESTful 架构所需的文档是两个完全不同的上下文,基于彼此之上的上下文只会造成比需要更多的痛苦。而且您正在牺牲性能。
取决于您的确切场景,但是基于远程 XML 的服务作为 MVC 中的模型,从经验来看,这不是一个好主意,它可能过度工程化并且忽略了对域开始的需求。
关于asp.net-mvc - 以 Web 服务为模型的 ASP.Net MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936570/