sof*_*ser 3 architecture client microservices server
我尝试实施并记录一个软件项目,其中我有一个用于前端的移动应用程序和不同的微服务来保存新用户等等。因此,构建所有架构:我使用客户端服务器架构,其中服务器是使用微服务架构实现的,是否正确?还是我理解错了?
简短的回答:
这取决于你问谁。简单地说,您可以说是,您的服务器端是您的微服务,或者其中的多个微服务正在为一个或多个客户端(例如您的移动应用程序、某些 Web/浏览器应用程序和其他类型的客户端应用程序)提供某些服务。请记住,微服务是一种用于后端的软件架构模式,它大部分时间都在某些服务器/服务器上运行。对于术语“客户端-服务器模型”,有些人会对此有不同的看法。我将尝试在下面解释。
更长的答案:
客户端-服务器模型历史/经典概述:请注意文档中的术语,因为它可能会使人们感到困惑。有很多人在说“客户端-服务器架构或模型”时会想到传统的客户端-服务器应用程序。在这种传统/经典意义上,客户端是在客户端计算机上运行并通过网络与远程服务器通信的专用应用程序(桌面应用程序,如 Outlook、Skype for Desktop 或类似应用程序)。从这个意义上说,客户端和服务器可以在不同的计算机上运行,但也可以在同一台计算机上运行。根据这种思维方式,Web 应用程序不是客户端-服务器应用程序,因为它没有代表客户端的专用应用程序。它使用浏览器来表示不是专用应用程序的客户端。因此,如果您的移动应用程序是本机应用程序或混合应用程序(专用应用程序),它将更多地朝着历史“客户端-服务器架构或模型”的方向发展。如果它是移动 Web 应用程序(在浏览器中运行),则不会。当谈到服务器部分时,经典的“客户端-服务器”和微服务之间的区别可以看作是“客户端-服务器”和 SOA(面向服务的架构)之间的区别。在这个经典的“客户端-服务器架构或模型”中,客户端和服务器更加耦合和开发,以便一起使用。当谈到微服务架构时,它们公开的服务通常被设计为松散耦合使用,并为多个不同的客户端(移动应用程序、Web 应用程序等)提供服务。 SOA vs 客户端-服务器 vs Web 服务 - 有什么区别?
客户端-服务器模型作为松散的概念/术语: 另一方面,也有很多使用术语“客户端-服务器架构或模型”的人认为代表“客户端部分”的任何类型的客户端应用程序,而不仅仅是专用桌面应用程序。当涉及到服务器端时,任何类型的服务器(Web 服务器、文件服务器或其他,无论它们使用哪种内部架构)都将代表服务器。因此,例如与某个服务器通信的移动应用程序(本机、混合或基于浏览器)或 Web 应用程序(单页应用程序和其他)将被视为“客户端-服务器架构或模型”。通过这种方式,“客户端-服务器架构或模型”被用作通用术语。如果您阅读维基百科 ( https://en.wikipedia.) 页面的客户端 - 服务器模型,您也可以获得这种印象。您的客户端应用程序通过网络与您的服务器通信以交换一些内容。大多数时候通过 HTTP 或其他协议。如果服务器端在一台或多台机器上部署了多个服务(微服务)来提供内容对您的客户端来说不是那么重要。因此,从这个角度来看,您有一个“客户端-服务器模型”。
您的情况:对于您的情况,这取决于您的服务器部分的使用或运行方式。我不确定你是如何在你的应用程序中做到这一点的,但根据我的经验,有多种方法可以与你的服务器端进行通信。在客户端和微服务之间进行通信的两种最常见的方式:
这是一篇解释这两种方法的文章:https : //docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-与 API 网关模式对比
一般来说,术语“客户端-服务器”可能会被错误地理解。我的建议是在文档中更具体地描述您的架构以避免混淆。例如,您可以说您有一个系统,它在服务器端运行在微服务架构之上,而您的客户端是一个移动应用程序,它使用来自一个或多个微服务的服务(直接或通过某个代理、api 网关或其他)。这实际上取决于您的具体架构。
希望这可以帮助。