1. PRPC Web Service (SOAP Service DotNet Service)
1.1 为何使用 PRPC Web Service
PRPC提供方便简捷的SOAP集成接口,可以方便的让您的程序访问外部的SOAP服务,或者让自己的PRPC应用对外提供SOAP服务。
1.2 简介
相关概念:
Service Package: 该组件对外提供Service Method,所有在PRPC内部创建的SOAP服务都需要通过Service Package这个Rule对外暴露成单一的WSDL文件。
Service Activity: 当Service Rule获得一个SOAP请求时,Service Activity会被自动调用,一般来说这个Activity里面会做一些数据转换和简单的计算工作,作为Service的入口调用系统中的资源,并负责包装对外的返回值。
Service Client: 访问SOAP Service时所需的客户端。比如DotNet平台访问SOAP的程序,J2EE的SOAP访问程序等。这些客户端将会使用PRPC的Service Package提供的WSDL生成相应代码,用以访问PRPC的SOAP服务。
来自PRPC的帮助文档说明:
PRPC中的SOAP服务是指一个SOAP服务包对外提供一个或多个SOAP方法,每一个SOAP方法对应着一个SOAP服务Rule,该Rule又对应一个Activity,也即Service Activity。该Activity负责对传入以及传出的数据进行映射。当调用一个SOAP服务时,外部系统将数据封装在SOAP envelope中,并向PRPC的PRSOAPServlet发送访问请求,该Servelet由系统提供,专门负责将请求路由到相应的Service Package以及Service Rule。
1.3 SOAP Service创建步骤
1.3.1 环境以及Service Package
A. 工作Class
Work对象类
该类将被作为SOAP服务对应的Page类,在该例子中,我们将使用PROMIS-Work-GPN作为Work对象类。
B. service package (Data-Admin-ServicePackage)
创建一个用以容纳所有Service的Service Package,在本例中命名为”PromisServices”。在”Context”页上选择”Stateless”作为Process Mode。配置一个可以访问Service Class的Access Group作为Service Access Group。”Method”页面用于配置Service类型,”Deployement”页面则用来选择特定的Service Class以及用来生成WSDL。这两个页面将在Service Rule完全创建好之后进行配置。
1.3.2 SOAP service creation
A. 创建 Rule-Service-SOAP
Pic1 New SOAP service
创建一个新的Rule-Service-SOAP Rule
从”Customer Package Name”中选择Package Name。输入对应的Customer Class名字,以及方法名。Customer Class名字将在WSDL中显示为portType,而方法名则会显示为Operation名字,这两个参数将会被Service客户端使用。注意此处的Customer Class并非系统中的Class Rule,而是用户手输入的一个字段。
B. 配置 Service 页
Pic2 Service tab
配置Service页面
从”Page Class”字段下拉,选择一个Class作为当前Service的Service Class,该设置意味着当前Service所使用的一切资源来自于所设置的Service Class。在本例中设置Service Class为“PROMIS-Work-GPN”。
注意:如果想在Service Activity中使用某个Page,则需要在”Page&Classes”页面中给于该Page的定义。此例中使用的Page名字为”gpnPage”。
C. 配置Request页
Pic3 Request tab
配置Request页面
在Request页面中定义Request Header以及Request Parameter。所有在此处定义的字段将在自动生成的WSDL中显示为”Input Message”。”Name”字段将显示在WSDL中,并最终被SOAP客户端使用。此处的主要工作是映射输入字段,选择适当的Map To选项,将输入数据Map到目标位置。
D. 配置Response页
Pic4 Response tab
配置Response页面
该页面的功能与Request页面一样,被用于定义SOAP的回复消息。如果使用的是XML Page作为数据类型,那么Schema页将被用于对XML做解析。
1.3.3 生成WSDL以及Service客户端
A. 在Service Package中列出SOAP Service
Pic5 Methods tab of service package
打开Service Package Rule,选择Methods页,选择Service Type类型为Rule-Service-SOAP,点击“Show Service Methods”。系统将列出存在于当前Package中的所有该类型的Service Rule。
B. 发布Service
Pic6 Web service deployment
选择“Deployment”页,选择“Deployment Type”为“WSDL”,选择Service Class,即前面配置Service Rule时用到的Class。然后点击按钮“Generate Deployment File”;系统将自动产生WSDL的URL,并且部署到PRPC的服务器上。该URL将在后续开发中被SOAP消费者使用。
提示:如果在发布WSDL之后又对SOAP Service做了修改,当再次发布时需要清空缓存后再点击“Generate Deployment Files”以保证最新的版本发布到服务器上。
E. 在DotNet平台自动生成SOAP Service客户端
Pic7 Add web reference in DotNet
开始一个空的DotNet Solution和项目,然后使用”Add web reference”工具,配置好上面产生的URL,系统将自动生成相关客户端访问代码。后续开发可以基于自动生成的底层代码访问PRPC提供的SOAP服务。