`
wuhuizhong
  • 浏览: 682659 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

pb12 开发 webservice 注意事项

阅读更多

系统环境:winxp sp2 + oracle10g + iis5.1

1. 检查本机 iis 是否正常,若 iis 不能运行或浏览默认网页时报权限类错误,检查“本地用户和组”中 3 个相关的内置账号是否启用(启动 iis, asp.net, internet 来宾)。

2. pb 开发 ws,必须安装 framework3.5 sp1 和 framework sdk2.0,为简单起见,直接安装 vs2008,之后再打 vs2008 sp1 补丁,微软官网的那个补丁包需要用较新版本的 iso 工具才能正常读出。

3. 由于 .net 语法更为严格,有符号和无符号的同类型数值变量不能做互相赋值或比较等操作,例如:int 和 uint;此问题可能会导致发布时 pb 直接崩溃!

4. 无符号数值类型不能用于递减循环,例如:for uint = 100 to 1 step -1;发布时通常会给出编译警告,但有时却会导致 pb 异常关闭!

5. 全局函数不能使用 this 代词,可用 GetApplication() 替代。

6. 在 c/s 应用中调用 ws,需要把 ..\share\powerbuilder 中的 pbsoapclient120.pbd(java 标准)或 pbwsclient120.pbd(.net 标准)文件加入到 target 的库列表中;它们分别对应 EasySOAP 和 .Net 引擎。

7. 使用 .net target 做客户端应用的话,必须把 pbwsclient120.pbx 导入到自已的 pbl 中;如果导入报错的话,可以从 pb 自带的 ws 例程中导出相关的 3 个对象为 *.sr* 文件,再导入自己的 pbl 里。

8. 如果调用 ws 时 CreateInstance() 出现 runtime 错误,则可能是由于老版本 pb 在 system32 目录下放有与 pb 共享目录下同名的老版本 dll,删除或用新版本 dll 覆盖即可(如 libeay32.dll)。

9. 发布 ws 的详细日志文件可以在本工程下的 pb2cstempout 目录中找到。

10. FileOpen() 必须用流模式,所以 FileWriteEx() 也必须用 blob 类型。

11. (尚待进一步研究)不能直接读写 iis 虚拟目录以外的文件,必须把其添加到 iis 的虚拟目录中;同时要保证该文件所在目录及上层目录 asp.net 拥有相应的访问权限;虚拟目录的真实路径可用 MapVirtualPath() 取得,但不能用真实路径访问虚拟目录的文件,也不能以相对路径访问应用的上层目录及文件(仅可访问 /app_root/file/session/__webservice__/c 中会话产生的临时目录及文件)。

12. 发布给外界调用的 ws 函数不允许重载(这的确是个很糟糕的限制)。

13. 应用对象不能声明实例变量,全局变量只对当前会话有效;应用对象的脚本不会执行;以 post 方式调用的函数不会执行。

14. 创建对象时所用的模板类型必须和声明的一致,不能降级构造;例如:继承自 transaction 的自定义对象 n_tran_base,声明为 n_tran_base itran_obj,则实例化时不可以写成 itran_obj = create transaction(赋值、比较操作同理)。

15. 数据库驱动目录须要设置 asp.net 的访问权限(重启),如 c:\oracle\product\10.1.0\client_1。

16. 要使用 sybase datawindow ps 打印机,需要在打印机的安全设置里添加上 asp.net, internet 来宾, network service, 启动 iis  四个账号为允许打印(第一次打印时必须设置,之后可以删除),方可确保 PrintDatawindow(), Print(), SaveAs() 这些函数能正常生成 pdf 文件(但 db ole 控件的内容不能显示)。

17. 可以通过 inet 和 internetresult 两对象的配合,获得 /app_root/print/session/__webservice__ 打印目录下的文件列表,并分析出打印后的正确文件名;同理,亦可用此方法获得 pdf 文件的内容。

18. (尚待进一步研究)Run() 函数已失效,可用 API 替代,如 CreateProcess() 启动服务端的 exe 文件,但受限于 iis 的权限控制,只能在任务管理器中看到此进程,并不能正常运行(即便是无界面的 exe 也是如此)。

19. (尚待进一步研究)据 sybase 新闻组的说法,ole 对象在 .net 应用中无法使用,这并不是 pb 的限制,而是微软自身的问题。所以 db ole 控件也失效了,如果仍想在客户端使用的话,可在检索含有 db ole 的数据窗口时转交给 c/s 程序执行,然后再传回 ws。

20. 关于进程间通讯,DDE 仅能建立管道,但无法执行链接;Send() 函数已失效,只有通过 API SendMessage() 向服务端进程发送消息(ws 没有窗口句柄,不能收到消息),本应使用 WM_COPYDATA 通过共享内存来传递数据(在 other 中拦截 message.number=74),但服务端进程收到的却是错误数据;既然只能传递消息本身,倒不如用 pbm_custom01(1024) 更加简单。

21. 若数据库驱动不能使用 iis 连接池的话,则必须在 ws 执行完成后,由代码主动断开连接;但由于 ws 的析构事件不会在退出时立即执行,所以必须在每个接口函数返回前断开连接;而且,为防止函数中忘记断开或异常退出,析构事件仍需写上 disconnect;。

分享到:
评论

相关推荐

    转:pb12 开发 webservice 注意事项

    ### 转:PB12 开发 WebService 注意事项 #### 概述 在将一个传统的C/S(客户端/服务器)MIS系统改造为基于WebService的C/S/S架构的过程中,会遇到一系列技术挑战与注意事项。以下内容是针对这一转换过程中所记录的...

    pb12 WEBSERVICE 开发 源码

    在本压缩包文件中,"pb12 WEBSERVICE 开发 源码" 提供的是使用PowerBuilder 12进行WEBSERVICE开发的相关源代码。下面我们将详细探讨PB12与WEBSERVICE开发的相关知识点。 1. PowerBuilder 12基础: - PowerBuilder ...

    pb开发webservice的经验

    PB开发Webservice涉及到以下几个关键知识点: 1. **SOAP协议**:Web服务通常基于SOAP(Simple Object Access Protocol)协议,它是XML格式的消息传输协议,用于在不同的应用程序之间传递信息。在PB中,我们需要理解...

    黄老师用pb开发WEBSERVICE

    黄老师用pb开发WEBSERVICE

    pb11+webservice开发分布式三层应用 例程

    提供的“pb11+webservice开发分布式三层应用.doc”文档很可能会包含详细的步骤、示例代码和注意事项,指导开发者如何实际操作这个项目。建议仔细阅读并按照文档进行实践。 **8. 使用说明** “下载使用说明.htm”...

    PB12.5+webservice实例

    在本实例中,我们将深入探讨如何结合PB12.5与Web服务(特别是通过WebService)进行集成开发。 一、PowerBuilder 12.5简介 PowerBuilder是一种第四代编程语言(4GL),它提供了图形用户界面(GUI)和数据窗口组件,...

    pb11.5 调用pb12的 webservice 代码

    PB11.5调用PB12的Web服务代码是一个涉及多方面技术的过程,主要涉及到PowerBuilder(PB)的不同版本间通信以及Web服务的客户端调用。以下将详细阐述这个过程中的关键知识点: 1. **Web服务基础**: Web服务是一种...

    pb11+webservice开发

    PB11+WebService开发是构建分布式三层应用的一种技术,其中PB11指的是PowerBuilder 11.5,这是一种流行的面向对象的编程工具,尤其适用于企业级应用开发。Web Service是一种基于XML的通信协议,允许不同系统之间进行...

    PB11开发Web Service应用介绍

    PB11开发Web Service应用介绍 PB11是PowerBuilder的简称,是一种强大的RAD(Rapid Application Development)工具,PB11开发Web Service应用是指使用PB11开发基于Web Service的应用程序。Web Service是一种基于SOAP...

    使用PB11实现WEBSERVICE

    一、开发环境:pb11.2 8669 二、pb的webservice程序必须置于英文目录下,含中文路径时部署会出错; 三、代码只要改一个地方: n_webservice对象的of_retrieve函数中 sqlca.logpass设置为你测试数据库的sa对应密码即可 四...

    PB调用JAVA WEBSERVICE实例

    标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...

    pb11+webservice开发分布式三层应用

    本教程“pb11+webservice开发分布式三层应用”着重讲解如何利用PowerBuilder 11和Webservice来构建分布式三层架构的应用程序。三层架构通常包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和...

    PB12 webservice完整例子源码

    PB12 Webservice完整例子源码是一个针对PowerBuilder 12.6的示例项目,展示了如何在Windows 7环境下创建和使用Web服务。PowerBuilder是Sybase(现为SAP的一部分)开发的一种面向对象的集成开发环境(IDE),特别适合...

    用PB_WebService应用.ppt

    用PB_WebService应用.ppt

    pb11+webservice

    ### pb11+webservice开发分布式三层应用:深入解析与实践 #### 一、概述 在现代企业级软件开发中,分布式系统设计已成为主流趋势,其中PowerBuilder(PB)结合Web Service技术构建分布式三层架构应用尤为突出。PB...

    pb调用webservice的dll文件.zip

    PB对接Webservice所需要的的dll文件。我们用pb对接Webservice时,当我们打包部署的话,一定不要缺少这是多个dll文件,可以说缺一不可,亲测有效的,应用到生产中啦!开源不易,且行且珍惜

    PB6,PB7,PB8,PB9,PB10,PB11调用WEBSERVICE,并解决超时问题

    标题中的“PB6, PB7, PB8, PB9, PB10, PB11”指的是PowerBuilder的不同版本,这是一款由Sybase(现为SAP所有)开发的可视化编程工具,主要用于构建企业级的数据库应用程序。这些版本代表了PowerBuilder的发展历程,...

    PB12.5WEBSERVICE发布问题处理

    PowerBuilder12.5做的webservice发布到iis上面遇到的问题以及解决办法

    pb程序的webservice (三层)

    标题中的"pb程序的webservice (三层)"指的是使用PowerBuilder(简称PB)开发的一个Web服务应用,该应用采用了三层架构设计。三层架构是一种常见的软件设计模式,它将应用程序分为三个逻辑部分:表现层(Presentation...

Global site tag (gtag.js) - Google Analytics