`

SSH 工作原理

    博客分类:
  • MVC
阅读更多

典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。
表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。
中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。
Web层,就是MVC模式里面的Ccontroller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts
Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。
DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。
PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。
Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。
一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。然而,你的应用是分层的,可能每一个层都需要各自的框架。仅仅解决UI问题并不意味着你能够很好的将业务逻辑和持久性逻辑和UI 组件很好的耦合。
不可否认,对于简单的应用,采用ASP或者PHP的开发效率比采用J2EE框架的开发效率要高。甚至有人会觉得:这种分层的结构,比一般采用JSP + Servlet的系统开发效率还要低。
笔者从一下几个角度来阐述这个问题。
— 开发效率:软件工程是个特殊的行业,不同于传统的工业,例如电器、建筑及汽车等行业。这些行业的产品一旦开发出来,交付用户使用后将很少需要后续的维护。但软件行业不同,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时间上考虑其开发效率是不理智的,也是不公平的。众所周知,对于传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASPPHP页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层。因此,采用J2EE分层架构,即使前期的开发效率稍微低一点,但也是值得的。
— 需求的变更:以笔者多年的开发经验来看,很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是——采用优秀的解耦架构。这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。
注意:即使在传统的硬件行业,也有大量的接口规范。例如PCI接口、显卡或者网卡,只要其遵守PCI的规范,就可以插入主板,与主板通信。至于这块卡内部的实现,不是主板所关心的,这也正是面向接口编程的好处。假如需要提高电脑的性能,需要更新显卡,只要更换另一块PCI接口的显卡,而不是将整台电脑抛弃。如果一台电脑不是采用各种接口组合在一起,而是做成整块,那将意味着即使只需要更新网卡,也要放弃整台电脑。同样,对于软件中的一个个组件,当一个组件需要重构时,尽量不会影响到其他组件。实际上,这是最理想的情况,即使采用目前最优秀的架构,也会有或多或少的影响,这也是软件工程需要努力提高的地方。
技术的更新,系统重构:软件行业的技术更新很快,虽然软件行业的发展不快,但小范围的技术更新特别快。一旦由于客观环境的变化,不得不更换技术时,如何保证系统的改变最小呢?答案还是选择优秀的架构。
在传统的Model 1的程序结构中,只要有一点小的需求发生改变,将意味着放弃整个页面。或者改写。虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,否则不要采用Model 1的结构。
采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。
DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。用Spring容器代替DAO工厂
通常情况下,引入接口就不可避免需要引入工厂来负责DAO组件的生成。Spring实现了两种基本模式:单态模式和工厂模式。而使用Spring可以完全避免使用工厂模式,因为Spring就是个功能非常强大的工厂。因此,完全可以让Spring充当DAO工厂。
Spring充当DAO工厂时,无须程序员自己实现工厂模式,只需要将DAO组件配置在Spring容器中,由 ApplicationContext负责管理DAO组件的创建即可。借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用 DAO实例。
优点:
StrutsTomcatTurbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。TaglibStruts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:
TaglibStruts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。
StrutsMVCController一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。
Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式,如果你的系统准备采用J2EE MVC架构,那么,不妨考虑一下Struts。 

<!--EndFragment-->

分享到:
评论

相关推荐

    SSH工作原理及流程

    SSH 工作原理及流程 SSH(Secure Shell)是一种安全的网络协议,用于提供安全的远程访问和文件传输。SSH 协议具有广泛的应用场景,如远程登录、文件传输、网络管理等。下面是 SSH 工作原理及流程的详细说明: 一、...

    SSH工作原理

    ### SSH工作原理详解 #### 一、概述 SSH(Structured Session Handling)在这里特指Spring、Struts和Hibernate三个开源框架的组合使用,而非网络安全协议SSH(Secure Shell)。本篇文章将详细解析SSH工作流程中的...

    SSH工作原理文档 总结报告

    **SSH工作原理文档总结报告** **一、SSH框架概述** SSH(Spring、Struts、Hibernate)是Java开发中广泛使用的三大开源框架,它们分别负责应用的业务层、表现层和持久层,共同构建了一个强大的MVC(Model-View-...

    SSH工作原理及为什么要用?

    **SSH工作原理** SSH协议主要用于加密网络服务,如远程登录、文件传输等。其工作原理可以分为以下几个步骤: 1. **密钥交换**:当客户端尝试连接到服务器时,服务器会发送一个公钥给客户端。客户端会验证服务器的...

    ssh工作原理详解,包括struts ,spring,hibernate,总得ssh得原理讲解。希望对大家有所帮助!

    SSH,全称是Struts2、Spring和Hibernate,是Java Web开发中的三大框架,...理解SSH的工作原理对于Java Web开发人员来说至关重要,有助于提升开发效率,确保软件质量。希望以上内容对大家理解和运用SSH框架有所帮助。

    SSH工作原理.doc

    struts + hibernate + Spring 整合web项目

    SSH的工作原理及优点

    根据提供的文件信息,可以看出这里似乎混杂了一些与SSH工作原理及优点不相关的内容,比如Hibernate、Struts和Spring等技术的介绍。为了满足题目要求,本文将重点围绕SSH的工作原理及优点进行详细阐述。 ### SSH的...

    Solaris SSH配置和原理

    #### 五、SSH工作原理概述 SSH协议的工作流程大致如下: 1. **握手阶段**:客户端向服务器发送SSH版本信息,然后双方交换加密算法、压缩算法、MAC算法等协商结果。 2. **密钥交换**:客户端和服务端基于协商的...

    ssh集成 ssh集成

    SSH工作原理基于公钥加密技术,允许用户通过验证公钥来安全地连接到远程主机。服务器上存储私钥,客户端使用与之匹配的公钥进行身份验证。一旦建立连接,所有传输的数据都会被加密,保护信息免受中间人攻击。 **SSH...

    ssh2工作原理及详细讲解

    在本文中,我们将深入探讨SSH2的工作原理及其关键点。 SSH2的核心功能包括身份验证、加密通信以及命令执行。首先,身份验证过程是SSH2的关键步骤,它确保只有授权用户能够访问远程系统。SSH2支持多种身份验证方法,...

    ssh的工作原理简介说明

    ssh的工作原理,以形象的方式深入浅出的描述了ssh的工作原理

    SSH Secure Shell工具

    1. **SSH工作原理** SSH基于客户端-服务器架构,通过公钥基础设施(PKI)进行身份验证。客户端连接到服务器时,服务器会提供其公钥,客户端检查该公钥是否已知和可信。如果验证通过,双方将协商一个对称密钥,用于...

    精讲SSH框架工作原理

    ### SSH框架工作原理详解 #### 一、概述 在当今快速发展的信息技术领域中,Java企业级应用程序开发一直是重要组成部分。其中,SSH框架(Struts + Spring + Hibernate)因其高效的开发速度和灵活的架构设计而备受...

    SSH框架工作原理.doc

    以下是SSH框架各部分的工作原理: 1. **Struts**:作为SSH框架中的MVC模式的“C”(Controller),Struts主要负责控制层的职责。它接收用户的HTTP请求,解析请求参数,然后调用相应的业务逻辑方法。Struts通过...

    SSH面试题整理

    2. **SSH工作原理** - SSH采用客户端-服务器架构,客户端发起连接请求,服务器响应并进行身份验证。 - 身份验证通常包括公钥交换,公钥存储在服务器的~/.ssh/authorized_keys文件中。 - 加密算法用于保护数据的...

    ssh.rar_ssh

    ### SSH工作原理 1. **密钥交换**:当客户端连接到SSH服务器时,它们首先交换一个会话密钥,用于后续的数据加密。 2. **身份验证**:客户端提供一个标识自己的方法,可以是用户名/密码组合,也可以是公钥。如果使用...

    ssh工作原理

    Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean的方式 面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切...

    SSH Secure Shell.rar

    **一、SSH工作原理** SSH通过公共密钥加密技术来确保通信的安全性。当用户尝试连接远程服务器时,服务器会提供一个公钥给客户端,客户端用这个公钥对随机数据进行加密并发送回服务器。服务器解密后确认无误,就建立...

    简单的SSH小实例

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地远程访问和管理服务器。这个"简单的SSH小实例"可能是指一个基于SSH技术的简单应用,可能...这样的实例对于初学者理解SSH工作原理和实践操作非常有帮助。

Global site tag (gtag.js) - Google Analytics