祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 15082|回复: 13

[参考资料] 收藏 pb开发webservice的一点经验

[复制链接]

[参考资料] 收藏 pb开发webservice的一点经验

[复制链接]
ehxz

主题

0

回帖

58万

积分

管理员

积分
588431
贡献
在线时间
小时
2013-1-19 15:50:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
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开发人员的福音
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
sunchengbo2007

主题

0

回帖

1090

积分

金牌会员

积分
1090
贡献
在线时间
小时
2013-1-31 08:10:52 | 显示全部楼层
谢谢老大分享,学习了。{:soso_e179:}
共享共进共赢Sharing And Win-win Results
migcheng

主题

0

回帖

1万

积分

论坛元老

积分
14678
贡献
在线时间
小时
2013-2-2 13:32:49 | 显示全部楼层
謝謝大大的分享
共享共进共赢Sharing And Win-win Results
fuxiaoyang13

主题

0

回帖

3136

积分

论坛元老

积分
3136
贡献
在线时间
小时
2013-2-18 00:58:19 | 显示全部楼层
学习学习!!!!
共享共进共赢Sharing And Win-win Results
winlong

主题

0

回帖

187

积分

注册会员

积分
187
贡献
在线时间
小时
2013-6-6 12:49:21 | 显示全部楼层
那服务器必须要用windows Server 了,有没有跨平台的,可以部薯在linux平台上的。
共享共进共赢Sharing And Win-win Results
xieyufei

主题

0

回帖

453

积分

高级会员

积分
453
贡献
在线时间
小时
2013-6-7 13:34:24 | 显示全部楼层
不错 谢谢分享
共享共进共赢Sharing And Win-win Results
liqipeng182

主题

0

回帖

8884

积分

论坛元老

积分
8884
贡献
在线时间
小时
2013-10-5 22:14:38 | 显示全部楼层
学习了,谢谢分享
共享共进共赢Sharing And Win-win Results
j528

主题

0

回帖

3254

积分

论坛元老

积分
3254
贡献
在线时间
小时
2013-10-17 12:55:38 | 显示全部楼层
学习了,谢谢老大
共享共进共赢Sharing And Win-win Results
吞吞

主题

0

回帖

189

积分

注册会员

积分
189
贡献
在线时间
小时
2014-10-2 22:26:10 | 显示全部楼层
学习了
共享共进共赢Sharing And Win-win Results
吞吞

主题

0

回帖

189

积分

注册会员

积分
189
贡献
在线时间
小时
2014-10-2 22:26:13 | 显示全部楼层
学习了
共享共进共赢Sharing And Win-win Results
tomok

主题

0

回帖

1万

积分

注册会员

积分
18510
贡献
在线时间
小时
2014-10-5 07:52:59 | 显示全部楼层
数据库必须是 easerver  的?
共享共进共赢Sharing And Win-win Results
mywayzw

主题

0

回帖

396

积分

高级会员

积分
396
贡献
在线时间
小时
2014-12-23 13:01:07 | 显示全部楼层
谢谢老大分享,学习了。
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-11-21 21:16 , Processed in 0.082472 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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