基于ABAP Workbench创建并发布Web Service (1)
Web Service概述:
Web Service是一个独立的、模块化的、自我描述的application function或服务
•基于XML标准,可以使用标准互联网协议描述、使用、定位或调用这个application function
•每个Web Service都封装了一个可用功能,例如对供应商提供价格查询、检查ERP中一个对象的可用性、查询电话号码、运行信用卡检查、货币转换等等
•服务的提供着通常被称为Service provider
•对于Web Service而言,其服务提供者必须有一个相应的基于XML的描述,这就是WSDL文档
•原则上讲,服务可以使用任何一种程序设计语言实现
•基于HTTP传输协议,简单对象访问协议(SOAP)目前被确定为准标准访问协议
•对于C/S架构,服务提供者相当于服务器端
•当服务发布时,服务提供者将其自身的相关信息以及其提供的服务的相关描述传送到服务注册表(Service registry)
•服务注册表相当于Web Service的“黄页”
•服务注册表提供的仅是对Web Service的描述,形成独立于实现的抽象层,而实际的Web Service由服务提供者持有
•使用Web Service的一方被称为服务请求者(service requester)
•服务请求者可以是一个通过Web浏览器定位Web Service并使用的用户,更普遍的情况下,服务请求者是一个访问Web Service的应用程序
•应用程序也可以封装给服务请求,这样,应用程序可以在运行时动态生成Web Service客户端代理访问Web Service
•应用程序从服务注册表中有序存储的服务描述中获取必要的信息
•对于C/S架构,服务请求者相当于客户端
•Web Service支持各种应用程序对其进行调用,这就需要一种标准化的描述方式,Web Service描述语言(WSDL)能够很好地迎合这一需求
•此外,为了寻找正确的BP(business partner)和相应的服务,并使服务提供者尽可能简单地提供有效服务,使用UDDI(Universal Description, Discovery, Integration)是种有效的方式
•SOAP(简单对象访问协议)提供了一种在分散的分布式环境下调用Web Service的直接的标准
•SOAP基于XML语言定义,形式为Envelope,包含实际的XML消息和附加信息
•XML
•Extensible Markup Language(扩展标记语言)
•XML是一种通过互联网交换结构化文档的扩展标记语言
•XML文档越来越多地用在支持商业文档和信息的交换
•SOAP
•SOAP指定了一个包含了通过互联网协议HTTP(S)、SMTP或FTP传输的XML文档的包
•SOAP协议用于在分布式系统环境下调用Web Service
•一条SOAP消息由消息头和消息体组成
•消息头带有关于安全与事务的附加信息
•消息体是消息内容
•WSDL
•Web Service Description Language
•WSDL是基于XML的Web Service描述语言
•WSDL文档由服务名,使用服务时需要交换的消息,与指定传输协议的链接和Web Service的可用地址组成
•WSDL是UDDI的一个必要组成部分,并由UDDI使用
•UDDI
•Universal Description, Discovery and Integration
•UDDI是可通过互联网访问的基于Web的注册表
•注册表由WSDL格式的Web Service列表组成,用于定位这些服务
•UDDI不同于其他注册表服务,它仅引用而不存储文档或说明书
•Web Service的调用过程
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://d.hiphotos.baidu.com/space/pic/item/6a600c338744ebf8a9ebc9bed9f9d72a6159a79d.jpg)
•SAP在支持JAVA语言开发的SAP NetWeaver Developer Studio和支持ABAP语言开发的ABAP Workbench中提供了一个标准化的体系结构和用于创建Web Service的工具集
•可以用于创建Web Service的对象:
•BAPIs
•RFCs
•Enterprise JavaBeans(EJBs)
•Java classes
•SAP XI server proxies
•由ABAP实现的Web Service的SOAP请求使用ICF(Internet Communication Framework)进行处理
Web Services for SAP NetWeaver 7.0:
•经典的SAP R/3系统具有三层C/S体系结构:
•表示层
•应用层
•数据库层
•SAP NetWeaver Application Server在经典C/S技术基础上有了进一步的发展
•对SAP内核进行扩展,增加了一个新的处理单元:互联网通讯管理器ICM(Internet Communication Manager)
•ICM用于直接处理经由Web浏览器或HTTP协议创建的请求
•互联网通讯框架
•Internet Communication Framework(ICF)
•ICF为在SAP系统的work process中处理HTTP请求提供了环境
•ICF由ABAP类和接口组成,这些类和接口的基本对象可以被实例化
•这里,有两个重要接口值得一提:
•服务器端:IF_HTTP_SERVER
•客户端:IF_HTTP_CLIENT
可以使用T-CODE:SICF浏览HTTP Service Tree
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/0d338744ebf81a4ce5a84148d72a6059242da69d.jpg)
创建Web Service:
•命名规则:
•测试目的的程序以“Y”开头
•正式发布的程序以“Z”开头
•创建的Web Service需要指定所属的package,如果需要创建新的package,使用T-CODE:SE21
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/8644ebf81a4c510f6c5e4f9b6059252dd52aa59d.jpg)
输入要创建的package名,点击创建按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://g.hiphotos.baidu.com/space/pic/item/eaf81a4c510fd9f9618df8e8252dd42a2934a49d.jpg)
输入package的简短描述,点击保存按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/1b4c510fd9f9d72ad7febd9cd42a2834359bbb9d.jpg)
为package指定一个用于transport的Workbench request,点击继续按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/e61190ef76c6a7ef3aab05a7fdfaaf51f2de66a6.jpg)
如果需要新建request,点击新建按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/91ef76c6a7efce1b68a6654baf51f3deb58f65a6.jpg)
为要创建的request输入简短描述,点击保存按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://g.hiphotos.baidu.com/space/pic/item/77c6a7efce1b9d160b4a37e0f3deb48f8d5464a6.jpg)
这样,package就被成功创建了
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://a.hiphotos.baidu.com/space/pic/item/500fd9f9d72a60599d8a4c9b2834349b023bba9d.jpg)
需要注意的是,用于存放Web Service的package需要设置两个use access
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://b.hiphotos.baidu.com/space/pic/item/d8f9d72a6059252d6d8db085349b033b5ab5b99d.jpg)
点击创建按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/a6efce1b9d16fdfa58e16b6fb48f8c5495ee7ba6.jpg)
输入SAI_TOOLS,点击对勾按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://a.hiphotos.baidu.com/space/pic/item/cf1b9d16fdfaaf510b6e2c3e8c5494eef11f7aa6.jpg)
采用同样的方式添加use access SAPPINT
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://c.hiphotos.baidu.com/space/pic/item/d62a6059252dd42a9293ac2a033b5bb5c8eab89d.jpg)
点击保存按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://b.hiphotos.baidu.com/space/pic/item/9c16fdfaaf51f3de4d3f14e594eef01f3b2979a6.jpg)
为RFC创建Web Service:
•T-CODE:SE80
•任选一个包(并不是Web Service所属的包,所以无所谓),点击右键,启动Web Service创建向导
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/91ef76c6a7efce1b68a6654baf51f3deb58f65a6.jpg)
点击继续按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/242dd42a2834349bbf9cc304c9ea15ce37d3be9d.jpg)
输入要创建的Web Service名,简短描述和服务类型,点击继续按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://c.hiphotos.baidu.com/space/pic/item/fcfaaf51f3deb48f76e40c5ff01f3a292cf578a6.jpg)
输入RFC名,点击继续按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://f.hiphotos.baidu.com/space/pic/item/d52a2834349b033be612515b15ce36d3d439bd9d.jpg)
这一屏的checkbox如果选中
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/359b033b5bb5c9eaaa69ae62d539b6003bf3b39d.jpg)
在创建的Web Service中,RFC的名称会进行转换,单词首字母大写并删除下划线
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://e.hiphotos.baidu.com/space/pic/item/f2deb48f8c5494ee0cafa2982df5e0fe98257ea6.jpg)
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://g.hiphotos.baidu.com/space/pic/item/8d5494eef01f3a29d345784f9925bc315d607ca6.jpg)
这一屏的checkbox如果选中,在Web Service创建完成时会进行发布,否则,需要在创建完成后使用T-CODE:WSCONFIG进行发布
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://h.hiphotos.baidu.com/space/pic/item/95eef01f3a292df51f4e0194bc315c6035a873a6.jpg)
点击完成按钮
![基于ABAP <wbr>Workbench创建并发布Web <wbr>Service 基于ABAP <wbr>Workbench创建并发布Web <wbr>Service](http://a.hiphotos.baidu.com/space/pic/item/023b5bb5c9ea15cef6744d88b6003af33b87b29d.jpg)