找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 4128|回复: 15

(转贴)三层(多层)结构医院信息系统的初步探讨

[复制链接]
发表于 2002-9-26 15:20:42 | 显示全部楼层 |阅读模式
三层(多层)结构医院信息系统的初步探讨
周公石
(广东省医学信息重点实验室)

[摘要] 本文从三层结构医院信息系统的技术特征,探讨代码共享和软件标准化在研制三层结构的医院信息系统的重要作用;三层结构的优越性和所遇到的新问题,及如何使用工具开发三层结构的医院信息系统。
    [关键词]医院信息系统 三层结构 标准化  
  在两层C/S结构下,客户端发送SQL或HTTP等命令,并通过网络传送给中央服务器,由DBMS等资源管理器接收这些请求,取得相应的数据或进行相应的处理后,再将查询结果或处理结果返回客户端。然而,这种结构存在一些缺陷,例如,如果连接的客户端数目激增,服务器的性能将会因为无法进行负载均衡而大大下降;每一次应用需求的变化,都需要对客户端和服务器端的应用程序进行修改,给应用的维护和升级造成极大的不便;此外,大量数据在网络上传输,将使系统的运行费用增高。
  如何才能更好地解决这些问题?面对医院信息系统大规模的任务应用,如要进行有效的分布式处理,就必须从客户/数据库的两层方案转变到客户层 / 应用服务器层/ 数据库的三层结构。
1、三层结构
  1996年10月1日,Oracle公司向业界发表了网络计算体系结构(NCA)。它是客户层/应用服务器层/数据库层的三层结构模式。虽然,该模式最初侧重于Internet/Intranet应用,但三层结构的思想已广泛应用于软件开发的各个方面。
  在三层结构中,客户端与数据库或其他资源管理器之间加进了一个中间层,即应用服务(Application Service)层。相对于以数据库为中心的两层客户层/数据库层服务器模型,三层结构模型(客户层/应用服务器层/数据库层)将应用的业务逻辑和用户界面分离,从而使应用开发人员能专注于应用核心业务逻辑的分析、规划和设计,快速建立应用系统的核心业务功能原型。此外,界面表示和业务逻辑的明确划分,也使用户能更有效地管理应用系统。对具有成百上千个客户的两层结构系统来说,经常性的更新、升级系统是一项十分棘手的工作,尤其是当系统已经投入实际运行后更是如此。三层模型将用户交互的表示部分与内部的业务逻辑分开,这样,对业务逻辑的一些修改甚至数据库模式的改动通常都不会要求客户端的改动。而且,将核心业务逻辑组件和表示逻辑及数据层划分开,可以在服务级别上非常有效地管理应用的运行。这种模式可以动态地管理消息流程和服务请求、快速启动和停止服务器、根据变化的负荷复制服务器、动态地广播、撤消服务器中的服务以及将服务从一个服务器转移到另一个服务器等等。这些对中间层应用服务级别上的管理大大增加了分布式应用的伸缩性和灵活性。
  在NCA中,客户机运行浏览器软件,浏览器使用HTTP协议向应用服务器层发送请求,应用服务器收到客户的请求后,一方面,从数据库服务器中提取数据,另一方面,响应客户请求。
  浏览器端所有计算已移到应用服务器中,换句话说,我们已将原来的"胖客户(端)"进行了减肥,并将企业逻辑(Business logic)集中放在应用服务器上,故此应用服务器层也称为中间业务逻辑层。这就是三层结构的核心思想。
  如今,对于非Internet/Intranet应用,三层结构的思想也被广泛采用。虽然,这样的客户端比浏览器"胖"些,但将企业逻辑独立出来后,同样受益于三层结构给我们带来的好处。
  通常,我们称客户/服务器模式为两层(2-tier)结构,而将客户/应用/数据库模式称为三层(3-tier)结构,后者也常称为多层结构或N层结构。它是计算机系统发展的产物,这种结构有利于软件开发和维护。支持三层结构的软件必须做到代码共享和软件标准化。
  (1)代码共享
   应用系统除可用性(availability)以外,可维护性是成功的关键,代码共享是作为可维护性中的一项关键技术。具体来说:一段代码不会在多处维护,从而方便管理;一个系统在不同编程语言之间能共享代码。
  从技术上看,代码共享分源代码共享和二进制代码共享两种。 源代码共享以OO(面向对象)技术为代表,主要体现在OO技术的可继承性上,二进制代码共享以DLL(动态连接库)技术为代表,它使得两个模块在不需要源程序的情况下,共享二进制代码。
