• 关于架构


    一.架构的分层

    分层开发

    分层的概念:

    分层概念有不同层面的应用,通常,我们的应用从大的层面,都可以分为表现层、业务层、集成层、资源层等,这些系统构架层面的分层是在做系统构架时就做好的,

    我们不需要太多考虑,但在比较细粒度的层面,我们还可以分层,主要是在代码层面分层。

    代码分层的一个指导思想就是:一个类只做一件相关的事,保持其纯粹性,比如validator类就只做校验,业务类里面就只有业务方法,

    系统的远程访问方法就只处理远程方法,事务类就只做事务处理,不要将不同层面类型的工作混合在一个类中实现,有这样的情况就需要考虑到重构了。

    分层开发的效率:

    通常我们做的信息管理应用开发,侧重于复杂的业务逻辑,这个时候,系统的层次结构,清晰性,可维护,可扩展性要比性能问题来的重要的多,

    而性能我们可以通过加硬件配置做垂直扩展,也可以通过添加机器设备,通过集群的方法做水平扩展,效率问题是比较好解决的。

    更重要的是,硬件设备有一个摩尔定理,每18个月CPU性能翻一倍,价格降一半,但软件不是这样的。

    业务人员:与开发人员沟通业务需求。

    系统设计:定义系统的构架,技术实现和设计。

    页面美工:为应用系统做网页。

    开发人员:具体编码。

    配置人员:为iBATIS、 EJB等配置相关文件,由属性某技术的专业人员来配置。

    测试部署人员:为应用做单元测试和集成测试和部署工作等。

    版本控制人员:做版本管理。

    1、Web层

    数据绑定:是指把web页面提交的参数转换为一个数据对象的操作。

    数据校验:检验提交的数据格式是否正确,字段是否为空。一般不查询数据库。

    2、业务层

    业务层是J2EE应用的核心,它提供客户应用所需要的业务服务,包含业务数据和业务逻辑。通常情况下,绝大部分的业务处理集中在这一层。

    数据校验:web层和业务层的校验似乎是重复,但是业务层的校验即使重复也不容省去,因为业务层不能依赖web层来保证数据的完整性,

    特别是当业务层需要以某种方式让外部系统调用的时候,更是无法依靠web层数据校验来保证业务层的数据完整性。

    一般Service封装了BO和DAO以提供粗粒度的服务。

    作为SOA(Service Oriented Architecture,面向服务架构)的关键组成部分,Service也可以向外部系统提供服务。

    Service可以有层次结构,在复杂的系统中,会有很多细粒度的Service,这些Service又可以被包装成更粗粒度的Service,

    用户的业务逻辑的层次结构主要通过Service的不同层次结构来表现。

    BO(Business Object,业务对象)是一个完整的业务实体,包含属性和方法。

    比如业务系统中的客户、机动车、业务员、保单、险种、股票、基金、申请书等都是业务实体。

    BO对象需要持久化,即BO 对象的状态(各属性的值)需要存储在数据库中,所以BO对象需要在数据库中有一个或多个表和它对应。

    当应用复杂的时候,可以将BO分成若干层次,用粗粒度的BO封装细粒度的BO。

    PO概念,即Presist Object,持久化对象。职责是为DAO存储数据服务,校验存储数据,保证存储数据的完整性。

    与DTO区别:DTO为Services/Action服务,PO为DAO服务。

    DTO以业务逻辑为核心,PO以存储为核心。

    DTO可用于Services、Action、Web层、关联系统,

    PO仅可用于DAO内部。DTO不与表对应,PO分担DTO的职责,希望系统中因为Services需要而建DTO,而不是因为加了表就加个DTO。

    DTO与PO相互转换:DAO接口的参数为DTO,在DAO实现类中,DTO转换为PO后,进行增改。查询结果不使用PO,sqlmap直接映射DTO。

    PO是DAO内部使用的对象,用于数据库的insert和update。

    3、集成层

    在J2EE应用中,集成层负责资源集成,例如和数据库交互,访问外部系统。

    比如:组件DAO用于和数据库交互,组件SAO用于访问外部系统。

    4、核心层:

    core层的核心角色是一个轻量级的容器(Light Weight Container),所谓轻量级是相对于EJB容器而言(一般认为EJB容器属于一个重量级容器)。

    EJB运行在EJB容器内,容器负责管理EJB的生命周期,提供底层服务,如事务处理、权限控制等,EJB容器只能为EJB提供服务。

    core层负责管理各种bean(包括POJO bean和EJB),提供比如数据访问,日志等的支持。

    5、定时器:

    6、日志组件:

    1.错误日志

    用途:记录程序中异常信息,便于系统做除错,它在生产环境是不能够关闭的。

    2.跟踪日志

    用途:记录用户使用某个系统功能的完整流程,便于开发人员查看代码的执行调用过程。

    用于开发过程或者系统上线初期,在系统稳定后,可以通过配置文件将该日志去掉,以提高性能。

    3.审计日志

    用途:保存用户业务行为相关的信息,主要是用来保留用户和业务的相关的记录。

    4.DevLog

    用途:是一个辅助工具类,只用于开发阶段调试程序使用,它替代System.out.println语句。在生产环境应该通过配置禁止该日志。

    DevLog的日志消息按重要性分为trace, debug, info, warn, error, fatal六个级别(由低到高),通过配置文件可以设定打印某个级别(以上)的消息。

    在生产环境,可以通过配置文件禁用日志功能。

    7、异常处理:

    异常处理原则

    异常处理要解决的问题有两个:

    1.要捕获哪些异常,即哪些代码要包含在try{}代码块里面?

    2.捕获到了异常之后怎么办,即在catch{}代码块里面要做什么?



  • 相关阅读:
    Linux下查看某个命令的参数
    Vue
    SpringBoot vue
    Axios 中文说明
    一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot
    微信公众号 文章的爬虫系统
    为RecyclerView添加item的点击事件
    Android NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件
    今日头条 --新闻阅读器
    int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null.....
  • 原文地址:https://www.cnblogs.com/ZJOE80/p/12967185.html
Copyright © 2020-2023  润新知