繁体   English   中英

如何使用微服务架构分离现有项目?

[英]How to Separate Existing Project using Micro Service Architecture?

我在asp.net MVC中为银行部门创建了一个项目。

在开发时,我们没有考虑扩展。因此,我们没有使用任何模块化的体系结构。

但是现在我在新功能的部署和开发方面面临很多问题。

如果我开发任何新功能,那么当前我必须发布整个项目,因为只有一个namepeace-projectmain.dll。

现在,我想将所有控制器分离在单独的项目中,并想单独部署它,并使用MicroService体系结构,我想在主项目中使用它。

注意“我的视图”与控制器紧密结合。

那么如何在MicroService Architecture中迁移整个控制器?

项目结构说明

“如何迁移到微服务”需要一个非常长的答案,这可能是一本书。 但是,我可以给您一些指导,以帮助您。

首先,您可以遵循DDD方法来帮助您正确识别应用程序的有限上下文。 在理想情况下,每个域都应对应一个有界上下文。 因此,您可以按有限的上下文划分。 每个有界上下文可以具有一个或多个微服务,但是微服务不应大于有界上下文。 从我的角度来看,您的控制器已经按域或至少按子域划分了。 您可以尝试为每个控制器创建一个微服务,并查看其运行情况。 可以进一步拆分,即通过DDD中的聚合(每种聚合类型都可以是微服务)。

其次,每个微服务应该有单独的项目。 理想情况下,如果您需要弹性和可伸缩性,则微服务不应在外部请求期间调用其他微服务。 这意味着,当微服务收到来自客户端的请求时,它不应调用另一个微服务。 为此,它应该已经将所有其他微服务所需的数据都已经传输到其本地存储中(使用后台任务,以及同步或异步调用)。

最后但并非最不重要的一点是,每个微服务都应该有自己的数据库; 它们不应共享相同的数据库或表。

在这种情况下,我猜一个选择是将您的控制器转换为Web API,每种操作方法都返回JSON数据,而不是返回要渲染的视图。 现在将其视为单独的后端,可以将其捆绑为一个微服务。 下一步是将您的剃刀视图转换为具有2层的纯前端微服务(使用诸如angular或react这样的框架)-

  1. 服务层,负责进行API调用,以获取Web API返回的JSON数据
  2. 组件层,负责将服务获取的JSON数据映射到UI元素/表单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM