简化.net核心web api设计的复杂性



这是一个与设计相关的问题。

我在asp.net网络表单中有一个遗留应用程序,它有三种用户:Admin、Customer和Provider,它们访问多种服务,如Product、Account、Sale、Purchase等。到目前为止,所有这三个用户都共享同一组服务、逻辑和数据库类库。对于所有3个用户,部署都是单一的。

现在我们正在将其迁移到.net核心web api+angular中。我正在考虑各种选择。到目前为止,我已经发现这对我们的应用程序来说是最好的:

  1. 为Admin、Customer和Provider创建单独的web api。然后,对于Admin中的任何更改,部署都不会影响Customer。但是这种方法的问题是类库会被复制。一些常见的方法将被复制

有什么替代/好的方法吗?

我的答案太大,所以我决定添加另一个答案。要将您的单片应用程序迁移到微服务宏服务

  1. 识别所有组件组,这意味着您应该将应用程序分解为几个小项目,在您的示例中,它们将是AdminPeojectCustomerProjectProviderProject
  2. 然后为所有数据访问场景定义多个端点API。例如,如果您需要访问操作AdminProject中的数据,并且您的请求源是其他项目,则您的AdminProject中将有一个用于此目的的API,从现在起,与AdminProject中的数据操作相关的每个请求都应由这些API完成
  3. 在下一步中,每个项目都应该是可部署的,并且独立于其他项目的部署
  4. 如果您的系统不复杂,则不需要将宏服务迁移到微服务中,因为这会给您的项目增加许多复杂性
  5. 最好使用单个数据存储。过一段时间,如果需要分离,只需要分离数据存储

在以下情况下,项目分离可能是有益的:

  1. 更新一个项目不会影响其他项目
  2. 发布周期在这种方法中可能非常小,这显然会加快开发和部署
  3. 但是,如果您只想分离您的项目,而它们仍然有一个数据存储,则该体系结构是宏服务体系结构,并且微型之间的通信应该通过API来完成
  4. 对于共享代码,您可以定义Nuget包并且每个项目都可以将其添加到其项目中,以防止重复代码

相关内容

  • 没有找到相关文章

最新更新