Soap服务在现在的系统中的作用不可忽视,当然WCF把Soap服务扩展了些新的协议。按照传统的方式写Soap服务固然不错,但是在更新和发布方面也存在着一些传统的问题,而且在升级时通常无法做到热升级。

    那么能不能开发一个Soap服务的宿主,由这个宿主提供一个Soap服务的执行环境,并且提供更新Soap服务的定义并且提供隔离的执行环境,这样在升级时,就可以实现无缝的热升级。

    然后,自己写的Soap服务宿主的性能肯定比IIS之类的宿主性能要差,不过,由于很多企业级服务其实不是最关注性能方面的问题,因此,这方面应该不是大问题。

    另一方面,自己的宿主如果实现了一些合适的服务分派策略(例如:服务升级版本的指定生效时间),那么在热升级方面却有相当的优势。

    最后,用伪代码说说关于这个宿主的基本想法:

  • 管理方法:void DefineService(分派参数, 服务实现);
  • 执行方法:任意返回值 Exec(任意参数);

    其中,管理方法的实现应当类似于:

{

  检查分派参数冲突();

  保存服务实现();

  保存分派参数();

}

    而执行方法的实现应当类似于:

{

  获得分派参数中最匹配的一项();

  加载最匹配项的实现();

  using (隔离环境)

    return 服务实现(任意参数);
}

posted on 2011-05-28 13:17  Zhenway  阅读(305)  评论(0编辑  收藏  举报