二  进制代码共享比源代码共享更易于管理,并消除了编程语言之间的差异。二进制代码共享依赖于成功的先决条件是标准化工作。
  (2)软件标准化 Microsoft、Oracle等公司为我们制定了软件标准。Microsft公司制定COM(元件对象模型)技术软件标准,为实现二进制代码共享奠定了基础。在COM基础上,OLE、ActiveX等技术迅猛发展,几乎成为任何软件产品的组成部分。任何一个应用系统如果没有利用COM技术,那就意味落伍了。
  但在Oracle和一些UNIX系统公司的共同推动下,与其他一些联盟(OMO),共同形成与COM技术相竞争的标准CORBA(公共对象请求代理结构)。CORBA与COM所要解决的问题是一样的,是并存的两个标准。不过我们通过第三方软件商提供了COM或ORBA之间的网关(gateway),可以顺利地将一个标准转化成另一个标准。
  
2、三层(多层)应用程序的优越性和新问题
  两层应用程序就是早期的C/S结构应用程序模型,它主要由Client端和数据库Server端组成。它的伸缩性不够好,开发人员写出的程序在客户端运行,占用了大量的系统资源和网络资源。随着应用程序业务逻辑及复杂性的不断增大,其开发工作的难度也越来越高。
  目前,多层应用程序已成为主流。它能够满足应用程序的两种需求,即可伸缩性(或可扩展性)和Internet/Intranet应用。三层(多层)结构的应用程序把业务逻辑独立出来,组成一层或多层,这样就形成了客户端的客户层、中间业务逻辑层(可细化为多层)和后端数据库服务器层。这样做的好处是:
  (1) 简化客户端人机界面程序开发工作,它不必关心业务逻辑是如何访问数据库的,只需 把精力集中在人机界面上即可。
   (2) 中间业务逻辑层包含了大量的供客户端程序调用的业务逻辑规则,以帮助其完成业务 操作。它的优点就在于它所具有的可伸缩性,适应医疗卫生改革,医院管理模式、规 章制度正处于不断变革的需要,可使医院信息系统随具体业务的变化而改变,但在客 户层和数据服务层所做的改动较小,适合于快速开发。
   (3) 数据服务层主要提供对数据库进行各种操作的方法。它主要由中间业务逻辑层来调用 并完成业务逻辑,当数据库的结构确定后,对于它的改动也就比较小了。
  (4)系统的安全性得以提高。它可以对每个业务功能组件进行授权,限制了非法访问。
  (5)便于进行事务管理(可使用Microsoft Transaction Server MTS或其他类似的产品来 实现)。
二层应用的结构如图1所示。 三层应用结构如图2所示。
   从图2可以看出,三层结构应用软件的特点是用户界面与应用逻辑位于不同的平台上,并且应用逻辑被所有用户共享。但三层结构的层次划分并不是物理上的划分,而是结构逻辑上的划分。比如,客户端程序要调用的某专科门诊计价收费业务功能组件,要求响应速度很快,并且体积较小,那么就可以把这个业务组件配置在客户端,以DLL的形式存在;又如,客户要访问的医院统计分析辅助决策业务组件包含大量对数据库的操作(类似于数据库服务器中的存储过程所做的工作),那么可以把它配置在数据库服务器上,以减少网络负载,提高运算速度;如果某些业务组件(如:内科楼五个区的病区管理子系统)中包装的业务逻辑,大多数客户机程序都需要访问它,那么就可以单独构建一台独立的内科楼服务器,将这些组件放在其中,供内科各区客户机程序访问,而不必在每台客户机上安装。
  三层结构的优点是显而易见的,然而要实现它就需要使用当前流行的组件技术。基于Windows平台的程序开发,就会用到Microsoft的DCOM结构模型和ActiveX组件技术。如果客户要做跨平台的开发,如包括Unix和Windows两种平台的程序开发,就需要使用CORBA结构模型。
  但是,任何事务都有两面性,对于三层应用程序也是一样。在开发三层应用程序时会遇到一些不可避免的困难,它们是:
   (1) 延长了开发周期。据我们的经验,花在底部组件上的开发时间要占整个项目开发时 间的三分之一以上,开发三层应用程序所做的工作要比开发二层应用程序多一些。
   (2) 增加了开发任务的复杂性。要求开发人员对操作系统和网络有更深层次的了解,除要开发应用程序的核心业务之外,还应考虑应用程序的性能、安全性、伸缩性、可 靠性和可恢复能力。
   (3) 提高了对开发人员的素质要求。三层应用程序的开发需要开发人员提高其技术水平, 其中包括操作系统、网络、更先进的开发技术、更先进的开发工具,以及许多非计 算机技术(如:医院管理业务)。以上这些都需要长时间的学习和经验积累。
   (4) 增加了对应用程序的维护工作量。由于应用系统配置、网络结构和业务规则的不断 变化,需要开发小组的全体成员来共同维护,如修改业务组件、数据库组件等,以 适应以上这些变化。
   (5) 增加了实现共享的难度。开发一个成功的多层应用程序,关键在于程序系统结构的 设计(即根据业务规则合理划分组件),同时还要充分考虑在系统内不同项目中共享 代码。 多层应用程序有上述缺点,但它代表了应用的需要,是技术进步的结果,是符合信息时代潮流。
