zoukankan      html  css  js  c++  java
  • 基于业务单元的开发与部署模式

    许多的人注重开发效率,但是老鸟们不仅关注开发效率,更关注维护与技术支持效率,因为他们深深知道,一个有生命力的产品,维护与技术支持成本占整个产品开发运维成本的70%以上,也就是说开发成本只占不到30%的成本。  对于一个传统的MIS系统来说,别的不说,光数据库表结构的维护脚本就够受的了,设你的用户有几十家,或上百家,他们使用的版本可能是1.0到m.n中间的任何一个版本,设总共有x个版本。 
    这个时候一般有两种升级方法,一种是每做一个版本,就编写从前面任意一个版本到当前版本的升级脚本,这样脚本就有x套脚本,还要进行测试,如果这个时候还要跨数据库,比如:mysql,oracle,ms sql,informix,sybase,...,开发人员和测试人员无法承受之重,所以,按这种方法,工作量是越来越大,包袱越来越重。 
    那就说第二种方法,就是每次只做从上一个版本到当前版本的升级脚本。这种情况下,开发成本,测试成本可以相对得到较好的控制,但是升级的时候,就很麻烦了,需要识别当前用户的是哪个版本,然后再一个一个版本升上来,如果有自动化升级工具还好,如果没有的话,现场支持人员估计够受的,中间只出出现一点问题,可能就不知道后续应该如何处理了。 
    上面只说了数据库脚本,那么再说说程序,一般来说有个主线,还会有许多分支,根本不同用户购买的License不同,可能集成的内容也不一定相同,如果再有一些客户化开发,这里带来的问题,比数据脚本带来的问题还复杂。 
    曾经看到过某一团队,开发了一个系统,全在一个war工程中,结果就是开发效率低下,测试调试困难,没有人对整个系统全部熟悉。所以最后开发维护都无法维系,后续扩展无法继续,等待的结果就是一个,什么时候没有人能坚持的时候,它就可以死掉了。 
    所以,Tiny框架在设计之初,就在深入的思考这个问题。为此提出了业务单元的概念,就是把一个相对独立的模块合并为一个业务单元,一个业务单元包含了所以服务及界面展现以及数据初始化,数据库结构的各种资源及程序文件。 
    当然,业务单元也可以依赖其它的业务单元,如此就可以构建更大的系统及平台。在程序运行时,框架会读取BU中的数据库定义,初始化数据,等等,然后进行处理,保证不需要人工干预,就可以正确的运行。 
    这个时候,就实就引入了一个相当严重的问题,就是这些文件包含js,css,class,各种配置文件等等都放在java包,程序是怎么访问到它们的呢??为此我们做深入的扩展,使得各种资源都可以分散到jar包文件中,由此才得以实现模块化的需求。实际上模块化的想法很早就有,但是一直没有落地,就是因为资源文件方面的问题无法解决。 
    因此,解决了数据库初始化,菜单初始化,程序分解与集成等各种问题,程序员们要做的事情就是:我只要保证自己运行是正确的,整个系统就是运行正确的。不会因为是开发期、维护期,版本数多少影响到工作量。

  • 相关阅读:
    Oracle基础知识整理
    linux下yum安装redis以及使用
    mybatis 学习四 源码分析 mybatis如何执行的一条sql
    mybatis 学习三 mapper xml 配置信息
    mybatis 学习二 conf xml 配置信息
    mybatis 学习一 总体概述
    oracle sql 语句 示例
    jdbc 新认识
    eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
    一些常用算法(持续更新)
  • 原文地址:https://www.cnblogs.com/j2eetop/p/4610487.html
Copyright © 2011-2022 走看看