病人回访系统中通讯方式的分析与选择
2017-07-29仇强王壮峰王丽胡庆耿伟
仇强 王壮峰 王丽 胡庆 耿伟
摘要:病人回访系统就是信息化在医疗卫生方面的发展的产物。该文具体讲述了在三层架构(即用户界面层、业务逻辑层以及数据访问层)的基础上对系统设计中通讯方式的分析与选择,包括背景、通讯方式的具体內容、通讯方式的比较以及通讯方式的选择。
关键词:三层架构;通讯方式;病人回访系统;通讯方式的比较;通讯方式的选择
1背景介绍
1.1病人回访制度
随着医疗卫生事业的发展,各国的医疗也在追求全面、高效率、高质量、人性化的服务.病人回访系统作为医疗卫生事业的进步和发展的产物,它将患者的满意度作为衡量医疗服务质量管理的金指标,在医院得到了广泛的应用。我国的病人回访系统的发展尚且处于初级阶段,目前全国大部分医院都是采用电话回访的方式对病人进行一系列的询问并且记录。
病人回访制度极大意义上促进了医疗卫生事业的发展。首先,医疗服务水平是医院在竞争中求发展的根本能力之一,对患者进行统一的电话回访,使之畅所欲言提高获得信息的真实性,为改进医院工作提供有力的证据”。其次,通过对出院病人进行回访,有助于医患关系的和谐发展;有助于增加医患之间的沟通与交流;有助于医生了解病人的病情,从而给予病人一系列的建议,促进患者的病情恢复;同时树立医院在病人心中的良好的形象。
1.2三层架构体系
三层体系结构即三层架构包括用户界面层、业务逻辑层以及数据访问层。第一层为用户服务层,用于提供一系列的请求以及访问;第二层为业务逻辑层,用于处理用户提出的请求并将之转换传输到第三层;第三层为数据访问层,负责对数据库进行一系列的操作以及对数据信息的存储。
本文主要介绍基于安卓的系统设计中,在三层架构的基础上对通讯方式的分析与选择,即当用户界面层与业务逻辑层、业务逻辑层和数据访问层以及数据访问层与数据库之间进行信息传递时需要的一种标准(即通讯方式)能够完成他们之间的通信,使系统能够正常的运行。
2通讯方式的内容
基于安卓的系统中可选的通讯方式有多种,本文采用三个最经典,如今应用最广范以及最合适的三种通讯方式即(XML、JSON以及JAVA中自带的对象序列化)进行比较分析,并选择最合适的通讯方式。
2.1XML
2.1.1XML简介
XML是一种可扩展的标记语言(Extensible markup Language),是一种平台无关的表示数据的方法”。XML是从1996年建立其雏形,1998年二月十日被发布为W3C的标准,前身为SGML,是依据HTML的发展经验改编而来。因此,XML拥有HTML的很多优点,并且在极大程度上消除了HTML的缺点。XML与HTML的最大的区别在于XML是用来传输和存储数据,而HTML则是用来显示数据。另外XML还拥有着类似JAVA的平台无关性的特点,即用XML创建的内容可以在任何平台上读取,其特点使之快速成为数据交换的唯一公共语言。
XML文档由文档类型定义(DTD)、可扩展样式表语言XSL和可扩展链接语言XLL三个要素组成。解析XML格式的数据的方式有很多种,DOM解析以及SAX解析是最常用的两种。其中,DOM解析方式的原理为为XML文档的已解析版本定义一组接口,解析器读人整个文档,然后构建一个树结构,代码就可以使用这个DOM接口操作这个树结构。SAX解析方式的原理为当解析器发现元素开始、元素结束、文本、文档的开始或者结束时,发送事件,程序员编写响应这些事件的代码,保存数据。
2.1.2XML的特点
(1)XML允许用户自定义标签,具有扩展功能,“扩展性”就成为XML的一个中心特性。由于HTML拥有固定的标签来显示数据,因此在可扩展性方面拥有很大的局限性。XML汲取了HTML的发展的经验,弥补了HTML在此方面的不足,允许用户定义数量不限的标记描述资料,使得用户使用时具有更大的灵活性。
(2)识别文档中的元素,使搜索具有智能性”。XML定义了各种标识用来描述信息中的所有的元素,不仅改变了HTML固化的标识集,而且改变了传统信息的构造方式,使得网络传输在信息化检索方面具有更加快捷的速度以及搜索内容更加的精确。
(3)内容与应用程序分开,具有良好的复用性。XML文档不涉及内容如何显示,只是简单地将文档内容解析成结构化的数据传送给应用程序,这也使得XML能够被不同的应用程序使用。
(4)有严格的语法要求,具有良好的结构性。XML的可扩展性允许用户可以自定义标识,但同样对语法有着严格的要求。
2.2JSON
2.2.1JSON简介
JSON(JAVAScript object notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析与生成。它是基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式存储以及表示数据,层次结构简洁清晰,同时也包含了C语言、c++等一系列语言的习惯,这些特性使得JSON成为理想的数据交换语言.
JSON可以将JAVAScript对象中的一组数据转换为字符串,然后在函数之间传递这个字符串,或者在异步应用程序中将这个字符串从客户端传送到服务器端,JAVAScript也可以轻松的解析字符串,除此之外,JSON能够表示复杂的结构。因此,JSON非常适合传输数据库的记录类型。解析json格式的数据也有多种,一般可以使用官方提供的JSONObject,也可以使用谷歌的开源库GSON,除此之外,一些第三方的开源库例如jaCkson、fastjson等也是不错的。
2.2.2 JSON的特点
(1)JSON的易用性强。即不用学习新的API,通过JAVAScript中的eva]()函数就可以解析JSON,獲得格式化的数据,同时还为数据前台的操作提供了便利。
(2)采用与编程无关陸,支持包括c语言、c#、java、java script以及PHP等多种服务器端语言,非常有利与服务器端的解析。
(3)因为JSON代码能够直接为服务器端代码使用,在极大程度上简化了服务器端以及客户端的代码的开发量,且完成任务不变,同时大大减小了维护难度。
(4)JSON的通用性强,可以在不同的移动设备中使用,例如iOS、windows phone等等。
(5)JSON的数据格式比较简单,有利于进行读写操作。同时,json的数据格式是压缩的,因此所占用的带宽相对较小。
2.3JAVA中的对象序列化
2.3.1对象序列化简介
序列化就是将对象的状态转换为可保存或者可传输的格式的过程,简单的说,序列化就是处理对象流的一种机制。但需要注意的是,对象序列化保存的是对象的状态,即它的成员变量。由此可见,对象序列化不会关注类中的静态变量。所谓的对象流就是将对象的内容进行流化.然后可以对流化后的内容进行修改,也可以在各个网络之间传输。序列化是为了解决在对对象流进行读写操作时可能引发的问题。
Java自带的对象序列化分为两个部分即序列化和反序列化,序列化是将数据分解成字节流以便于存储以及传输,反序列化则是将字节流重新转换为对象。对象序列化的最主要的功能就是在传递以及保存对象时,保持对象的完整性以及可传传递性。
2.3.2对象序列化的特点
(1)对象序列化的继承性:即如果某个类能过被序列化,那么其子类也可以被序列化,此为对象序列化的继承性。但被声明为static以及transient类型的成员的数据不可序列化。其中,static代表类的状态,transient代表类的临时数据。
(2)对象序列化的持久性:为了以后在某个时刻使用某个对象,希望把当前对象的状态保存下来,以便于以后重建,并且重建后对象的内容和当前的对象的内容一致。
(3)支持远程处理:可以将对象从一个应用程序域传输到另外一个应用程序域中。
(4)对象序列化允许重构:对象序列化允许有一定数量的类变种,甚至重构之后也是如此,objectinputstream依然可以很好的将其读出来。
(5)对象序列化的不安全性:java序列化是将对象序列化为二进制格式完全编写在文档中,并且是完全可逆的,这对于安全陸方面有着不良影响。
(6)对象序列化允许将代理放在流中:很多情况下,类中包含一个核心的数据元素,可以通过它派生或者找到列种的其他字段。在此情况下,没有必要序列化整个对象。可以将字段标记为transient,但是每当有方法访问一个字段时,类仍然必须显式地产生代码来检查它是否被初始化。
3通讯方式的比较
(1)可读性方面:JSON是建议的语法,XML是规范的标签形式,JSON和XML的可读性不分上下,但是都优于java对象序列化的二进制格式;
(2)可扩展性方面:XML有很好的扩展性,JSON同样也有,而且XML能扩展的JSON都能扩展;
(3)编码难度方面:XML高于JSON以及java对象序列化。XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有JSON.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码。但XML就相对困难得多。
(4)解码难度方面:XML的解析需要考虑子节点以及父节点,而JSON的解析难度几乎可以忽略。
(5)流行度方面:虽然现在XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML逊色于JSON;java序列化与java相比,java序列化不支持其他语言,导致其他语言无法反序列化,严重阻碍了他的应用,但JSON却能跨语言使用,高下立判。
(6)解析手段方面:JSON和XML同样拥有丰富的解析手段。
(7)数据体积方面:JSON的数据的体积小,传递的速度更快些;XML文件格式庞大,格式繁杂;java使用时简单,但序列化后的码流比较大,远大于二进制编码。
(8)传输速度方面:JSON的速度要远远快于XML,与java序列化不分上下。
(9)性能方面:JSON是一种通用的数据传输格式,各种语言和程序之间通用。而序列化只能java自己用。
4通讯方式的选择
一方面,基于病人回访系统的实例应用,如果采用iava的对象序列化的通讯方式,由于java的对象序列化的不可跨语言性,要求客户端必须是java平台,极大限制了系统的应用;xml的解析方式又过于复杂,而且本文介绍的病人回访系统前期是用在安卓的平臺上,到系统成熟时会逐渐向其他平台发展,例如iOS平台等等,从此方面来比较的话,JSON的跨平台性显然更适合。
相对于XML而言,JSON的可扩展性高、速度远远快于XML、体积小、难度低以及具有较高的灵活性,除此之外JSON同样适合iphone以及ipad等各种移动设备;相对于JAVA再带的序列化而言,JSON与语言无关、可跨语言使用、扩展性强、速度亦不慢。因此,相对于XML以及java序列化而言,JSON更适合在基于安卓的系统中作为通讯方式。