ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:107.23KB ,
资源ID:13473803      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13473803.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PBNI整理版本剖析Word文档格式.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PBNI整理版本剖析Word文档格式.docx

1、现在只要透过PowerBuilder 9的PBNI技术,就可以让PowerBuilder的程式呼叫Java,或是在一个C+的程式中引用PowerBuilder NVO物件函数。 以往的PowerBuilder程式只能够透过外在函数呼叫的方式来存取C/C+的函数,但在PowerBuilder 9.0之中扩增了一项强而有力的介面PowerBuilder Native Interface,简称PBNI。透过PBNI的开发方式,PowerBuilder开发人员不仅可以使用物件导向的方式来存取C/C+函数,而且还可反向地让C/C+程式呼叫PowerBuilder之中的物件,达到应用程式的整合。更甚者,在

2、藉由JNI与PBNI两者的结合,Java应用程式也可双向地与PowerBuilder程式沟通。何谓PBNI在谈什么是PBNI之前,我们先来谈谈下面三个问题:1.开发人员有办法用PowerBuilder程式呼叫C或是C+的程式吗?2.开发人员有办法用PowerBuilder程式呼叫一些外部元件像是Java EJB元件、 Web Service元件、Java Class程式等诸如此类的元件吗?3.开发人员有办法用反过来,用C或是C+呼叫已经使用PowerBuilder开发好的程式吗?上述三个问题,在过去的PowerBuilder其实都可以做到某种程度的地步,只是都有些问题。传统上使用PowerBu

3、ilder开发上述的程式时,如果要呼叫C或是C+ 的程式,是可以使用宣告外部函数的方式来使用一个已经撰写好的DLL函数, 例如:FUNCTION ulong GetSysColor (int index) LIBRARY USER32.DLL” FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY WINMM.DLL可是如果是下面的程式呢:BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam);这个可是个大问题了,因为这个Windows DLL Func

4、tion中会用到所谓的Callback 函数的技术,所谓的Callback Function指的是今天有A和B两个物件,在程式中A物件呼叫B物件的Function,而在该B物件的Function又会回头呼叫A物件的其他Function,这就叫Callback。在PowerBuilder呼叫C的Function后,在这个C的Function中要再回头呼叫PowerBuilder的函数是不可能用引用外部函数的方式来达到这个目地的。除了Callback Function使用困难之外,使用外部函数也有资料型态的限制,以及没有办法使用物件导向的方式开发等种种的困难及问题。再来谈谈PowerBuilder

5、呼叫外部的元件的方法,在以前能够让PowerBuilder呼叫EJB元件,就只能透过一些协力厂商开发的COM Bridge,让PowerBuilder程式透过COM元件来呼叫Java程式。至于要让Java或是C+来呼叫PowerBuilder 程式的话,过去最常见的方法就是把这个PowerBuilder的程式包装成为OLE automation server。这些方法都不是一个真正解决的好方法,说穿了,这些方法跟本就没有办法直接和PowerBuilder的核心PowerBuilder Visual Machine做沟通,所以在过去的版本的PowerBuilder,是一直有这种和其他语言程式不能

6、沟通的困扰,这也是大家一直认为,PowerBuilder是一个封闭不开放的开发工具。 PowerBuilder 9这个版本有几个突破性的技术,而PBNI就是其中一个。所谓的PBNI (PowerBuilder Native Interface),指的是PowerBuilder提供一个原生介面(Native Interface),透过这个介面可以使得PowerBuilder提高了对其他程式语言的扩展能力,比方说透过该介面可以存取任何类型的外部应用应用程式,或是让外界其他的程式语言存取或是呼叫PowerBuilder开发的程式,下面是一个简单的PBNI的示意图:此主题相关图片如下:1.jpg在上面

7、这张图中,PBNI提供了两道让外界可以和PowerBuilder核心(PBVM)的介面窗口,第一个对外的窗口是指在图的右半边,我们可以开发PB Extension, PB Extension其实最后会变成DLL,透过该技术,C或是C+的DLL程式可以包装成为一个PBD的档案,而该PBD的档案就可以在开发程式时,加到Library Search Path中,让PowerBuilder直接存取PBD里的物件函数,你可以把它当作是一个很像PowerBuilder NVO的东西来对待它。第二个对外的窗口是指在图的左半边,你可以把PowerBuilder Virtual Machine 内嵌到一个C+的

