Java 如何在单片应用程序中的GUI和微服务模块之间进行通信?

Java 如何在单片应用程序中的GUI和微服务模块之间进行通信?,java,asynchronous,ipc,microservices,synchronous,Java,Asynchronous,Ipc,Microservices,Synchronous,我有一个遗留的monolith应用程序,我必须重新设计。不幸的是,任务是以小规模的方式重新设计 目前,我需要为特定模块实现一个新的面向公众的web服务。我正在利用这种情况将其拆分为自己的服务。然而,我遇到了一个问题。服务器生成的GUI(struts monolith)需要来自我的微服务的一些数据。显而易见的答案是在web服务中提供REST接口(JSON/协议缓冲区等),供我的monolith使用,以便向用户提供结果。但这是我唯一的选择吗 理想情况下,我希望转到monolith和服务之间的异步通信

我有一个遗留的monolith应用程序,我必须重新设计。不幸的是,任务是以小规模的方式重新设计

目前,我需要为特定模块实现一个新的面向公众的web服务。我正在利用这种情况将其拆分为自己的服务。然而,我遇到了一个问题。服务器生成的GUI(struts monolith)需要来自我的微服务的一些数据。显而易见的答案是在web服务中提供REST接口(JSON/协议缓冲区等),供我的monolith使用,以便向用户提供结果。但这是我唯一的选择吗

理想情况下,我希望转到monolith和服务之间的异步通信,但是当用户需要来自微服务的特定数据时,我该怎么做?在异步过程中如何做到这一点?当用户等待GUI(同步事件)时,如何使GUI和Web服务之间的通信协议也不同步

在此特定实例中,用户将使用microservice批量上传数据(csv文件)。微服务将处理数据,并向用户提供选项,以便在数据准备就绪后操作数据(全部通过API调用)。企业需要GUI中的一个选项来查看/下载上传的文件。本质上,monolith(负责GUI)需要从服务请求文件并将其返回给用户


有没有办法在不使用单片电脑和微服务之间的同步IPC的情况下构建这个设计?

同时有太多的问题。。。首先,您需要为自己定义微服务的范围。正如您所说的“用户将使用微服务上传数据”,然后“微服务将处理数据并向用户提供操作数据的选项”。它真的是微服务吗?还是通常的SOA设计。。。上传、处理、提供选项、操作……同步与异步是另一回事,与微服务概念无关。。。“本质上,monolith需要从服务中请求文件并将其返回给用户”——这可能是另一个微服务吗?一个上传文件,另一个返回?@Vadim你说得对,在微服务的定义中,它不是真正的微服务。它更像是一种“元微服务”。如果我现在真的把它分成几个微服务,它永远不会通过架构审查,因为该组织的方法非常保守。然而,我想朝着这个方向迈出第一步。我想你可以说它更像是经典的SOA设计,对微服务的实现有着更长远的愿景。我有很多类似的问题“微服务”现在是一个非常“性感”的词,但说到现实(同时有太多的问题……首先,你需要为自己定义一个微服务的范围。正如你所说的“用户将使用微服务上传数据”,然后“微服务将处理数据并为用户提供操作数据的选项”。它真的是微服务吗?还是通常的SOA设计?…上载、处理、提供选项、操作…同步与异步是不同的情况,与微服务概念无关。而且…“本质上,monolith需要从服务请求文件并将其返回给用户”-它可能是另一个微服务吗?一个上传文件,另一个返回?@Vadim你是对的,在微服务的定义中,它不是真正的微服务。它更像是一个“元微服务”。如果我现在真的将其拆分为几个微服务,它将永远不会通过架构审查,因为该组织的方法非常保守。然而,我想朝着这个方向迈出第一步。我想你可以说,它更像是经典的SOA设计,具有面向微服务的长期愿景ice实施Sunderstood:)我也有类似的问题。:)“微服务”现在是一个非常“性感”的词,但说到现实(