发表于 2002-10-16 15:48:28 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

三层架构好事好,但对中国医院来说,两层开始,现在的医学信息系统不光是个MIS,关键在多系统的接口或是中间件,可是现在标准都不同意!也不知道怎么办!
发表于 2002-10-16 16:34:57 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

三层或多层结构是构建医院信息系统特别是临床信息系统的基础,即使采用了这个结构,没有一个好的系统设计也是不行的。
发表于 2002-10-17 07:24:40 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

下面引用由jamsbong2002/10/16 03:48pm 发表的内容:
三层架构好事好,但对中国医院来说,两层开始,现在的医学信息系统不光是个MIS,关键在多系统的接口或是中间件,可是现在标准都不同意!也不知道怎么办!
我认识的一个医学信息所的主任告诉我说:一个标准好不好啊,我搞了这么都年的经验就是搞到一半人批评,一半人赞成就差不多可以成型了(大意如此)。
呵呵,所以这东西不管怎么样,只要有强力的推动力,总是会前进的。
发表于 2002-10-17 15:18:58 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

我认为完全基于B/S结构的系统以后发展前途应该更大.
发表于 2002-10-17 16:11:25 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

  这是发展的方向,我们近其也改为三层结构开发出来超声和内窥图像系统。
发表于 2002-10-17 20:13:54 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

下面引用由ztj78312002/10/17 03:18pm 发表的内容:
我认为完全基于B/S结构的系统以后发展前途应该更大.
请说说你的论据。。。呵呵
发表于 2002-10-29 12:32:36 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

能够具体说说原因吗?或者你的看法
发表于 2002-10-30 08:02:09 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

系统设计要从对应用的分析着手,将来的方向不一定是当前最好的方案。
应用不等于研究,应用必须实用、成熟、可靠。
发表于 2002-10-30 10:20:22 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

支持tianma的观点。
发表于 2002-10-30 13:36:19 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

我是深圳拓扑众邦的技术人员,各位上面的讨论都很有道理,我想说的是三层是我们需要追赶的国外的脚步,多层才是我们真正的追求目标,想想大家以后在家用IE就能进行挂号和诊疗等,是多么惬意的事情啊!
发表于 2002-10-30 15:21:58 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

网上就医当然好,但很难变成现实。
发表于 2002-10-30 21:19:29 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

blizzard1980 说 “三层是我们需要追赶的国外的脚步”,
  据我所知,国外同行业主流软件还不是三层结构,有的还是主机模式。他们对三层结构也还在研究中。
  我们需要追赶的国外的首先是标准、规范、运作模式等基础工作。
发表于 2002-10-30 22:54:33 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

我赞成tianma的观点,其实好的系统并不一定是技术上最领先的东西,而是最实用的东西,把合适的东西放到合适应用地方,取其长而避其短什么都是足够好的,就好像去争论C++和VB的优劣一样并没有太多的价值。什么东西都有所长有所短。盲目的在技术上追赶并不能够给自己带来实质性的提高。
发表于 2002-10-31 00:53:26 | 显示全部楼层

(转贴)三层(多层)结构医院信息系统的初步探讨

其实3层结构早就嚷嚷了好几年了,而各种各样的声音都是在强调从技术层面上的3层结构,这些讨论都是基于怎样提高数据利用效率和数据安全上来的,应该是最起码的讨论。这种近似邪乎的宣传真的又给用户的实际应用带来了什么呢?而真正的需求是什么呢?我想现在大家要考虑的更多的是在应用上的怎样分为三层、甚至是多层来进行构架设计,而不是在于技术底层的3层结构的讨论了,说实在的这些可行性和优缺点,早在若干年前就被证明了。现在的改进系统的方式不要再停留在这些对系统实际更进一步的提高的问题上面。是怎样的3层结构的技术基础上构架一个合理的适用的应用系统。
我可能还有一个偏激的说法,但这并不代表我否认他们做出的丰功伟绩。
是不是做技术的人们就只能把问题谈在或者停留在这个层面上呢!
他们总是不听取我们给他们的建议,而是要等到用户把他们臭骂一顿以后再进行修改。(希望不是大多数的人)
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表