版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、如何用 PB WebService 开发多层架构应用系统,黄国酬,本主题的演讲,主要包括以下内容,什么是WebService?用WebService为了解决什么问题? PB如何开发WebService的服务端应用程序?PB客户端应用如何调用服务器上的WebService? PB的DataWindow,在多层架构的应用系统开发过程中,如何处理数据检索、更新、打印等。如何实现UI和业务功能的分离?以及性能、安全性方面的注意事项等等。 应用程序为什么要开发成多层架构?多层架构的应用跟传统的CS应用的开发,在思维、方法、架构上有什么异同?如何把以前的CS的应用程序,升级转换为多层架构的应用程序? We
2、bService系统设计的安全性问题。 WebService的调试和部署,什么是WebService?用WebService为了解决什么问题?,什么是WebService,Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 关键技术 XML SOAP WSDL UDDI,XML,XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临
3、时数据处理、面向万维网络,是Soap的基础。,Soap,Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。,WSDL,WSDL (Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生
4、成和使用。,UDDI,UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。,XML Web Service的特点,跨防火墙的通信 应用程序集
5、成 B2B的集成 软件和数据重用,如何用PB开发WebService?,搭建Windows 系统环境,安装IIS应用服务器 如果是用于开发环境,则需要安装.NET FrameWork 2.0或以上版本的SDK.如果是用于发布环境,则只需要安装.NET FrameWork 2.0或以上版本即可。(SDK版本数据包比较大,里面包括了一些编译工具) 如果安装了VS2005或以上版本的开发工具,不需要再单独安装SDK 如果在安装IIS之前,已经安装了.NET FrameWorkSDK,则需要执行以下命令,在IIS中注册.NET FrameWork的运行环境。 C:WINDOWSMicrosoft.NE
6、TFrameworkv2.0.50727 aspnet_regiis -i,在IIS中增加网站,在IIS增加一个网站(不是虚拟目录)。如果计算机已存在多个网站,可以通过主机头或端口号区分出来。如果建立的网站端口号不是80,则必须保证防火墙开放了端口。 网站的ASP.NET版本必须为2.0或以上版本。 IIS里面相应版本的ASP.NET 服务扩,必须启用(允许) 新建的网站,允许是一个空站。即把网站建在一个空白的目录上。,网站创建向导,网站创建向导,由于网站建在本地,所以IP地址可以不输()。一台电脑可以建立多个网站,通过端口号或主机头区分出来。主机头一般为网站的域名,如.由于
7、在本地建立,没有绑定域名,所以用不同的端口加以区分。,网站创建向导,网站的主目录。该目录允许是一个空白目录。目录名称不要包含中文,否则PB在发布时,有时会有错误产生。,网站创建向导,网站访问权限,必须选中“运行脚本”。,网站创建向导,点击下一步,网站创建完成。,设置网站的ASP.NET版本,IIS6为新建的网站,缺省的ASP.NET版本是1.1.4322,需要手工修改为2.0版本,至于网站建立完毕,稍候可以把PB开发的WebService,发布到该网站下面。,在PB中增加WebService项目,运行PB,新建一个.Net WebService 的Target,在PB中增加WebService
8、项目,选择Start from scratch 新建一个PBL和WebService用户组件,在PB中增加WebService项目,输入WebService应用的项目名称和保存路径。,在PB中增加WebService项目,可以加入其它的PBL,例如以前已经写好的一些公共类库。,在PB中增加WebService项目,输入需要增加的不可视用户对象的名称。在该用户对象中,实现WebService的功能。最终可以把该组件编译发布为WebService的各种服务接口。,在PB中增加WebService项目,输入发布到目标网站的虚拟目录的名称。PB WebService在编译时,只能发布为网站的虚拟目录。
9、而不能作为网站的主目录。,在PB中增加WebService项目,增加项目所需要使用的资源文件(如图片,INI文件等)和Win32的DLL文件(如ZLIB.DLL等),在PB中增加WebService项目,设置WebService编译时,是生成一个安装包程序,还是直接发布到网站。 Localhost:9001表示发布到本机9001端口的网站上。即刚才在IIS中增加的网站。,在PB中增加WebService项目,新建项目向导完成后,PB IDE自动按向导过程中设置的组件名称,建立了一个不可视对象。可以在该组件中实现WebService的功能,再编译发布。,实现WebService功能,打开n_he
10、lloworld组件,增加一个OF_HelloWorld的函数。该函数传入一个字符串的 参数,并返回字符串的结果。 Function OF_HelloWorld(string as_Name) return as_Name+”你好!欢迎参加广州技术交流会!” END FUNCTION,发布WebService,打开p_helloword的项目对象,在General标签内,可以修改WebService要发布的网站虚拟目录名称。Deploy可以设置发布时,是生成一个安装程序,还是直接发布到一个网站地址。,发布WebService,在Objects标签,选择需要发布为WebService服务的组件和
11、函数接口。组件发布后的Web Service Name是一致的。可以修改该名称,取得提供的名称更容易理解。 设置完以前选项后,执行发布命令,如果IIS环境和网站搭配正确的话,应该可以正常发布。,验证WebService,发布成功后,点击“Run Web Service”按钮,PB将会打开Windows的缺省浏览器,并访问发布的WebService。正确的话,则显示该WebService的全部服务接口名称。,测试WebService接口调用,点击of_helloworld服务接口的链接,会打开该服务器接口的一个说明和测试界面。在该界面中,详细描述了该服务接口的参数、返回值等信息。并提供了一个测试
12、的调用界面。在该界面输入函数的参数值,点击调用,可以返回函数的执行结果。,PB 客户端如何调用WebService?,PB是如何调用Windows API的?,必须知道API在那个动态库上面。User32, GDI等。 必须知道API的函数名称、参数列表和数据类型、返回值和数据类型 在PB中必须先进行声明,然后才能调用。,PB怎么调用WebService?,必须知道提供的WebService的服务地址。 必须知道服务的名称 必须知道服务调用的接口需要什么参数?返回什么样的数据 在PB中,先通过WebService的WSDL,生成代理对象。 在代码中实例化该代理对象,再通过SOAP向服务器进行发
13、送调用请求,服务器在执行完成之后,再结果传回客户端。,生成WebService的代理对象,新建一个传统的Win32 的Application 应用程序。,生成WebService的代理对象,在完成建立应用程序的向导后,新建一个Web Service Proxy的Project。也可以通过Web Service Proxy Wizard,采用向导式来进行建立。,生成WebService的代理对象,Deployment PBL,输入生成的代理对象的PBL文件,在生成该PBL文件之后,需要把该文件加入到应用程序的库文件列中表。 Clear Deployment PBL on project buil
14、d。设置在项目生成WebService代理对象时,是否清空该PLB文件里面原有的全部对象。,生成WebService的代理对象,输入WebService的WSDL地址。 http:/localhost:9001/helloworld/helloworld.asmx?WSDL 点击Service按钮,如果WebService可以正确生成WSDL,则会弹出该WebService提供的服务接口。选择需要生成的Service,点击OK.点击Desploy发布生成WebService的代理对象。,生成WebService的代理对象,在生成WebService代理对象时,有两种WSDL Engine方式,
15、一种是EasySoap,一种是.Net 。 EasySoap 使用比较简单标准的 SOAP方式调用WebService,速度比.net 方式来快很多。客户端的操作系统不需要安装.net FrameWork.但不支持.net开发的WebService的一些高级数据类型。如DataSet。EasySoap方式在生成代理对象时,新的对象名称跟服务器上原来PB的对象名称不同,是最大的缺点 .Net 生成.net程序集来调用WebService,速度比 EasySoapy方式来慢很多。而且客户端的操作系统必须安装.Net FrameWork。可以支持更多的数据类型,生成的代理对象名称,也与服务器原来的P
16、B对象名称相同。,调用WebService,把生成的代理对象PBL文件加入到应用的库文件列表中。如果是采用EasySoap方式,还需要把pbsoapclient115.pbd加入到库文件列表中。如果是采用.Net方式,还需要把pbwsclient115.pbd加入到库文件列表中。,调用WebService,服务器不可视用户对象,与客户端的代理对象名称,除了名称不同外,OF_HelloWorld函数的参数和返回值,都是一样的。,服务器端不可视对象,客户端代理对象,调用WebService,String ls_Url ,ls_Name SoapConnection conn /声明Soap连接对象
17、 HelloWorldSoap lnv_HelloWorld ls_Name = TRIM(sle_1.Text) IF ls_Name= Then MessageBox(提示,请输入姓名!,StopSign! ) sle_1.SetFocus() Return END IF /WebService地址 ls_Url =http:/localhost:9001/HelloWorld/HelloWorld.asmx Conn = Create SoapConnection /实例化Soap 连接对象 Conn.CreateInstance(lnv_HelloWorld, helloworldso
18、ap ,ls_Url) /实例化WebService代理对象 st_2.Text = lnv_HelloWorld.OF_HelloWorld( ls_Name) /调用WebService,并输出,参考图示新建一个Windows对象,在调用按钮的Click事件写入以下代码,并执行该窗口,检查WebService的执行结果。,WebService如何处理DataWindow?,深入了解DataWindow,DataWindow Style,DataWindow Syntax,Describe, Modify , Create ,SetSqlSelect,DataWindow Buffer,Re
19、trieve ,InsertRow, DeleteRow, SetFilter, Filter, RowsCopy ,RowsMove, RowsDiscard, GetItem, SetItem,DataWindow Item Status,AcceptText, SetIem, GetItemStatus, SetItemStatus, InsertRow, RowsCopy,如何把数据窗口从服务器传到客户端,需要传那些内容?Syntax? Data?ItemStatus?还是全部? 子数据窗口怎么处理?Nest类型和Composite类型的数据窗口怎么处理? 数据窗口保存在服务器端还是该
20、保存在客户端? GetFullState和SetFullState函数,如何把数据窗口从客户端传回到服务器端?,需要传什么内容?DataObject ? Syntax? Data ? Changes? 多个数据窗口都需要保存数据,怎么办? 数据窗口除了要保存数据,还需要根据数据窗口的内容,完成业务处理怎么办? 业务逻辑在客户端完成,还是在服务器端完成? GetChanges和SetChanges 如何再次返回数据窗口在服务器端修改的内容?,数据窗口数据传输的性能,只传所需要内容的最小数据包。根据不同的场景,传DataObject Name,Syntax, Data,Changes、FullSt
21、ate 数据压缩后再传输 记录分页显示 下拉数据窗口避免一次性检索太多记录 客户端缓存部分更新不频繁的数据,如何实现业务系统的多层架构设计,编程模式的演进,界面、代码、业务的混合开发模式 函数式编程模式 组件式编程模式 应用服务编程模式,多层架构开发模式,UI (User Interface) BL(Business Logic),DA (Data Access),DB(Database),中间应用服务层只作为数据库代理工具,多层架构开发模式,UI,DA、BL,DB(Database),中间应用服务层真正做为业务处理层,把WebService 做为数据库代理对象,合适吗?,把服务器中间层,做为数据库的代理对象,通用中层层访问数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年林芝市重点中学学业水平测试及答案含解析
- 2025-2026学年黑龙江省哈尔滨市哈尔滨风华中学第二学期期末学业质量阳光指标调研卷初三数学试题含解析
- 护理操作:肌肉注射方法详解
- 锤炼写作语言让文章更美
- 2026三年级数学上册 中间有0的退位减法
- 急救护理呼吸管理培训
- 心理咨询室安全责任制度
- 快递库房责任制度
- 意识形态责任制追究制度
- 执法办案区责任制度
- 提高住院患者护理宣教知晓率
- 收费站道口安全培训课件
- 废气运维工考试题及答案
- DB61 1226-2018 锅炉大气污染物排放标准
- 2025江苏常州溧阳市卫生健康系统农村订单定向医学毕业生定向招聘19人备考试题及答案解析
- 2025年海关总署公开遴选公务员面试模拟题及答案
- 中老年化妆课件
- 电机与电气控制技术习题汇编
- 腹腔引流管相关感染及预防
- 服装设计基础(第三版)课件:服装设计与面料
- 巡察临时支部管理办法
评论
0/150
提交评论