三层架构-服务器端:通用WebService数据交互中间件概述

 

网上搜索Delphi三层架构的服务器端开发,大部分的博文都详细阐述了如何使用DataSnap、Socket或者Dcom技术来时间与客户端的信息交互,大部分需要安装插件……虽然这种种方式能实现三层通讯,但是在跨语言通信方面似乎都没有招了。于是我们马上想到一个平台独立、低耦合的技术——WebService,畅想一下,如果我们的服务器端中间件能够支持Java、C#、Delphi等多种开发语言的客户端,那将是多么完美,多强大!

但很可惜,说到WebService中间件,很多人都会说:用Java开发中间件就可以啦,线程池、连接池都已经不需要关心啦!那么Delphi无法实现WebService中间件吗?答案当然是否定的,而且我们还将实现对多数据库的(Oracle、SQL Service、MySQL等等)对接!接下来我们将一步步揭开Delphi中实现WebService中间件的那些事。

 

一、创建一个WebService服务程序
1、与创建传统WebService服务程序一样,通过File----->New----->Other------>WebServices----->Soap Server Application。跟普通的WebService服务程序一样,接下来就可以考虑实现数据库连接、接口函数了。
2、在WebService服务接口中, 新增对外交互的接口函数。以我们的中间件为例,一般处理的都是数据库中的业务数据,那我们就需要处理好数据库连接、提供基本的增删改查接口。既然使用的是Webservice接口,那么接口参数类型可以为WideString或者OleVariant等Delphi简单类型,使其他语言也能正常调用。

 

那么此时我们需要考虑,客户端(以FDQuery为例)数据又是如何通过接口进行传递呢?这里就可以使用数据流来实现了,具体的实现逻辑并不复杂,只要将数据采用流方式的OleVariant类型进行传输和读取转换即可。但是因为是服务端,需要严谨的处理,各家的实现方法就不同了。至于Socket通信和DataSnap等通信模式下的数据处理效率,数据流方式显然毫不逊色,甚至更为优秀。云露中间件不仅能完美实现Dataset数据流方式的交互,还对服务器端的功能做了严谨的封装,简单的增删改查只需要三个接口函数就可以实现,大大减少了客户端调用的工作量和复杂程度,客户端请求了9万条数据,只需10秒即可返回。

 

3、服务端数据库连接能力的管理和强化。这里就不得不提到Java里引以为傲的连接池技术。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。”

 

 在Delphi中同样能实现连接池技术,只不过相对Java现有的成果而言,封装一个稍显复杂。基本的原理就是使用线程处理数据库连接对象,当有新的连接请求时先检查是否有空闲的数据库连接对象,如果有则用,没有则创建;定时检查数据库连接对象的空闲状态,超过指定时间空闲则释放等等。这部分是一个中间件的核心功能之一,因为服务器端最重要的数据处理能力,一个优秀的连接池技术的好处不言而喻。

总结:一个优秀的中间件,不仅仅需要满足基本的数据处理功能,更需要优化数据处理效率、具备应对各种复杂情况的能力,比如数据库超时、断网重连等情况下的处理。中间件之所以成为一门“高深”的学问,确实是因为其对技术能力要求很高,稍处理不好就容易在大数据交互过程中使得客户端不稳定而难以使用。使用WebService交互方式只需要在服务器中运行自身,轻部署,数据流传递方式将使得数据处理速度更快,再加上连接池技术对数据库连接的管理,简直完美!

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值