石狮电力公司实现PowerBuilder7.x分布式计算
2005-09-22 10:08:01 来源:
A-
A+
电力18讯: 转载自《每周电脑报》
石狮电力公司的办公地点较多,人员分散,系统应用较为复杂,为了满足公司业务的需求,石狮电力采用了多层开发技术进行信息应用的开发。PowerBuilder支持分布式的计算方式,所谓分布式PowerBuilder的实现就是在客户端远程初始化一个在服务器端的用户自定义对象,并且调用这一对象的属性和函数,这就使得开发Internet应用成为了可能。
分布式PowerBuilder中的新概念
服务器应用
在以往的PowerBuilder版本中,PowerBuilder应用是作为客户机/服务器体系结构中的客户端应用提交的,在分布式PowerBuilder中引入了服务器应用这个概念。这个应用包括了不可视的用户对象,并被客户端应用调用,这些用户对象被称作远过程对象,这种调用可以是跨进程或跨硬件平台的。
客户应用
PowerBuilder客户应用是用以调用远端对象的部分。分布式PowerBuilder应用包括了一个新的对象,称作Connection,用以连接PowerBuilder服务器应用。当同服务器建立连接后,客户应用将如同调用本地的不可视用户对象一样调用远程对象。
远程对象
与其他的不可视用户对象类同。一个远程对象包含了用PowerScript编写的商业逻辑,放在服务器端,作为不可视用户对象的特例,远程对象可以引用各种不可视的函数和数据库的指令,如使用DataWindow的不可视形式DataStore来实现对数据库访问的封装等。
传输对象
是服务器端用以接收客户请求的特殊连接对象。当使用createtransport命令创建一个传输实例后,该对象以对象的属性中所定义的协议监听接收客户的请求。
连接对象
是客户端发送请求的客户端的对象。当使用createtransport创建一个连接对象时,本对象的ConnectToServer函数执行同服务器的连接。
对象存储代理
一种存储用户对象的新选择。存储代理保存对象的远程名称并生成内部代码以供远程调用。当connection对象与之建立连接后,该对象就能够用以远程调用。
分布式PowerBuilder的工作原理
当一个connection对象调用了ConnectToServer函数成功后,服务器端将在内存中开辟一个用于该客户端应用的工作区,而在proxy对象调用了SetConnect函数后,系统将在服务器端初始化一个不可视对象的实例,系统并不是在用户初始化代理对象时初始化不可视用户对象,而是在调用SetConnect函数后,在服务器端对NVO(不可视对象)进行初始化。
分布式PowerBuilder在服务器一端实现的是一个虚拟机模型。每当一个客户请求连接时,服务器就会在内存中建立一个新的区域用于该客户的请求,每一个内存空间都是相互独立。PowerBuilder5.0分布式应用只支持同步方式,也就是说,当调用代理对象的一个函数时,系统实际将调用服务器端的不可视对象的函数。这时客户端应用将被挂起,直至服务器函数运行完毕,客户端才能继续工作,而在发布的6.0以上版本都支持异步运算。
当调用一个客户端函数时,需要传递参数给这个函数。目前的分布式PowerBuilder版本可以支持多种数据类型的传递,包括所有简单的数据类型、结构和数组、使用传值法和传参法,还支持传递不可视对象。
在使用完一个代理对象后应注意在程序的结束前用destroy语句析构这个对象实例,否则将出现内存漏洞的问题。因为对代理的析构将使远端的不可视对象同时析构,如果忘记了对代理对象的析构,不可视对象将不会在服务器端自动清除,这样将在客户和服务器两端都造成了内存漏洞。此外connection对象还有一个DisconnectServer函数,这个函数用以取消客户与服务器的连接,服务器端将回收分配给该用户的内存,在程序结束时不使用这个函数也将造成服务器器端的内存漏洞。
开发分布式应注意的问题
在本地进行分布式设计 在设计分布式应用时应首先考虑在本地上的实现,如过早地考虑网络的拓扑模型将会使分布式应用失去未来重新分割应用的灵活性。应用在分布运行之前首先应当在本地成功运行,使用Debug调试必须使用本地的接口。
产品使用环境与开发环境一致 当开发环境与实际交付用户运行的环境有显著差别时,会使分布式应用部分根本不可用。例如,一个在小型的高速局域网环境中开发出来的应用,在拨号网络或广域网中不会有期望的运行效果。
使网络通信量最小化 在物理对象设计和实现过程中最基本的目标是减少分布式应用中代理之间的消息和代理对象的传递。函数调用,对远过程对象中实例变量的引用,触发远过程对象的事件等操作都要比引用本地对象花费更多的时间。
PowerBuilder对象库的分布 一般建议在开发时,将不可视对象及其代理对象放在同一个pbl库中,这个库都包括在客户端应用和服务器端应用可搜索到路径中。这样在对象被修改后,运行时的两端的应用就可以使用同一个DLL或PBD。
同时检入(checkin)和检出(checkout)NVO及其代理对象 在团队开发中,一个程序员检入NVO时,应当同时检入它的代理,即使不修改这个对象的接口函数,PowerBuilder在保存NVO对象时,会同时重新修改保存在同一个pbl库中的这个对象的代理,因为代理对象不仅带有接口函数的信息,还包括了对象的实例变量等其它信息在内。
建立一个远程控制机制 在一般情况下,应开发一个应用服务器的远程设置,控制新用户连接、启动、关闭和其它日常任务维护的控制功能,以便于管理员对应用服务器的管理。
应用效果
石狮电力联营公司MIS系统在公司原有的网络平台基础上,采用三层结构应用模式,以数据库技术、面向对象、网络技术等作为主流技术,开发了一整套覆盖公司生产经营管理的具有综合处理能力的应用系统。通过信息资源的网上共享,为领导者作出决策和有关人员开展工作提供实时有效的信息;部门科室及生产管理全部实现“无纸化”办公。
小资料:分布式计算方式和三级系统结构,是近年来提出的一种新的计算方式,即在传统的客户机/服务器两级结构中再增加一个称作应用服务器的中间级,用以执行复杂的商业逻辑计算。虽然三级结构在传统的数据库领域还没有被广泛接受,但在Internet&Intranet领域,已开始大量使用这种分布式的计算方式,在Intranet中,系统至少就是由浏览器(客户机)、Web服务器(应用服务器)、数据库这样的三级结构组成。
石狮电力公司的办公地点较多,人员分散,系统应用较为复杂,为了满足公司业务的需求,石狮电力采用了多层开发技术进行信息应用的开发。PowerBuilder支持分布式的计算方式,所谓分布式PowerBuilder的实现就是在客户端远程初始化一个在服务器端的用户自定义对象,并且调用这一对象的属性和函数,这就使得开发Internet应用成为了可能。
分布式PowerBuilder中的新概念
服务器应用
在以往的PowerBuilder版本中,PowerBuilder应用是作为客户机/服务器体系结构中的客户端应用提交的,在分布式PowerBuilder中引入了服务器应用这个概念。这个应用包括了不可视的用户对象,并被客户端应用调用,这些用户对象被称作远过程对象,这种调用可以是跨进程或跨硬件平台的。
客户应用
PowerBuilder客户应用是用以调用远端对象的部分。分布式PowerBuilder应用包括了一个新的对象,称作Connection,用以连接PowerBuilder服务器应用。当同服务器建立连接后,客户应用将如同调用本地的不可视用户对象一样调用远程对象。
远程对象
与其他的不可视用户对象类同。一个远程对象包含了用PowerScript编写的商业逻辑,放在服务器端,作为不可视用户对象的特例,远程对象可以引用各种不可视的函数和数据库的指令,如使用DataWindow的不可视形式DataStore来实现对数据库访问的封装等。
传输对象
是服务器端用以接收客户请求的特殊连接对象。当使用createtransport命令创建一个传输实例后,该对象以对象的属性中所定义的协议监听接收客户的请求。
连接对象
是客户端发送请求的客户端的对象。当使用createtransport创建一个连接对象时,本对象的ConnectToServer函数执行同服务器的连接。
对象存储代理
一种存储用户对象的新选择。存储代理保存对象的远程名称并生成内部代码以供远程调用。当connection对象与之建立连接后,该对象就能够用以远程调用。
分布式PowerBuilder的工作原理
当一个connection对象调用了ConnectToServer函数成功后,服务器端将在内存中开辟一个用于该客户端应用的工作区,而在proxy对象调用了SetConnect函数后,系统将在服务器端初始化一个不可视对象的实例,系统并不是在用户初始化代理对象时初始化不可视用户对象,而是在调用SetConnect函数后,在服务器端对NVO(不可视对象)进行初始化。
分布式PowerBuilder在服务器一端实现的是一个虚拟机模型。每当一个客户请求连接时,服务器就会在内存中建立一个新的区域用于该客户的请求,每一个内存空间都是相互独立。PowerBuilder5.0分布式应用只支持同步方式,也就是说,当调用代理对象的一个函数时,系统实际将调用服务器端的不可视对象的函数。这时客户端应用将被挂起,直至服务器函数运行完毕,客户端才能继续工作,而在发布的6.0以上版本都支持异步运算。
当调用一个客户端函数时,需要传递参数给这个函数。目前的分布式PowerBuilder版本可以支持多种数据类型的传递,包括所有简单的数据类型、结构和数组、使用传值法和传参法,还支持传递不可视对象。
在使用完一个代理对象后应注意在程序的结束前用destroy语句析构这个对象实例,否则将出现内存漏洞的问题。因为对代理的析构将使远端的不可视对象同时析构,如果忘记了对代理对象的析构,不可视对象将不会在服务器端自动清除,这样将在客户和服务器两端都造成了内存漏洞。此外connection对象还有一个DisconnectServer函数,这个函数用以取消客户与服务器的连接,服务器端将回收分配给该用户的内存,在程序结束时不使用这个函数也将造成服务器器端的内存漏洞。
开发分布式应注意的问题
在本地进行分布式设计 在设计分布式应用时应首先考虑在本地上的实现,如过早地考虑网络的拓扑模型将会使分布式应用失去未来重新分割应用的灵活性。应用在分布运行之前首先应当在本地成功运行,使用Debug调试必须使用本地的接口。
产品使用环境与开发环境一致 当开发环境与实际交付用户运行的环境有显著差别时,会使分布式应用部分根本不可用。例如,一个在小型的高速局域网环境中开发出来的应用,在拨号网络或广域网中不会有期望的运行效果。
使网络通信量最小化 在物理对象设计和实现过程中最基本的目标是减少分布式应用中代理之间的消息和代理对象的传递。函数调用,对远过程对象中实例变量的引用,触发远过程对象的事件等操作都要比引用本地对象花费更多的时间。
PowerBuilder对象库的分布 一般建议在开发时,将不可视对象及其代理对象放在同一个pbl库中,这个库都包括在客户端应用和服务器端应用可搜索到路径中。这样在对象被修改后,运行时的两端的应用就可以使用同一个DLL或PBD。
同时检入(checkin)和检出(checkout)NVO及其代理对象 在团队开发中,一个程序员检入NVO时,应当同时检入它的代理,即使不修改这个对象的接口函数,PowerBuilder在保存NVO对象时,会同时重新修改保存在同一个pbl库中的这个对象的代理,因为代理对象不仅带有接口函数的信息,还包括了对象的实例变量等其它信息在内。
建立一个远程控制机制 在一般情况下,应开发一个应用服务器的远程设置,控制新用户连接、启动、关闭和其它日常任务维护的控制功能,以便于管理员对应用服务器的管理。
应用效果
石狮电力联营公司MIS系统在公司原有的网络平台基础上,采用三层结构应用模式,以数据库技术、面向对象、网络技术等作为主流技术,开发了一整套覆盖公司生产经营管理的具有综合处理能力的应用系统。通过信息资源的网上共享,为领导者作出决策和有关人员开展工作提供实时有效的信息;部门科室及生产管理全部实现“无纸化”办公。
小资料:分布式计算方式和三级系统结构,是近年来提出的一种新的计算方式,即在传统的客户机/服务器两级结构中再增加一个称作应用服务器的中间级,用以执行复杂的商业逻辑计算。虽然三级结构在传统的数据库领域还没有被广泛接受,但在Internet&Intranet领域,已开始大量使用这种分布式的计算方式,在Intranet中,系统至少就是由浏览器(客户机)、Web服务器(应用服务器)、数据库这样的三级结构组成。
评论
最新评论(0)
相关新闻:
-
无相关信息
编辑推荐
热点排行
推荐阅读