Server 是否可以使用客户机-服务器体系结构和微服务体系结构?

Server 是否可以使用客户机-服务器体系结构和微服务体系结构?,server,architecture,client,microservices,Server,Architecture,Client,Microservices,我尝试实施并记录一个软件项目,在这个项目中,我有一个用于前端的移动应用程序和不同的微服务,以节省新用户,等等。因此,要构建所有的体系结构:我使用客户机-服务器体系结构,其中服务器是使用微服务体系结构实现的,对吗?还是有什么我理解错误的地方?简短回答: 这取决于你问谁。简单地说,你可以说是的,你的服务器端是你的微服务,或者多个微服务向一个或多个微服务提供服务 客户端喜欢您的移动应用程序、某些Web/浏览器应用程序和其他类型的客户端应用程序。请记住,微服务是后端的一种软件体系结构模式,大部分时间运行

我尝试实施并记录一个软件项目,在这个项目中,我有一个用于前端的移动应用程序和不同的微服务,以节省新用户,等等。因此,要构建所有的体系结构:我使用客户机-服务器体系结构,其中服务器是使用微服务体系结构实现的,对吗?还是有什么我理解错误的地方?

简短回答:

这取决于你问谁。简单地说,你可以说是的,你的服务器端是你的微服务,或者多个微服务向一个或多个微服务提供服务 客户端喜欢您的移动应用程序、某些Web/浏览器应用程序和其他类型的客户端应用程序。请记住,微服务是后端的一种软件体系结构模式,大部分时间运行在一些服务器上。 对于“客户机-服务器模型”这一术语,有些人会有不同的看法。我会尽力解释贝娄

更长的回答:

  • 客户机-服务器模型历史/经典概述:请小心文档中的术语,因为它可能会让人困惑。有很多人当你说 “客户机-服务器体系结构或模型”可以想到传统的客户机-服务器应用程序。在这种传统/经典意义上 客户端是一个专用的应用程序(如Outlook、Skype等桌面应用程序) 在客户端计算机上运行,并通过网络与远程服务器进行通信的。在这个 感知客户端和服务器可以在不同的计算机上运行,但也可以在同一台计算机上运行。 按照这种思路,Web应用程序不是客户机-服务器应用程序,因为它没有代表客户机的专用应用程序。它使用浏览器来表示不是专用应用程序的客户端。 因此,如果您的移动应用程序是本机应用程序或混合应用程序(专用应用程序),那么它将更倾向于历史上的“客户机-服务器架构或模型”。如果是移动web应用程序(在浏览器中运行),则不会。 说到服务器部分,经典的“客户机-服务器”和微服务之间的区别可以看作是相似的 “客户机-服务器”和SOA(面向服务的体系结构)之间的区别。在这个经典的“客户机-服务器体系结构或模型”中,客户机和服务器的耦合性更强,并且更适合一起使用。当涉及到微服务体系结构和它们公开的服务时,它们通常被设计为松散耦合使用,并服务于多个不同的客户端(移动应用程序、web应用程序等)。 在这个问题中,您可以阅读有关SOA和“客户机-服务器”之间区别的更多内容:

  • 客户机-服务器模型作为松散的概念/术语: 另一方面,也有很多人使用术语“客户机-服务器体系结构或模型”来思考问题 代表“客户机部分”的任何类型的客户机应用程序,而不仅仅是专用的桌面应用程序。在服务器端,任何类型的服务器(web服务器、文件服务器或其他服务器,无论它们使用哪种内部体系结构)都可以代表服务器。因此,例如,与某个服务器通信的移动应用程序(本机、混合或基于浏览器)或Web应用程序(单页应用程序和其他)将被视为“客户机-服务器体系结构或模型”。 这样,“客户机-服务器体系结构或模型”被用作通用术语。如果你读维基百科 ()对于客户机-服务器模型,您也可以得到这样的印象。 客户机应用程序通过网络与服务器通信以交换某些内容。大部分时间里 HTTP或其他协议。如果服务器端在一台或多台计算机上部署了多个服务(微服务),则 服务内容对你的客户来说并不重要。因此,从这个角度来看,术语是“客户机-服务器模型”

你的情况: 对于您的情况,这取决于服务器部件的使用或运行方式。我不确定您在应用程序中是如何做到这一点的,但根据我的经验,有多种方法可以与服务器端进行通信。在客户端和micorservice之间进行通信的两种最常见的方法:

  • 客户端通过Api网关进行通信
  • 客户端直接与微服务通信
  • 以下是一篇文章,解释了两种方法:

    一般来说,“客户机-服务器”一词可能理解错误。我的建议是描述您的架构 在您的文档中,请更具体一点,以避免混淆。例如,您可以说,您有一个在服务器端运行在微服务体系结构之上的系统,您的客户端是一个移动应用程序,它使用一个或多个微服务(直接或通过某个代理、api网关或其他)提供的服务。这实际上取决于您的具体架构


    希望这有帮助。

    这是一个很好的解释。我有一个稍加修改的问题:我们能否使用相同的微服务同时为移动应用程序和web客户端(浏览器)提供服务?在浏览器和移动应用程序中何时使用相同的微服务或将其分开时,是否有提供指导的约定?没有什么可以阻止您使用来自多个客户端的微服务。其实这是一件很平常的事。通常微服务公开某种API(Rest、GraphQL、gRPC或其他),您可以从一个或多个客户端使用这些API。