Soap服务在现在的系统中的作用不可忽视,当然WCF把Soap服务扩展了些新的协议。按照传统的方式写Soap服务固然不错,但是在更新和发布方面也存在着一些传统的问题,而且在升级时通常无法做到热升级。
那么能不能开发一个Soap服务的宿主,由这个宿主提供一个Soap服务的执行环境,并且提供更新Soap服务的定义并且提供隔离的执行环境,这样在升级时,就可以实现无缝的热升级。
然后,自己写的Soap服务宿主的性能肯定比IIS之类的宿主性能要差,不过,由于很多企业级服务其实不是最关注性能方面的问题,因此,这方面应该不是大问题。
另一方面,自己的宿主如果实现了一些合适的服务分派策略(例如:服务升级版本的指定生效时间),那么在热升级方面却有相当的优势。
最后,用伪代码说说关于这个宿主的基本想法:
- 管理方法:void DefineService(分派参数, 服务实现);
- 执行方法:任意返回值 Exec(任意参数);
其中,管理方法的实现应当类似于:
{
检查分派参数冲突();
保存服务实现();
保存分派参数();
}
而执行方法的实现应当类似于:
{
获得分派参数中最匹配的一项();
加载最匹配项的实现();
using (隔离环境)
return 服务实现(任意参数);
}