异构系统间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
2. 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 IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)