美文网首页
异构系统间Web Service通讯框架小结

异构系统间Web Service通讯框架小结

作者: _CHARSET | 来源:发表于2017-09-04 17:16 被阅读0次

    本文不讨论WS性能问题,也不讨论使用非框架方式比如TCP伪造HTTP协议等方式通讯,仅讨论在常见的系统间使用HTTP+SOAP通讯框架的方法以及雷区。

    本文大多数内容来自于某次在两个月内迁移完两个异构ESB产品后的思考。

    Java

    Java下可用框架比较多,一般获取(HTTP GET) WSDL文件然后框架动态编译,再POST服务。在不计较性能的情况下没有什么问题。如果获取到的WSDL中服务URL不可访问,则框架就会产生错误。如果不能修改源码改为直接POST方式,一种解决方案是将手工下载的WSDL和XSD文件(若有)放到一个目录,并且在properties文件中指定wsdlURL为file://协议并指向WSDL文件位置。

    Apache AXIS 1.4

    org.apache.axis.component.encoding.UTF8Encoder::writeEncoded方法针对大于0x7f的char都加码,如果一些C写的后端服务不能正确解析NC编码,收到内容为例如#xxxx;形式的时候,可以考虑将上述方法修改。

    Apache AXIS 2

    Apache CXF

    JAXB

    C/C++ Linux

    gSOAP

    对于C/C++来说,遇到最多的坑是随机的CoreDump/Segment Fault,一般情况是分配的内存没有清空导致的。gSOAP的使用要点:使用soap_malloc以后,一定要对获得的内存清空,使用memset或者bzero。

    还有如果不想在编译的时候加入DEBUG选项打印日志,或者说想自定义保存日志,则可以考虑使用gSOAP的logging插件。

    请参考:https://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.38

    Apache AXIS 2

    C/C++ Windows

    gSOAP

    WWS API

    使用WWS API对于Windows下的WS框架使用又多了一套备选方案。使用WWS API必须安装Windows SDK相应版本。在Windows 2003 Server SP2默认安装完Visual Studio以后虽然可以编写使用WWS API的代码并且编译成功,但是缺乏WebServices.DLL程序无法运行。

    请参考:https://msdn.microsoft.com/zh-cn/library/ee617176(v=vs.85).aspx

    .NET Framework

    相信大家对.Net Framework又恨又爱。

    WCF 使用配置实现日志行为:https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx

    Web Reference 扩展IEndpointBehavior,IClientMessageInspector实现日志行为。

    相关文章

      网友评论

          本文标题:异构系统间Web Service通讯框架小结

          本文链接:https://www.haomeiwen.com/subject/rjbejxtx.html