典型的Java Web应用程序的剖析

问题描述 投票:0回答:1

我正在参加一个培训课程,他们在其中展示了以下图形作为典型Java Web应用程序的剖析。陈述是否过于笼统,还是大致正确?

这里:

enter image description here

web
1个回答
0
投票

(免责声明:我的经验主要来自非Java平台,尽管我对Java的经验有限-但mostlyI'mnotafan]

这很准确-但仅适用于使用该体系结构的应用程序-这使此声明有点像是重言式。

我将其分解:

  • 服务消费者观点

    • “服务使用者”也通常称为客户端
    • “不需要”服务接口文件“ 不是构建客户端。
    • 我假设通过“接口文件”来指的是诸如SOAP WSDL文档或REST服务的Swagger文件之类的东西。这些文件通常不会在运行时由客户端使用,但会在设计时用于自动创建客户端类库-但您始终可以构建客户端,而无需任何代码生成或Java interface类型的重用。
  • [服务提供商角度

    • 我不同意使用术语“前端控制器”来将通常称为后端

      的Web服务控制器,Servlet或Spring控制器称为“前端”。通常指的是面向用户的UI / UX,例如呈现的HTML + JS,SPA前端或富客户端/胖客户端(当然,这将是“服务使用者”)。
    • 您不需要“服务元数据”即可拥有Web应用程序或Web服务-尽管如果要交付旨在供不同或非第一方客户使用的Web服务,则其创建一个WSDL,Swagger或平台使用的任何元数据或服务描述系统的好主意,以便您的消费者可以生成自己的强类型客户端。

  • “服务实施者的观点”

    • 因此,这是我最大的反对意见:该图假定Web服务将是3层的,而控制器/ Servlet代码只是位于系统其他位置的“应用程序”类型前面的一个薄层。尽管这在大型且复杂的应用程序中很常见,在该应用程序中,您将具有host-agnostic应用程序代码,这些代码旨在在例如集成测试或单元测试主机中运行,或者作为根据我的经验,我估计大多数项目会将特定于主机的代码(例如,Spring,Servlet等)内的所有应用程序逻辑整合在一起,因为它极大地简化了工作(而且这些主机通常仍支持可测试性-重用应用程序的想法)考虑到Web服务请求的断开和无状态模型与有状态的进程内客户端应用程序的需求之间的巨大差异,用于桌面或移动应用程序的代码库as-is实际上无法很好地实现) 。

    总结:这不是错误

,但是我认为它不能准确描述我亲自处理过的大多数(Java)Web应用程序...但这是我的主观意见,我知道Java Web应用程序和Web服务框架(例如Spring和Java EE)是为并鼓励3层体系结构而设计的,我不会对其进行描述-因此,以pit-of-success为例,我认为这部分是由于缺点Java语言设计中(这些框架是在20多年前设计的,然后才将泛型添加到该语言中。)
© www.soinside.com 2019 - 2024. All rights reserved.