PB开发webservice三层架构的感想

1.为什么要使用三层应用?
客户的应用要求在广域网上运行,数据库不在广域网上暴露,有两个途径实现:1.建议客户购买远程桌面管理软件,CS程序无需做任何更改,即可实现广域网应用;2.使用三层架构,客户端与中间服务器打交道,中间服务器与数据库打交道。
第一种方式,这个远程桌面管理软件也不算贵也不算便宜,关键是它大部分是卖站点数的,小型企业一般不愿意额外开支这部分费用。那么,就用PB自身来实现三层架构吧。

2.选webform,还是webservice?
webform的本质是把pb代码生成html代码,再发布到IIS服务器上。好处是:很容易转换;坏处是:想美化一下界面,需要更多的网页知识。我试玩了几下,放弃了这个。
webservice才是PB三层应用的核心。它的最大好处是:通过soap协议,将数据窗口对象进行传送。PB开发员需要做的只是转换一下开发思想,就可以使用纯PB script做出非常好的三层应用。

3.PB开发webservice的一些准备
(1)网络连接管理的问题:CS下,连接是不会断开的,有利于身份认证完成后就无需再关心这个事件。而BS时,连接是断开的。那么,身份认证的问题需要贯穿整个开发。
   我的做法:登录后,确认身份成功,分配一个guid值做为令牌,当客户端需要做业务处理时,参数里都带着这个令牌,解决了连接的问题。
(2)数据连接管理的问题:CS下,数据库连接是不会中断的。而在BS时,网络连接是无状态的,所以,数据库连接也是断开的。
   我的做法:在服务器端,每一个业务逻辑,都重新connect一次,逻辑完成后,disconnect掉。查过相关贴子,据说这样使用,IIS会自动管理数据库连接。因为没有相关工具的使用经验,无从查究。
(3)多表提交的问题:以往的CS程序下,多表提交是在客户端通过设置autocommit=false,手动来控制多表提交,如果有一个事情失败,就整个事务回滚。
   我的做法:做一个多表提交的函数,一般是主子表结构,那么传入参数里就有两个blob,分别是主子表的dw语法,然后在服务端做多表提交控制
(4)数据存取效率问题:目前单机运行,还是很满意的。除了第一次使用时慢一点。以后如果有效率问题出现,先考虑使用压缩算法,把dw语法进行压缩,以减少对网络的依赖
(5)可以接受多少个客户端?这个问题目前未知。不过一般情况,我想三五百个客户端应该是没有太大压力的,如果客户端再多,可以建议客户购买更专业的可以放置pb对象的中间层服务器,比如sybase自己的easerver

4.如何开发第一个webservice
   其实,用pb开发webservice是很简单的事情。第一个大前提就是:环境一定要做好。在安装pb时,会有提示说用到什么功能时需要什么样的环境。要开发webservice,就得安装.net framework sdk 2.0。要注意,是sdk,不是普通的那个。
   其次,建一个webservice项目,然后建一些不可视的对象,将各种业务函数封装在这些对象里。网上所能找到的资料,已经足够你用来学习了。之所以资料不多,是因为它真的不复杂。建议去台湾的一个资讯网站去下载资料,我看好些资料是从它那里出来的http://www.mpinfo.com.tw/
   照着这些资料,发布你的第一个webservice吧。
   服务端的对象是,是不存在可视对象的,象窗口啦,数据窗口啦。数据窗口不在服务端,那么,如何使用数据窗口技术呢?不要忘了,数据窗口的不可视版本:datastore。在服务端的脚本里,定义一个datastore,然后与数据库连接,然后检索,然后使用getfullstate()得到blob,把blob对象通过soap传给客户端,客户端的dw.setfullstate()一下,哈哈,怎么样,看到通过webservice生成数据了吧。

5.客户端如何使用webservice
   调用webservice时,PB是通过一个project来生成服务端对象的代理。这个代理的本质其实就是一些远程函数的定义。

6.常用的几个函数
  不用说,首当其冲的就是getfullstate(),setfullstate()这一对宝贝函数。它是整个数据对象的语法包括数据,状态,都集中成一个blob中。
   其次,dw.create()。这个函数也很有用。你可以从服务端取得dw object的syntax,然后在客户端接收这个syntax,再create()一下,哈哈,数据窗口就出现栏位了,而且是在客户端代码里没有dw object的前提下。

总结:pb的webservice大大地拓宽了pb的应用,而且非常的简单易用,希望更多的pb开发员加入到这个行列。不要以为其它的工具如何如何的先进,在快速应用方面,目前还是pb是首选。也不要以为这webservice有多复杂,我本身对这是很弱的,通过学习,一周之内,就把它理解并能应用了,想念聪明的你们更是得力。

我写这些的初衷,就是鼓励大家使用新技术,完成客户需求,这才是最重要的事情。

sybase继续加油,让pb的代码除了可以发布在iis,easerver,以后支持更多的中间件服务器,而且能跨平台,将是我们所有PB开发人员的福音

来源点击打开链接

展开阅读全文

没有更多推荐了,返回首页