简化 .net 核心 web api 设计复杂性
Simplify .net core web api design complexity
这是一个设计相关的问题。
我在 asp.net 网络表单中有一个遗留应用程序,它有 3 种用户:管理员、客户和提供商,它们访问产品、帐户、销售、购买等多种服务。所有这 3 个用户共享相同的内容到目前为止,用于服务、逻辑和数据库的 class 个库集。并且所有 3 个用户的部署都是单一的。
现在我们正在将其迁移到 .net 核心 Web api + angular。我正在考虑各种选择。到目前为止,我发现这是最适合我们应用的方法:
- 为管理员、客户和提供商创建单独的网站 api。然后对于管理员的任何更改,部署都不会影响客户。
但这种方法的问题是 class 库将被复制。一些常用方法会重复
有什么alternative/good方法吗?
在以下情况下,项目分离可能是有益的:
- 正在更新一个项目不影响其他项目
- 发布周期在这种方法中可以非常小,这显然可以加快开发和部署速度
- 但是如果你只是想分离你的项目并且他们仍然有一个单一的数据存储,这个架构是一个宏服务架构并且微观之间的通信应该通过API来完成
- 对于您的 共享代码,您可以定义一个 Nuget 包,每个项目都可以将其添加到他们的项目中 防止重复代码
我的答案太大了,所以我决定添加另一个答案。
要将单体 应用程序迁移到微服务 或宏服务,最好遵循以下步骤:
- 识别所有组件组,这意味着您应该将您的应用程序分解为几个小项目,在您的示例中,它们将是 AdminPeoject 、CustomerProject 和 ProviderProject.
- 然后为所有数据访问场景定义几个端点和APIs。例如,如果您需要 access 或 manipulate 位于 AdminProject 的数据并且您的请求源是其他项目,您将在您的 AdminProject 中有一个用于此目的的 API,并且从现在开始,与 AdminProject 中的数据操作相关的每个请求都应该由这些 API 完成。
- 下一步,每个项目都应该可部署并且独立部署其他项目。
- 如果您的系统不复杂,则不需要将您的宏服务迁移到微服务,因为它会增加很多复杂性你的项目。
- 最好使用单一数据存储。一段时间后,如果需要分离,只需要分离数据存储即可。
这是一个设计相关的问题。
我在 asp.net 网络表单中有一个遗留应用程序,它有 3 种用户:管理员、客户和提供商,它们访问产品、帐户、销售、购买等多种服务。所有这 3 个用户共享相同的内容到目前为止,用于服务、逻辑和数据库的 class 个库集。并且所有 3 个用户的部署都是单一的。
现在我们正在将其迁移到 .net 核心 Web api + angular。我正在考虑各种选择。到目前为止,我发现这是最适合我们应用的方法:
- 为管理员、客户和提供商创建单独的网站 api。然后对于管理员的任何更改,部署都不会影响客户。 但这种方法的问题是 class 库将被复制。一些常用方法会重复
有什么alternative/good方法吗?
在以下情况下,项目分离可能是有益的:
- 正在更新一个项目不影响其他项目
- 发布周期在这种方法中可以非常小,这显然可以加快开发和部署速度
- 但是如果你只是想分离你的项目并且他们仍然有一个单一的数据存储,这个架构是一个宏服务架构并且微观之间的通信应该通过API来完成
- 对于您的 共享代码,您可以定义一个 Nuget 包,每个项目都可以将其添加到他们的项目中 防止重复代码
我的答案太大了,所以我决定添加另一个答案。 要将单体 应用程序迁移到微服务 或宏服务,最好遵循以下步骤:
- 识别所有组件组,这意味着您应该将您的应用程序分解为几个小项目,在您的示例中,它们将是 AdminPeoject 、CustomerProject 和 ProviderProject.
- 然后为所有数据访问场景定义几个端点和APIs。例如,如果您需要 access 或 manipulate 位于 AdminProject 的数据并且您的请求源是其他项目,您将在您的 AdminProject 中有一个用于此目的的 API,并且从现在开始,与 AdminProject 中的数据操作相关的每个请求都应该由这些 API 完成。
- 下一步,每个项目都应该可部署并且独立部署其他项目。
- 如果您的系统不复杂,则不需要将您的宏服务迁移到微服务,因为它会增加很多复杂性你的项目。
- 最好使用单一数据存储。一段时间后,如果需要分离,只需要分离数据存储即可。