Service 4层(用于N层)体系结构的示例?

Service 4层(用于N层)体系结构的示例?,service,architecture,n-tier-architecture,Service,Architecture,N Tier Architecture,最近,我的一位朋友问我关于N层体系结构的问题,我可以通过示例向他解释1、2和3层体系结构。但当我想给出3层以上的示例时,我被卡住了。我在谷歌上搜索并大肆寻求帮助,但找不到任何像样的例子 它被命名为N-tier,这让我觉得“N”可以是从1开始的任何数字。但我找不到任何4层或5层的示例 有人能分享一些涉及3层以上的N层体系结构的例子吗 基本服务:例如数据库、目录服务、文件和打印服务、硬件抽象。这一层越来越被称为平台 业务域层:应用服务器,如JavaEE,包括EJB、DCOM或CORBA服务对象。提供

最近,我的一位朋友问我关于N层体系结构的问题,我可以通过示例向他解释1、2和3层体系结构。但当我想给出3层以上的示例时,我被卡住了。我在谷歌上搜索并大肆寻求帮助,但找不到任何像样的例子

它被命名为N-tier,这让我觉得“N”可以是从1开始的任何数字。但我找不到任何4层或5层的示例

有人能分享一些涉及3层以上的N层体系结构的例子吗

  • 基本服务:例如数据库、目录服务、文件和打印服务、硬件抽象。这一层越来越被称为平台
  • 业务域层:应用服务器,如JavaEE,包括EJB、DCOM或CORBA服务对象。提供业务功能,增加对SOA和微服务的使用
  • 表示层:例如Javaservlet/JSP、ASP、PHP。这一层将越来越多地包括Web服务作为业务层服务的代理和适配器
  • 客户端层:浏览器上的HTML页面等瘦客户端和Java WebStart&Flash等富客户端
    • 在JavaEE中,通常将业务域层划分为数据访问(实体bean)和业务服务(会话bean)
    • 在企业SOA()中,ESB()通常作为第1层和第2层之间的附加层存在。这可能是平台规定的一部分
    • 在mashup中,在第3层和第4层之间可以有一个聚合层

    被称为N层的移动反映了从较旧的客户机服务器到前3层再到4层的组件化架构的不断增加。一个层的定义特征是一个清晰定义的接口,具有分离的关注点。

    一个四层体系结构包括以下内容

    a。客户端层——node.js angularJs等基本上独立于服务器端,UI团队独立于客户端工件工作

    b。聚合层——内容交付网络(akamai)

    c。api层——所有服务器端调用的网关,可以有自己的缓存

    d。服务层--包括内部或外部服务…

    五分钟前我读了一篇文章

    客户是你阅读它的地方 Api或应用程序后端是组装它的地方。。 数据聚合。。要么通过外包的jsons/xmls,要么在数据库上查询,最后一个服务层是您实际在数据库上进行查询,或者在大数据上运行功能,或者从谷歌上读取GPS位置和地图。。。这就是我在这种情况下的看法。它将数据层从三层简单地划分出来


    但是这个N层模型是完全抽象的,所以你可以撕毁你的基础设施,直到你只有一些逻辑上的原子部分。仍在划分以前的结构。

    我倾向于不那么抽象、更实际的解释,以回答以下问题:“我如何以及为什么要将系统划分为层,以及将它们放在服务器的何处?”

    基本上,当您创建一个使用数据库的简单网站时,您已经有了3层“开箱即用”:

    • 数据层-数据库。但是,如果您使用的是短期内存缓存或文件系统,那么我们可能会争论是否可以将其视为“层”

    • 应用层-在服务器上执行的代码

    • 表示(或客户端)层—在客户端计算机上执行并向客户端显示结果的代码

    现在,我们如何获得第四层

    最有可能的是,不需要拆分客户机层。它在客户端的设备上,我们希望它尽可能简单高效

    我们可以拆分数据层吗?我见过一些系统在数据库、Azure Blob、文件系统等周围使用API来创建一些可以被视为一层的子系统。但是,这仍然是相同的数据层(A.K.一个基本服务层)还是我们可以认为它是一个独立的实体?如果我们把它分离出来,它会和我们的数据库在同一个物理(或虚拟)服务器上,这样我们就可以保护数据不被直接访问吗

    然而,在大多数情况下,是应用程序层被拆分

    其中一部分仍然命名为应用层。它成为一个内部API web应用程序,并生活在可以访问数据库的安全区域中。没有人可以直接访问数据库,但只能通过这个应用层

    另一部分通过某种连接(HTTP客户端等)成为应用层API的使用者。消费者可能被称为表示层(令人困惑——它与客户机层不一样吗?),即使它本身只有JSON API,没有任何用户友好的格式

    但接下来的问题是:在哪些情况下,我们开发人员可能希望将我们的生活复杂化,并将我们的web应用程序分为表示层和应用层,而不是将它们作为层保留在同一web应用程序中

    在严重的工作负载下,单独的应用程序层可能有利于可伸缩性,或者拒绝与向用户(甚至是内联网用户)公开的web服务器的数据库连接可能是安全性的要求


    我曾看到一些雄心勃勃的项目从一开始就采用四层结构,然后因为过度工程而自责。您必须跟踪这些内部连接、安全性、身份验证令牌,控制套接字(而不是在每个请求上打开新的HTTP连接),避免通过不小心创建的全局HTTP客户端实例等意外共享多个并行请求的数据。

    4层体系结构的一个简单示例是RMI JDBC Servlet。这涉及 客户端层 服务器的应用程序服务器 服务器程序的Rmi服务器 用于数据库的Jdbc服务器 那要看你想要什么了