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

本文不讨论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实现日志行为。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • web service 相关 什么是Web Service? 答:从表面上看,Web Service就是一个应用程...
    niuben阅读 4,633评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,482评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,159评论 19 139
  • 转自:http://blog.csdn.net/jackfrued/article/details/4493113...
    王帅199207阅读 7,263评论 2 19
  • 他拿着酒瓶 坐在窗台上 俯视着淹没在黑暗里的水泥地 在那些孤独难捱的夜晚 谁还没产生过一两次跳楼的念头 秋风吹着...
    北冥飞鱼阅读 1,180评论 0 1

友情链接更多精彩内容