软考系统架构师论文-论软件三层结构的设计

论软件三层结构的设计

摘要

  • 随着中间件和web技术的发展,三层或多层分布式应用该体系越来越流行,在这种体系结构中,
    将应用功能分成表示层,功能层和数据层三部分
  • 本人在去年参加了一个备件流程管理项目的开发,在此项目担任需求分析和结构设计等工作
    结合需求分析结构和该单位的时机情况,在该项目中我们采用cs/s额b/s的混合模式,客户端使用的是DELPHI和FrontPage进行开发,
    中间件我们采用的是COM+,使用delphi进行开发,后台使用sqlserver数据库,本文详细面试三层结构的设计过程,重点讨论中间件的设计过程和在设计实施阶段
    中遇到的一些问题和解决方法,文章最后说明采用三层结构带来的效果,以及可以改进的地方

正文

  • 2003年8月,我参加了某钢铁公司备件采购项目,主要负责该项目的需求分析和结构设计等工作,
    该钢铁公司原先的备件采购全部是人工完成的,手续复杂,办事效率低下,更中澳的是无法提供及时有效的
    信息给企业领导参考,该公司一方面需要通过此项母来缩短采购时间,提高办事效率,另一方面该公司已经建成能比较完善
    的局域网,需要在内部网上公开采购结构,并作出统计分析,公全公司员工和领导查询参考,改项目涉及
    部门主要包括该集团公司下的仓储公司,供应公司,招标公司,劳企部
  • 根据我们做出的需求分析和各种体系结构的优缺点,我觉得行使用c/s和b/s混合的体系结构来开发
    对于仓库公司等部门的需求,需要对数据进行更新处理,采用c/s结构可以更快更好的开发且数据处理数到更快,可以更好的满足要求
    ,对于订到和员工的查询需求,我们采用b/s的模式,采用这样的结构可以更高的满足用户需求
    且容易开发和维护,由于都是在windows平台上使用,因此在开发工具上的选择上,我们使用delphi开开发仓储公司等部门的客户端和中间件,
    使用frontPage来开发网页,连接在其内部网上提供查询服务,中间件我们采用的是com+进行逻辑处理
    数据层使用sql server
  • 以下详细介绍三层结构的功能分配和物理分布,描述三层结构设计的过程,讨论再说设计实施过程中碰到的一些问题以及解决方法
    文章最后说明采用三层结构带来的效果和可以改进的地方
  • 对于客户端,b/s结构仅仅提供查询功能,使用internet Explorer,各个子公司,二级部门可以通过内部往来使用,c/s结构提供日常操作和管理界面
    承担整个系统的数据录入和数据维护工作,使用delphi开发,他是系统数据的入库,使用频繁,暗转在仓储公司,供应公司等单位
    中间件和数据库以及web服务器都放在及软公司的计算机中心,便于维护管理,中间件负责根据客户端要求从数据库中取得数据,并在进行处理后提交到客户端就显示.
    后台使用sql server数据库,数据集中在数据库服务器进行管理,方便数据管理和分析,保证数据安全
  • 对于c/s和b/s结构,我们分别使用不同的工具来开发客户端,c/s结构的客户端我们使用的是delphi来开发
    对于b/s的客户端我们使用的是开发工具:drontpage,采用vbscript脚本语言来开发,客户端只用来显示结果,
    所有的逻辑处理我们全部防砸中间件中,唉客户端只需要引用中间件提供的结构即可,这样一个方面是的逻辑处理集中,便于维护
    另一个方面只向客户端提供处理后的数据,可以减少网络流量,加快放映速度
  • 对于中间件的设计师我们工作的重点,miceosoft的mts/com+不但能稳定的执行应用系统的企业对象
    以服务客户端的请求,更能过提供在分布式环境和异质数据库之间保护数据的事务管理能力
    折让分布式应用系统内能够稳定,可靠的在赋值的换交给你中正确的执行,在加上mts/con+能够有效利用各个环境资源,增加中介软件的执行效率,隐藏使用mts/com+作为中介软件的应用系统能够提供合理的执行效率
  • 通过考虑,我们决定用com+来作为中间件开发,如何设计出合理的中间件关系到项目的成败
    根据项目的特点,我决定更加不同不同部门以及各个部门的需求来开发com+组件因为各个部门
    有不同的数据表,中间件主要处理的每个部门各自数据处理和内部网上的查询以及统计分析处理,所以为每个部门设计了数个com+组件,分别用来
    处理数据维护,查询操作和统计分析工作,delphi通过了mts想到可以帮助程序员开发com+应用系统,程序要可以直接在com+数据模块中
    放入adoexpress组件来存储数据库,提高程序员的工作效率
  • 但是在开发过程中也数显了不少问题,比如在仓储公司维护更新工作的设计中,使用到多个数据表,有些程序样使用mts/com+组件,然后再mts/com+数据模块加入
    tadoconnection了解数据库,在分别使用tadoquery/tadotables和tdatasetproveder组件连接到这些数据表
  • 从功能上没有什么问题,但是我发现这样设计存在一些问题,最大的问题就是执行效率的问题,这可以才能够数个不同的角度来看,首先程序员吧所有的数据存取组件放在mts/com+数据模块中,因此当客户端建立这
    mtscom+数据模块是需要花费许多的激活时间,第二个问题是如果客户端只需要使用其中一个数据表的数据
    那么客户端仍然需要花费多余的时间来建立不相关的对象,对于mts/com+提供数据库连接pooling的功能,
    因此最好是把每一个tadoconnection的连接放在不同的mts/com+数据模块中,因为这些数据表都位于一个相同是数据库中
  • 为了解决这些问题,我冲洗设计了这个架构,为了充分利用mts/com+的数据连接pooling功能,并且避免客户端家里不必要的对象
    我使用多个独立的mts/com+数据模块,其中分别翻入tadoconnection,tadoquery和tdatasetprovdier以连接到不同的数据表,这样的设计虽然比直接使用单一的mus/com+
    来的麻烦,但是无论在执行效率,系统的延展性以及资源的共享性上逗比单一的
    mts/com+数据模块好多的
  • 为了更好的设计开发中间件,我怼使用com+做中间件来开发应用系统需要注意的一些问题做了总结
    • 1:对于客户端而言,应该尽早取得需要使用的mts/com+对象,并且在最后使用完毕之后在释放取得的对象
    • 2:避免激活不必要的事务context,对于mts/com+对象而言,应该让事务管理越晚发生越好,并且在执行完必要的工作之后like调用setcomplete和setabort
      和enablecommit/disablecommit方法释放占据的资源,尽量把相关的mts.com+对象放在同一套组件中,尽量减少不同组件之间对象的调用
    • 3:在mts中使用sta线程模型的对象,在com+中使用meutral/rental线程模型的对象
    • 4:尽量利用mts/com+对于数据库的pooling,而不要使用主从架构的方式来利用数据库pooling,
  • 通过使用这些方法在开发过程中我们打打改进了系统的执行效率
  • 数据层使用一塔数据库服务器,通过企业局域,分布在仓库公司等单位的工作站利用客户端软件进行数据录入和维护工作,在各个耳机分厂,单位的客户端都可以通过内部网进行查询浏览
    我们采用的是sql server数据库,功能强大,使用方便,完全满足系统的要求
  • 最后通过项目组成员的努力,我们按期完成了任务,采用这样的体系结构,完全满足要求,二饼安全可靠,容易维护,扩展方便,结构模块话,易操作
    经过用户一段时间的使用,基本没有什么问题,再后期维护中,我们对中间件和客户端分别作了少许修改,单二者之间没有相互一姑娘,这些充分体现出了多层结构的优越性,
    当然在其中也UC你在一些问题,比如在系统的执行效率和延展性上,给人的感觉是多层应用系统的执行速度有点慢,还有组件的设计上还存在写问题,这些问题在了解con+设计方法和系统需求后次啊能更好的解决

你可能感兴趣的:(软考,论软件三层结构的设计,论文,软考,系统架构师,基础)