• 架构师速成6.11-开发框架-后端封装思路 分类: 架构师速成 2015-07-31 07:46 91人阅读 评论(0) 收藏


    要做一个好的开发框架并不是直接找一个现成的Spring就ok了,这个对于一般新手来说学习难度还是有点高。另外Spring还是一个通用性的框架,我们需要针对业务的定制化封装。我以java为例讲解一下后端需要做什么:

    1. 确定层数结构
      1. parent
        1. common
        2. test
        3. dao
        4. service-common
        5. service
        6. web-common
        7. web
    2. parent统一引入的类库及版本,通过maven方式进行类库管理,在parent中定义所有引入的类库及版本,不需要其他人私自引入类库。java类库的膨胀及冲突控制的确是一项很头疼的事情,一不小心最终的项目就达到几百兆,每次编译发布就需要很长时间。我在这里强烈推荐一下一个国内开源框架nutz,无引入其他任何jar包,提供了spring和hibernate的最常用功能,只有1M。我们之前使用Spring,后来换成nutz,而且严格限制引入的jar包后,web最终打完包,才10M左右。
    3. common工具类确定及封装,不要引入过多的包,只引入最基础而且是最必须的工具类。比较极端的情况下,自己写。
      1. StringUtils,DateUtils等,这个引入common-lang
      2. 语法糖,比如 map,list等的泛型构造,isEmpty(Object ) length(Object)等
      3. JodaTime,谁用谁知道
      4. guava,缓存,限制流量
      5. log,java的日志是一大堆,建议slf4j+logback,其他的都桥接到这上面。
      6. Exception,定义异常接口 ISystemException,IBusinessException,IAuthException,及几个实现类,这个会单独起一个异常章节进行讲解。
      7. Ioc,这个一般你使用的框架已经提供了。
      8. Aop,这个一般你使用的框架已经提供了。
    4. test 单元测试,集成测试的辅助类封装,让写单元测试跟玩一样,否则没有人愿意写的。
      1. IOC容器,Spring上下文及测试类封装
      2. 通用的Mock类
    5. dao 对于db或者hbase,mongodb等一系列存储的封装,当然如果有必要还可以拆分。我针对db先说一下,其他的先不说:
      1. 全局唯一主键生成算法
      2. 主备库,多数据源
      3. 统一的IdEntity,IAuthorEntity(带修改人,修改时间记录的),所有数据库实体都继承自他2个
      4. 针对统一类的泛型增删改查封装
      5. 扩展自定义的标注,比如@Column @MyId等等用于实现自己特殊的逻辑
      6. 数据级别的权限控制
      7. 数据库事务,这个一般你使用的框架已经提供了。
    6. service-common,封装业务逻辑所需要的工具类或基础类,如果没有多少,可以和service合并。
    7. service真正的业务逻辑,根据不同的业务及规模可以进一步拆分service-a,service-b
    8. web-common,封装于界面及mvc相关,filter等等的逻辑
      1. mvc,url-mapping 这个一般框架已经提供,比如spring,nutz都会有。
      2. 异常处理,后面会单独写
      3. 单点登录filter,其他统一的filter
      4. 访问权限控制
      5. 不同后缀的处理,json,html,json及jsonp的封装
      6. 动静分离,静态文件使用nginx进行加载,设置缓存时间等等
      7. 界面统一的变量封装,比如根路径,user
      8. 用户获取

    做完这些,后端的基本封装才算稍微有一个样子。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    effective C++ 条款 18:让接口容易被正确使用,不易被误用
    effective C++ 条款 24:若所有参数皆需类型转换,请为此采用nonmember函数
    PHP 归并排序
    IOS+H5页面自定义按钮无效
    vscode安装
    php 单例模式
    Warning: popen() has been disabled for security reasons in OS/Guess.php on line 241
    php 魔术方法
    php快速排序
    mysql 查询字段为空显示默认值
  • 原文地址:https://www.cnblogs.com/top100j/p/4695375.html
Copyright © 2020-2023  润新知