是否可以使用客户端-服务器架构和微服务架构?

时间:2019-05-31 09:44:58

标签: server architecture client microservices

我尝试实现并记录一个软件项目,在该项目中,我有一个用于前端的移动应用程序以及各种微服务,以节省新用户,等等。因此,要构建所有架构:使用客户端服务器架构(使用微服务架构实现服务器)是否正确?还是我理解有误?

1 个答案:

答案 0 :(得分:1)

简短答案:

这取决于您问谁。简单地说,您可以说是,您的服务器端是您的微服务,或者其中有多个正在为一个或多个微服务提供某些服务 客户(例如您的移动应用,某些Web /浏览器应用和其他类型的客户端应用)。请记住,微服务是后端的软件体系结构模式,该模式大多数时间在某些服务器上运行。 关于术语“客户端-服务器模型”,某些人对此会有不同的看法。我会尽力解释一下。

更长的答案:

  • 客户端-服务器模型的历史/经典概述:请谨慎使用文档中的术语,因为这可能会使人们感到困惑。很多人当你说 “客户端-服务器体系结构或模型”可以想到传统的客户端-服务器应用程序。在这种传统/经典意义上, 客户端是专用的应用程序(台式机应用程序,例如Outlook,Skype for 在客户端计算机上运行并通过网络与远程服务器通信的台式机或类似产品)。在这 感觉客户端和服务器可以在不同的计算机上运行,​​但也可以在同一台计算机上运行。 从这种思维方式得出,Web应用程序不是客户端服务器应用程序,因为它没有代表客户端的专用应用程序。它使用浏览器来表示不是专用应用程序的客户端。 因此,如果您的移动应用程序是本机应用程序或混合应用程序(专用应用程序),则它将朝着历史悠久的“客户端-服务器体系结构或模型”方向发展。如果它是移动Web应用程序(在浏览器中运行),则不会。 在服务器部分,经典的“客户端-服务器”和微服务之间的区别可以看成是 “客户端服务器”与SOA(面向服务的体系结构)之间的差异。在这种经典的“客户端-服务器体系结构或模型”中,客户端和服务器之间的耦合度更高,并且可以一起使用。当涉及微服务架构及其公开的服务时,通常设计为松散耦合使用并为多个不同的客户端(移动应用程序,Web应用程序等)提供服务。 在这个问题中,您可以了解有关SOA和“客户端-服务器”之间的区别的更多信息: SOA vs Client-Server vs Web Service - what is the difference?

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

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

  1. 客户通过Api-Gateway进行通信
  2. 客户端直接与微服务通信

这里有一篇文章介绍了两种方法: https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern

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

希望这会有所帮助。