webservices.h) (WS_CHANNEL_ENCODER 结构

一个 结构,用于指定一组回调,这些回调可以转换已发送消息的内容类型和编码字节。

语法

typedef struct _WS_CHANNEL_ENCODER {
  void                                 *createContext;
  WS_CREATE_ENCODER_CALLBACK           createEncoderCallback;
  WS_ENCODER_GET_CONTENT_TYPE_CALLBACK encoderGetContentTypeCallback;
  WS_ENCODER_START_CALLBACK            encoderStartCallback;
  WS_ENCODER_ENCODE_CALLBACK           encoderEncodeCallback;
  WS_ENCODER_END_CALLBACK              encoderEndCallback;
  WS_FREE_ENCODER_CALLBACK             freeEncoderCallback;
} WS_CHANNEL_ENCODER;

成员

createContext

将传递给 WS_CREATE_ENCODER_CALLBACK的上下文。

createEncoderCallback

创建编码器实例 的WS_CREATE_ENCODER_CALLBACK 回调。

encoderGetContentTypeCallback

对消息进行编码时调用 的WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 回调。

encoderStartCallback

调用 WS_ENCODER_START_CALLBACK 回调以开始对消息进行编码。

encoderEncodeCallback

调用 WS_ENCODER_ENCODE_CALLBACK 回调以对消息进行编码。

encoderEndCallback

在对消息进行编码结束时调用的 WS_ENCODER_END_CALLBACK 回调。

freeEncoderCallback

释放编码器实例 的WS_FREE_ENCODER_CALLBACK 回调。

注解

WS_CHANNEL可能希望在发送消息之前压缩、修改或以其他方式转换消息的编码字节。 WS_CHANNEL_ENCODER提供必要的挂钩来截获和执行这些修改。

创建通道时,应使用适当的函数设置 WS_CHANNEL_PROPERTY_ENCODER

编码器回调的语法为:


encodercalls := create encoderloop* free
encoderloop  := getcontenttype
             |  getcontenttype encodestart
             |  getcontenttype encodestart (encode*)
             |  getcontenttype encodestart (encode*) encodeend

如果通道或编码器在写入消息时遇到错误,编码器可能无法看到消息的完整编码序列。 编码器必须准备好根据调用的回调处理到适当状态的转换。

WS_TCP_CHANNEL_BINDINGWS_CHANNEL_TYPE_SESSION 一起使用时,通道的内容类型是固定的。 在这种情况下, WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 必须为每个消息的内容类型返回完全相同的值。

当通道使用完编码器实例后,它将通过 WS_FREE_ENCODER_CALLBACK释放它。

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
标头 webservices.h