【发布时间】:2024-06-19 02:50:02
【问题描述】:
我们有一个包含多个 MVC Web 项目的解决方案,现在添加了一个面向客户端的 WebApi 项目。
API 将是任何 Web 项目中可用内容的更缩小版本(尽管随着时间的推移它可能会扩展得更多),因此我们已经就如何处理模型。
在不同项目中处理模型的最佳做法是什么?
据我了解,例如,WebApi 项目中的模型将使用某些对 MVC Web 应用程序毫无意义的属性属性。再举个例子,Display 属性对 WebApi 没有意义,但在 View 中非常有用。
这让我相信我应该为 WebApi 创建一组单独的模型,但我也想知道我是否遗漏了什么。
我知道这可能是一个可能会引发各种意见的问题,所以我主要在寻找被认为是行业最佳做法的问题。
【问题讨论】:
-
Web API 通常用于 Web 服务。将您的服务和您的实际应用程序分开绝对是一个好习惯,因此您应该为此使用不同的项目。如果您想确保它们是独立开发的,您还应该拆分解决方案。
-
我们已经将 API 分离到它自己的项目中——我的问题是我们是否应该在各个项目之间共享一个模型。创建单个共享模型库,而不是为每个项目创建单独的模型库。
-
我会使用几个模型项目,每个项目都有自己的用途。这样,您就可以在服务和应用程序(可能还有数据库)之间进行更清晰的分离。但是,如果需要,您可以通过创建映射方法将一个模型映射到另一个模型来运行更多代码。
-
@McCee 您可以为各种客户端应用程序(web api/ mvc web 应用程序)使用相同的域模型。通过存储库模式将其公开给客户端。
标签: c# asp.net-mvc asp.net-web-api