了解应用程序架构

时间:2011-07-02 06:18:53

标签: java web-applications servlets architecture

我是一名从事Java Web应用程序的S / W开发人员。

我对Java的知识非常有限,并希望从简单的术语中高度理解我的应用程序架构。作为一名开发人员,我并不完全了解大局。

任何人都可以帮我理解这个吗?

Below is the arch image

3 个答案:

答案 0 :(得分:2)

每个层代表一个解决某些问题的地方是类似的方式,通常使用某些特定的库或框架。试图通过各层了解这项工作。但请注意,每个图层都隐藏了下面的细节,您无需了解较低图层的细节即可理解一个图层。

因此,Struts部分正在处理与用户界面相关的问题,即了解用户请求,选择一些业务逻辑来调用并选择如何将结果显示给用户。它不关心业务逻辑的如何,这是下一层的工作。

By Business Logic我指的是表达客户业务现实的Java(或其他语言)代码。例如,在零售应用程序中,我们可能需要计算特定订单量的折扣。因此,UI层希望显示客户订单的价格。它本身没有任何折扣逻辑,相反它向业务逻辑层说“客户X是订单N小部件和M zettuls,我们什么时候可以供应以及我们应该收取多少”,业务逻辑会计算出这个的定价客户,可能取决于各种事物,例如客户的状态,我们库存的商品数量,订单的大小等等。用户界面只能获得£450的答案,将于9月16日交付并显示。

这导致诸如“为什么将业务逻辑分离到自己的层?”之类的问题。有几个可能的原因:

  • 一些完全不同的用户界面也可能使用业务逻辑
  • 它从一些较旧的系统预先存在
  • 我们的大脑太小,无法同时考虑用户界面和商业逻辑
  • 我们有不同的团队致力于UI和BL - 需要不同的技能

这种思维方式遵循层次。在考虑每一层时,重要的是尝试关注图层的角色并将其他图层视为黑盒子。我们的大脑往往太小,无法同时考虑整个事物。当我在各层之间切换时,我几乎可以感觉到自己正在改变模式 - 取下我的UI头,戴上我的持久性头。

每层都有很多“外面”的材料。建议您首先阅读其中一个,并在遇到问题时提出具体问题。

答案 1 :(得分:0)

对我来说,看起来像是一个标准的“企业”应用程序。

接口

这个程序。主要用于人类通过Web浏览器使用。这个界面或UI层(广义上​​)是使用MVC框架Struts构建的。如果您不了解MVC,那么阅读这个术语是个好主意。

该应用。还公开了Web服务接口,该接口旨在供非人类(其他应用程序或脚本)使用。

因此,提供了2种接口。

业务逻辑

请求来自上面提到的2个接口,最终与下半部分(应用程序层)交谈以完成一些真正的工作。这里发生了实际的过程(计算东西,存储东西和不存在的东西)。另请注意,此层还与外部系统(通过服务网关)进行通信以完成请求。

他们这样分离系统的原因可能会有所不同。如果它是一个非常简单的小应用程序。那么这些抽象并不值得,所以它可能是一个非常复杂的系统。也许应用程序。 tier是一些遗留应用程序。他们想在它上面放置一些更好的用户界面。也许应用程序。层和Web层碰巧使用不同的技术堆栈。或许应用程序。层被许多其他外部系统使用。它还使得更新每个服务/更换每个服务等更容易,所以也许他们正在预料到这一点。无论如何,它看起来像是一种非常常见的SOA设计类型。

不确定您还想知道什么。我看到设计者打算在两个层中使用分布式缓存。总而言之,它是一种非常常见的系统集成图。

答案 2 :(得分:0)

App Tier - 基本应用程序逻辑所在的位置(想想基本的控制台程序)。

  • 数据库 - MySQL,Oracle ...服务器
  • DOs - 域对象的缩写。如果贫血通常仅限于吸气剂/孵化器,并且可以与实体(@Entity)同义。
  • 数据访问对象 - 使用DAO模式从数据库中获取域对象的对象。可以认为是等效的DAL(数据访问层),虽然这可能不适合这里。通常使用持久性/映射框架,如Hibernate或iBatis。
  • 域模型 - 域名(域名是根据需求进行研究/分析的)类别是打包和关联的(一对一,多对一,......)。有时甚至在其他容器类中合成。
  • 核心应用程序服务 - 组服务类,可以等同于业务逻辑层(BLL)。 Biz服务处理域模型,Application Services是相对于Application(方法不操纵Domain)而不确定系统服务应该做什么。我也不确定Core和Application Service块之间的区别是什么。
  • Facade / Interface - 这是与其他层进行所有通信的地方。它有助于完全理解界面和Facade模式。
  • TOs :传输对象。与域对象相关,并且如名称所示用于传输。

Web Tier - 为使应用程序可以从Web访问而添加的所有逻辑。

  • 业务代表:阻止使用委派模式?在这里,它显然是使用TOs在Application facade和Presentation Tier之间扮演中间人。
  • 模型:相对于MVC模式和变体的概念。使用JSF,我知道bean通常链接到JSP。该模型与域模型不同。它是为了演示目的而创建的,可能包含与在应用程序层中操作的数据无关的信息,并且特定于Web层。
  • 查看:相对于MVC模式和变体的概念。 JSP代表各个页面并使用自己的标记。
  • 会话:在会话上查找理论(因为HTTP是无状态的必需)。
  • ApplicationContext :可以从任何地方引入的组实例/设置。通常在Java世界中与Spring框架相关联。不要与UglyGlobalVar / singletons混淆。
  • 前端控制器:虽然前端控制器模式看起来更具体,但可以认为它等同于MVC的控制器。 Servlet在处理通信(GET,POST ...)和协调模型/视图时被视为控制器。不熟悉Struts,但想象一下框架实现了表示用户操作的类。
  • 演示文稿层:仅用于外部演示的所有逻辑。
  • 过滤器:可用于过滤请求,例如将请求重定向到登录页面。

随意添加/更正此说明。