[技术回顾系列]-- 如何进行Soap消息的扩展

    为了增强WEBSERIVE的功能,对SOAP进行扩展是非常必要的。如对SOAP消息进行加密,解密等操作。使得开发人员可以灵活的对SOAP消息进行定制处理。

 那为了对SOAP进行扩展,我们需要了解什么?
1:理解WEB服务的生命周期
2:确认SOAP扩展的的时间段
3:需要重新几个方法
4:如何对SOAP消息进行配置

 对于理解WEB服务的生命周期
可以这样简单的理解:

对于SOAP扩展的的时间段

可以是在序列化之前和之后来修改SOAP消息以达到扩展的目的。比如我们可以实现这样的扩展:加密SOAP扩展在ASP。NET序列化客户端的参数之后加密SOAP消息,而在ASP。NET反序列化SOAP消息之前在WEB服务器上解密SOAP消息。对于时间段的选择可以通过一个枚举对象来控制:SoapMessageStage(AfterDeserialize,AfterSerialize,BeforeDeserialize,BeforeSerialize)根据具体情况可以任意选择在什么阶段进行扩展操作。
PS:SOAP扩展必须是客户端和服务器端同时进行修改。不能出现如我在客户端对SOAP消息进行加密,在服务端却不解密。这样是不行的。

扩展SOAP的整个实现过程概述
A:从SoapExtension派生一个类出来,这个是扩展的第一步;
B:重写基类的几个方法。有的是必须重写的(如ChinStream,这个是接受对流的   引用的唯一机会,而流可以用来获得将来SOAP消息的内容)
C:选在扩展阶段,就是时间段
D:对SOAP进行配置
对上面几项的补充说明:
重写的几个方法分别是:其使用方法见MSDN:
ChinStream,GetInitializer,Initialize,ProcessMessage
对SOAP扩展进行配置的两种方式是:配置文件,自定义特性
产品环境中使用配置文件的方式交多点。

posted on 2007-01-10 10:28  kim  阅读(997)  评论(0编辑  收藏  举报

导航