8、应用程式中, 在C+程式中就可以直接呼叫PowerScript Function。PBNI的元素PBNI提供了一些基本的元素,透过这些元素,程式开发人员可以快速的引用外部程式语言,下面是常见到的PBNI元素:? PBNI提供的介面(Interface): IPB_VM:这个介面的作用,在于当你要用C+或是其他的程式语言来呼叫PowerBuilder开发的程式,或是你希望要和PowerBuilder的核心PBVM进行互动,或是沟通协调,你可以使用这个介面。 IPB_Session:这是一个抽象的介面,这个介面可以用来定义诸如存取PowerScript里面的资料、建立PowerBuilder物件和

9、呼叫PowerScript函数操作的方法 IPB_Value:这个介面你可以把它想像成是它就是代表PowerBuilder的值。这些值可以是PowerBuilder的标准资料型态,例如String、Long、 Integer、Char等等。所以这个介面提供了关于每个变数的资讯,包括变数的类型、标记、存取权限(Public、Private和Protected)、变数值或参数存取方式(例如Call by Value或是Reference)。 IPB_Arguments:这个介面可以让使用者在PowerBuilder VM和PB Extension间传递参数。 IPBX_NonVisualObjec

10、t和IPBX_VisualObject:这两介面很意思,因为它们可以在C+程式中实作出来,而且是放在PB Extension里面,你在PowerBuilder中就可以用PBD的方式看到你实作出来的物件,而要写这些可见或是不可见的物件,靠的就是IPBX_NonVisualObject和IPBX_VisualObject介面。 IPBX_Marshaler:这个介面是当你要出一个PB marshaler extension 时, 一定要实作出IPBX_Marshaler这个介面。这个介面尤其是你要由PowerBuilder呼叫Java程式时,一定要用到的一个介面。 PBNI提供的Structure

11、s: PBCallInfo:这个Structure可以在开发PBNI程式时,让PBNI和PowerBuilder之间呼叫的函数保持参数和回传值的资讯。如果要存取在PBCallInfo中的资讯,可以使用IPB_Arguments介面来获得PBCallInfo。 PBArrayInfo:PBArrayInfo是一个C+的structure,这个Structure可以在阵列中保持一些资讯。 PBNI提供的Globle Function: 如果你要写一个PowerBuilder extension的程式(说穿了就是用C+写一个DLL档啦),这个物件必须要汇出两个Global Functions,让这个

12、程式可以内嵌 PowerBuilder VM并且建立实体出来。下面是PBNI提供的Globle Function: PBX_GetDescription() PBX_CreateNonVisualObject() PBX_CreateVisualObject() PBX_InvokeGlobalFunction() PBNI提供的Helper classes: Helper Classes指的是一些辅助的类别物件,PBNI提供像是PBObjectCreator、 PBArrayAccessor和PBEventTrigger等辅助类别,透过这些辅助类别物件可使PBNI在开发上更简单。PBNI的开

13、发方式在了解PBNI有那些元素后,读着应该也了解到何谓PBNI,并且知道PBNI能帮我们做什么。在针对不同的目地,PBNI也有不同的开发方式,常见的PBNI开发目地为下列四个,在后面的部份会祥细的说明PBNI的开发方式为何:建立PB extensions 建立PB marshaler extensions 建立PB visual extensions 内嵌PBVM到C+的应用程式中建立PB extensions步骤之前有跟各位读者提过,PBNI提供了两个对外的方法,其中一种就是将C或是C+写好的DLL档案,透过PBNI提供的介面来包装成一个PowerBuilder认得的PBD档案,这种方式称之为建立PB Extensions。在开发一个PB Extensions的程式时,我们必须先设想好,最后我们要产生的PBD中,会有那些物件。比方说,我现在手头上正在写一个C+的程式,我希望这个C+的程式最后透过PBNI 的帮助,产生一个PBD档案,而且在这个PBD里面有一个Funtion物件,而这个F

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1