asp.net-mvc - 以 Web 服务为模型的 ASP.Net MVC?

标签 asp.net-mvc rest wcf-data-services

有没有人有关于在 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/

相关文章:

嵌套列表上的 Linq OData "Where"子句

c# - WCF 数据服务和映射的 DTO

wcf - 如何处理从WCF数据服务(OData)返回的json DateTime

c# - 返回空 Json 对象

python - 向 oanda 发送订单

asp.net-mvc - 如何将媒体类型添加到样式表引用 asp mvc

json - 通过 Jenkins REST API 获取 IP 地址?

python - 将记录收集到 Eve/mongodb 中的单个数组中以减少带宽

asp.net-mvc - 如何缩小标签的大小

asp.net - dll 中可重用的 ASP.NET MVC 组件,如 ASP.NET WebControls