您的位置:首页 > 其它

探讨一种基于存储过程的web service模型

2013-05-01 20:16 197 查看
本小菜初来cnblogs,看园里各位大神写的博客心向往之,于是开了写博客的权限。想着得乘热打铁写点什么才能止住我三分钟热度的一贯心态,于是有了这篇博文。

想法的来源是实际工作中,我们部门的做法是将大多数业务逻辑都做在存储过程里面,服务器端仅仅做一些登录验证、权限校验的零碎逻辑。于是我想,能不能以后工作都不用涉及到服务器端代码的编写,新增或修改功能仅仅只变动存储过程就能实现了?

我设想的结构是这样的(如下图)。



Web Service负责接收请求(来自客户端或网页),将请求路由到正确的存储过程,校验身份是否合法,校验参数是否合法,然后执行存储过程,将存储过程的结果包装成json格式返回给请求者。整个流程如下:



首先,网页或者客户端发起一个http请求,post参数包括请求服务名称(service),动作名称(action),用户名(user),密码(pass)和业务参数。服务器根据服务名称和动作名称按一定规则路由到某一条存储过程,例如service:teacher,action:getScore,对应的存储过程是teacher_getscore。服务器根据用户名密码验证用户是否有操作该存储过程的权限,此处为实现RESTful,服务器不维护登录状态等信息,所以每一次请求都需要客户端传送用户名和密码。尔后验证post参数名称和参数类型是否与存储过程的输入参数一致。如果准备工作都没问题,服务器将同名POST参数赋值给存储过程,执行存储过程。存储过程的结果集自动打包成json格式发送到请求者。

整个执行过程期间如果出现错误会返回错误信息给请求者。

这个设计有如下好处:

修改方便:添加、修改、删除功能只需要增加前端页面和存储过程,不需要服务器端编译,也就不需要停机维护。

减小编写难度:sql语句和前端js相比服务器语言难度较小。

提高性能?:业务逻辑全在数据库执行,减小了数据库与服务器通讯的代价。

以上只是我的一个不成熟的想法,欢迎各位指导批评,或者有现成类似想法的开源实现?也请大家告知。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: