JAVA的三层架构是啥样的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA的三层架构是啥样的?相关的知识,希望对你有一定的参考价值。

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。瑭锦TANJURD解释区分层次的目的即为了“高内聚,低耦合”的思想。  1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。  2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。  3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。 参考技术A

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

    表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

    业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

    数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。

作用:

    数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

    业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

    表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

具体的区分方法

    数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。而不必管其他操作。

    业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

    表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

希望这个回答能帮到你,望采纳!!!

参考技术B 百度百科资料:http://baike.baidu.com/link?url=HLbNXYsa121rmRNHn9p4uyXyIgvqw2oSjwGgQFY4tKw4MtdwAh3jTQ9iUlg2dS67GG799bP_3AE3BExEr_OAbK
你可能会把三层架构与MVC搞混:你可以参考一下资料:
http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html
http://blog.csdn.net/csh624366188/article/details/7183872

如果不能区分,以后学的多了,就会知道区别了!
参考技术C

微服务架构中的社交 SSO 是啥样的?

【中文标题】微服务架构中的社交 SSO 是啥样的?【英文标题】:What does Social SSO look like in a Microservices Architecture?微服务架构中的社交 SSO 是什么样的? 【发布时间】:2017-10-11 21:44:15 【问题描述】:

晚上好

我正在尝试掌握社交 SSO(Facebook/Google 等)如何在微服务架构中工作的概念。

场景

假设我有 2 个后端微服务(订单、用户)和一个前端(WebApp)

用户:保存用户个人资料详细信息、电子邮件、姓名、地址。 订单:保存链接到用户的订单列表 WebApp:提供与两个后端服务交互的前端。

添加Social SSO,是为了简化用户注册网站http://www.myproduct.com的流程

当一个人使用社交单点登录时,我想在用户服务中创建一个用户帐户。

问题

假设用户在 WebApp 上点击“Login with Facebook”并以“John”身份登录

    在我的用户中为 John 创建帐户的最佳方法是什么 服务?

    以 John 身份登录后,WebApp 如何传播身份 约翰到订单服务?

    Order 服务如何验证 John 是否已登录?

    相互依赖的服务订单和用户如何相互信任?

疑虑

    使用授权服务器(Facebook、Google),下游服务将变得非常“健谈”

谢谢

丹尼尔

【问题讨论】:

【参考方案1】:
    在我的用户服务中为 John 创建帐户的最佳方法是什么?

这里没什么可做的,只需从 FB 获取用户详细信息并调用您的用户创建端点。对于 RESTful API,您可能需要向 https://your_api_gateway/users 发送 POST

    以 John 身份登录后,WebApp 如何将 John 的身份传播到 Order 服务?

一种选择是使用令牌微服务。在登录时,您将创建一个长期存在的身份验证令牌和一个短期访问令牌。身份验证令牌是您从不共享的信任来源。您将访问令牌返回给客户端 webapp。从客户端到您的任何微服务的所有调用都会将该访问令牌作为请求的一部分发送。另一种选择是简单地使用 FB/Google 生成的访问令牌。

    Order 服务如何验证 John 是否已登录?

您的订单服务将在请求中收到访问令牌。只要访问令牌有效,您就可以假定 John 已登录。

    相互依赖的服务订单和用户如何相互信任?

访问令牌由令牌微服务签名 - 这应该是一个受信任的服务 - 它可以包含可以由您的任何微服务进一步验证的其他信息

    使用授权服务器(Facebook、Google),下游服务将变得非常“健谈”

生成访问令牌后,您无需再次调用 FB 或 Google,直到您的 web 应用决定用户需要再次进行身份验证。

【讨论】:

谢谢@clonq 假设令牌服务是一个微服务,该服务会将用户重定向回 WebApp... 将长期存在的令牌作为查询参数传递?这安全吗?其次,假设这个长期存在的令牌实际上是 JWT。 WebApp 会在哪里存储这个?谢谢丹尼尔 不需要重定向。 Web 应用程序将对令牌微服务进行 AJAX 调用,该服务将以 JSON 有效负载的形式返回令牌。在有效负载中发送令牌是安全的,因为无论如何通信都应该通过 HTTPS。我的建议是使用短期令牌来增加安全性,而不是长期令牌,但在任何情况下,Web 客户端都可以根据您的“客户端会话”到期策略将其存储在内存中或将其保存在 localStorage 中。 嗨@clonq WebApp和Token服务是不同的微服务。因此,我想让令牌服务处理来自 SSO 提供者的响应,例如 FB 或 google。鉴于此,我如何让 WebApp 知道它以安全方式生成的长寿命令牌?谢谢 如果您想将调用移动到令牌服务中的 SSO 提供者,您只需将长期存在的令牌返回给客户端。所以流程是这样的:WebApp 调用 TokenService。 TokenService 调用返回令牌的 SSOProvider。 TokenService 然后将令牌返回给 WebApp。有意义吗?

以上是关于JAVA的三层架构是啥样的?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net中的三层架构是啥意思?mvc设计模式是啥?它们之间有关系吗?

三层架构各层之间的依赖关系是啥?

我的 Kendo 数据源架构必须是啥样的?

微服务架构中的社交 SSO 是啥样的?

java里分的三层到底是哪三层?

深入探讨:如何理解.Net的三层架构