第二十九章 类关键字 - PropertyClass
向该类添加属性参数。
用法
要向该类添加属性参数,请使用以下语法:
代码语言:javascript复制Class PropClass.MyClass Extends %RegisteredObject [ PropertyClass = PropClass.MyPropertyClass ] { //class members }
其中·propertyclasslist·是下列之一:
代码语言:javascript复制[ PropertyClass = PropClass.MyPropertyClass ]
- 用逗号分隔的类名列表,用括号括起来。
详情
如果需要添加自定义属性参数,请执行以下操作:
- 定义并编译一个定义一个或多个类参数的类。例如:
Class PropClass.MyPropertyClass
{
Parameter MYPARM As %String = "XYZ";
}
这些类参数在下一步中成为属性参数。
- 在定义属性的类中,指定
PropertyClass
关键字。
对子类的影响
子类继承这个关键字添加的自定义行为。如果子类为关键字指定了一个值,则该值会指定一个或多个为该类的属性指定参数的附加类。
第三十章 类关键字 - ServerOnly
指定此类是否被投影到Java客户端。
用法
要覆盖将类投影到Java
客户端的默认方式,请使用以下语法:
Class Sample.NewClass1 [ ServerOnly = serveronlyvalue ] { //class members }
其中serveronlyvalue
是以下值之一:
- 0表示可以投影此类。
- 1表示这个类不会被投影。
详解
如果该关键字为1
,则该类不会被投影到Java
客户端。如果该关键字为0
,则将投影该类。
对子类的影响
此关键字不是继承的。
默认
如果省略这个关键字,这个类如果不是存根就会被投影(但是如果是存根就不会被投影)。
第三十一章 类关键字 - Sharded
指定此类是否被分片。仅适用于包含分片集群的环境中的持久类。
用法
要将类定义为分片类,请使用以下语法:
代码语言:javascript复制Class MyApp.MyClass Extends %Persistent [ Sharded = 1 ]
{ //class members }
否则,省略此关键字。
详解
分片是一种水平扩展数据存储的机制。如果一个类被分片,该类的实例将分布在分片集群中任何已定义的数据节点上。
如果有一个分片环境,并且将一个类定义为未分片,那么该类的实例只存储在第一个数据节点上,尽管所有节点都可以看到该数据。
对子类的影响
这个关键字是继承的。
默认
如果省略这个关键字,类就不会被分割。
第三十二章 类关键字 - SoapBindingStyle
指定此类中定义的任何web方法使用的绑定样式或SOAP调用机制。仅适用于定义为web服务或web客户端的类。
用法
要指定此类中定义web method
使用的绑定样式,请使用以下语法:
Class MyApp.MyClass [ SoapBindingStyle = soapbindingstyle ] { //class members }
其中soapbindingstyle
是下列之一:
-
document
文档(默认)—默认情况下,此类中的web method
使用文档样式的绑定。
使用这种绑定风格,SOAP
消息被格式化为文档,并且通常只有一个部分。
在SOAP
消息中,<Body>
元素通常包含一个子元素。<Body>
元素的每个子元素对应于一个消息部分。
-
rpc
—默认情况下,此类中的web method
使用rpc
(远程过程调用)样式的绑定。
使用这种绑定风格,SOAP
消息被格式化为具有多个部分的消息。
在SOAP
消息中,<Body>
元素包含一个子元素,其名称取自相应的操作名称。这个元素是一个生成的包装元素,它为方法的参数列表中的每个参数包含一个子元素。
如果SoapBindingStyle
是文档,如果ARGUMENTSTYLE
是消息,那么消息样式与RPC
非常相似;
重要提示:对于手动创建的web service
,该关键字的默认值通常是合适的。当使用SOAP
向导从WSDL
生成web客户端或服务
时,InterSystems IRIS会将此关键字设置为适合该WSDL
;如果修改该值,web客户端或服务
可能不再工作。
详解
此关键字允许指定此类中定义的任何web method
使用的默认绑定样式。它影响SOAP
主体的格式(但不影响任何SOAP头)。
通过使用SoapBindingStyle
方法关键字或SoapBindingStyle
查询关键字,可以重写单个方法的绑定样式。
对子类的影响
此关键字不是继承的。
默认
默认值为文档。
与WSDL的关系
SoapBindingStyle
类关键字指定了WSDL
的<binding>
部分中<soap:binding>
元素的样式属性的值。例如,如果SoapBindingStyle
是文档,则WSDL
可能如下所示:
...
<binding ...>
<soap:binding ... style="document"/>
<operation ...>
<soap:operation ... style="document"/>
...
如这里所示,在WSDL
的<binding>
部分中,SoapBindingStyle
类关键字还指定了<soap:operation>
元素的样式属性的默认值;该属性由SoapBindingStyle
方法关键字进一步控制。
相比之下,如果SoapBindingStyle
是rpc
,则WSDL
可以改为如下所示:
...
<binding ...>
<soap:binding ... style="rpc"/>
<operation ...>
<soap:operation ... style="rpc"/>
...
绑定样式也会影响<message>
元素,如下所示:
- 如果绑定样式是文档,默认情况下,消息只有一个部分。例如:
<message name="AddSoapIn">
<part name="parameters" .../>
</message>
如果ARGUMENTSTYLE
参数是message
,那么一条消息可以有多个部分。例如:
<message name="AddSoapIn">
<part name="a" .../>
<part name="b" .../>
</message>
- 如果绑定样式是
rpc
,消息可以有多个部分。例如:
<message name="AddSoapIn">
<part name="a" .../>
<part name="b" .../>
</message>
对SOAP消息的影响
对SOAP
消息的主要影响是控制SOAP
主体是否可以包含多个子元素。
对于使用RPC
样式绑定和编码样式消息的web method
,下面显示了请求消息正文的示例:
<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<types:Add>
<a href="#id1" /><b href="#id2" />
</types:Add>
<types:ComplexNumber id="id1" xsi:type="types:ComplexNumber">
<Real xsi:type="s:double">10</Real>
<Imaginary xsi:type="s:double">5</Imaginary>
</types:ComplexNumber>
<types:ComplexNumber id="id2" xsi:type="types:ComplexNumber">
<Real xsi:type="s:double">17</Real>
<Imaginary xsi:type="s:double">2</Imaginary>
</types:ComplexNumber>
</SOAP-ENV:Body>
相比之下,下面显示了使用文字绑定和编码样式消息的web method
的请求消息正文的示例:
<SOAP-ENV:Body>
<tns:Add>
<tns:a xsi:type="tns:ComplexNumber">
<Real xsi:type="s:double">10</Real>
<Imaginary xsi:type="s:double">5</Imaginary>
</tns:a>
<tns:b xsi:type="tns:ComplexNumber">
<Real xsi:type="s:double">17</Real>
<Imaginary xsi:type="s:double">2</Imaginary>
</tns:b>
</tns:Add>
</SOAP-ENV:Body>
在这种情况下,SOAP
主体只有一个子元素。
与 %XML.DataSet
一起使用
对于 %XML.DataSet
, 类型的对象,并非所有 SoapBindingStyle
和 SoapBodyUse
关键字的排列都是允许的,,如下表总结:
type | supported? | supported? |
---|---|---|
空 | SoapBodyUse=literal(默认) | SoapBodyUse=encoded |
SoapBindingStyle=document(default) | supported | not supported |
SoapBindingStyle=rpc | supported | supported |