没有合适的资源?快使用搜索试试~ 我知道了~
首页PowerBuilder Native Interface
PowerBuilder Native Interface
5星 · 超过95%的资源 需积分: 9 49 下载量 193 浏览量
更新于2023-03-03
评论
收藏 121KB PDF 举报
PowerBuilder 9開發技術講座 — <br>owerBuilder Native Interface(PBNI)
资源详情
资源评论
资源推荐
倍力資訊股份有限公司
第 1 頁
PowerBuilder 9 開發技術講座 —
PowerBuilder Native Interface(PBNI)
PowerBuilder 9 現在對於其他開發語言的支援,有了全新的突破,在以往使用
PowerBuilder 開發程式時,要和 C++或是 Java 程式互通有無是有一些折衷的辦
法,但是總是沒有辦法做到簡易而且全面性的支援。現在只要透過 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 之中的物件,達到應用程式的整合。更甚者,在藉由 JNI 與
PBNI 兩者的結合,Java 應用程式也可雙向地與 PowerBuilder 程式溝通。
何謂 PBNI
在談什麼是 PBNI 之前,我們先來談談下面三個問題:
1. 開發人員有辦法用 PowerBuilder 程式呼叫 C 或是 C++的程式嗎?
2. 開發人員有辦法用 PowerBuilder 程式呼叫一些外部元件像是 Java EJB 元件、
Web Service 元件、Java Class 程式等諸如此類的元件嗎?
3. 開發人員有辦法用反過來,用 C 或是 C++呼叫已經使用 PowerBuilder 開發好
的程式嗎?
上述三個問題,在過去的 PowerBuilder 其實都可以做到某種程度的地步,只是都
有些問題。傳統上使用 PowerBuilder 開發上述的程式時,如果要呼叫 C 或是 C++
的程式,是可以使用宣告外部函數的方式來使用一個已經撰寫好的 DLL 函數,
例如:
FUNCTION ulong GetSysColor (int index) LIBRARY "USER32.DLL”
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY
"WINMM.DLL"
倍力資訊股份有限公司
第 2 頁
可是如果是下面的程式呢:
BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM
lParam);
這個可是個大問題了,因為這個 Windows DLL Function 中會用到所謂的「Callback」
函數的技術,所謂的 Callback Function 指的是今天有 A 和 B 兩個物件,在程式中
A 物件呼叫 B 物件的 Function,而在該 B 物件的 Function 又會回頭呼叫 A 物件的
其他 Function,這就叫「Callback」。在 PowerBuilder 呼叫 C 的 Function 後,在這
個 C 的 Function 中要再回頭呼叫 PowerBuilder 的函數是不可能用引用外部函數的
方式來達到這個目地的。除了 Callback Function 使用困難之外,使用外部函數也
有資料型態的限制,以及沒有辦法使用物件導向的方式開發等種種的困難及問
題。
再來談談 PowerBuilder 呼叫外部的元件的方法,在以前能夠讓 PowerBuilder 呼叫
EJB 元件,就只能透過一些協力廠商開發的「COM Bridge」,讓 PowerBuilder 程
式透過 COM 元件來呼叫 Java 程式。至於要讓 Java 或是 C++來呼叫 PowerBuilder
程式的話,過去最常見的方法就是把這個 PowerBuilder 的程式包裝成為「OLE
automation server」。這些方法都不是一個真正解決的好方法,說穿了,這些方法
跟本就沒有辦法直接和 PowerBuilder 的核心「PowerBuilder Visual Machine」做溝
通,所以在過去的版本的 PowerBuilder,是一直有這種和其他語言程式不能溝通
的困擾,這也是大家一直認為,PowerBuilder 是一個封閉不開放的開發工具。
PowerBuilder 9 這個版本有幾個突破性的技術,而 PBNI 就是其中一個。所謂的
PBNI (PowerBuilder Native Interface),指的是 PowerBuilder 提供一個「原生介面
(Native Interface)」,透過這個介面可以使得 PowerBuilder 提高了對其他程式語言
的擴展能力,比方說透過該介面可以存取任何類型的外部應用應用程式,或是讓
外界其他的程式語言存取或是呼叫 PowerBuilder 開發的程式,下面是一個簡單的
PBNI 的示意圖:
倍力資訊股份有限公司
第 3 頁
在上面這張圖中,PBNI 提供了兩道讓外界可以和 PowerBuilder 核心(PBVM)的介
面窗口,第一個對外的窗口是指在圖的右半邊,我們可以開發「PB Extension」,
PB Extension 其實最後會變成 DLL,透過該技術,C 或是 C++的 DLL 程式可以包
裝成為一個「PBD」的檔案,而該 PBD 的檔案就可以在開發程式時,加到 Library
Search Path 中,讓 PowerBuilder 直接存取 PBD 裏的物件函數,你可以把它當作是
一個很像 PowerBuilder NVO 的東西來對待它。第二個對外的窗口是指在圖的左半
邊,你可以把 PowerBuilder Virtual Machine 「內嵌」到一個 C++ 的應用程式中,
在 C++程式中就可以直接呼叫 PowerScript Function。
PBNI 的元素
PBNI 提供了一些基本的元素,透過這些元素,程式開發人員可以快速的引用外
部程式語言,下面是常見到的 PBNI 元素:
z PBNI 提供的介面(Interface):
IPB_VM:這個介面的作用,在於當你要用 C++或是其他的程式語言來
呼叫 PowerBuilder 開發的程式,或是你希望要和 PowerBuilder 的核心
「PBVM」進行互動,或是溝通協調,你可以使用這個介面。
IPB_Session:這是一個抽象的介面,這個介面可以用來定義諸如存取
PowerScript 裏面的資料、建立 PowerBuilder 物件和呼叫 PowerScript 函數
操作的方法
IPB_Value:這個介面你可以把它想像成是它就是代表 PowerBuilder 的
值。這些值可以是 PowerBuilder 的標準資料型態,例如 String、Long、
Integer、Char 等等。所以這個介面提供了關於每個變數的資訊,包括變
數的類型、標記、存取權限(Public、Private 和 Protected)、變數值或參數
存取方式(例如 Call by Value 或是 Reference)。
IPB_Arguments:這個介面可以讓使用者在 PowerBuilder VM 和「PB
Extension」 間傳遞參數。
IPBX_NonVisualObject 和 IPBX_VisualObject:這兩介面很意思,因為它
們可以在 C++程式中實作出來,而且是放在 PB Extension 裏面,你在
PowerBuilder 中就可以用 PBD 的方式看到你實作出來的物件,而要寫這
些可見或是不可見的物件,靠的就是 IPBX_NonVisualObject 和
IPBX_VisualObject 介面。
IPBX_Marshaler:這個介面是當你要出一個「PB marshaler extension 」時,
一定要實作出 IPBX_Marshaler 這個`介面。這個介面尤其是你要由
PowerBuilder 呼叫 Java 程式時,一定要用到的一個介面。
剩余13页未读,继续阅读
zinger_cn
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1