请问关于XML的详细应用场景有哪些?

2026-05-27 08:011阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1369个文字,预计阅读时间需要6分钟。

请问关于XML的详细应用场景有哪些?

我们经常面对这类问题:整合不同平台或不同类库,这些类库可能来自不同的语言,甚至不同的操作系统。如何解决这类跨语言的交互问题呢?

1. 案例介绍 解决不同语言交互问题的方法有很多,以下是一个常见的解决方案介绍。

2. 解决不同语言交互的方法 - 使用中间件:通过中间件作为桥梁,将不同语言的应用连接起来。例如,使用消息队列(如RabbitMQ、Kafka)来实现异步通信。 - API网关:构建一个API网关,统一不同服务之间的接口,内部服务通过网关进行通信。 - 数据库交互:通过数据库作为数据存储和交换的媒介,实现不同服务之间的数据共享。 - 互操作框架:使用互操作框架(如Java的JNI、Python的ctypes)来实现不同语言之间的直接调用。

这些方法各有优缺点,具体选择应根据实际情况进行。

我们通常会面对这样的问题:整合不同平台或不同类库,这些类库可能来自不同的语言,甚至不同的操作系统。 如何解决这类棘手的问题呢?

请问关于XML的详细应用场景有哪些?

一.方案介绍

解决不同语言交互的方法有不少,对我了解的windows系统和.NET平台,有以下几种做法:

  • P/Invoke: 调用native cpp的方法,处在同一个内存区间,访问方便,但包装困难,可能抛出运行时异常。
  • 读写文件:通过一头读文件,一头写文件的方式实现交互。诸位别笑,本科时候我就用过这种方式解决问题。
  • 命名管道/socket: 通过字节数组的方式实现交互,命名管道是windows系统提供的功能,可提供安全快捷的程序间交互。socket不依赖于操作系统,只要给定包格式,在任何支持socket的语言平台下都能支持。但缺点也很明显,如果交互复杂,那么解析这种byte[]数组将会非常复杂而且难以维护。
  • RPC: 又称之为远程过程调用,也是我们今天的主角。

数据即程序,RPC说白了依旧是传递数据的过程,只是过程在代码上更像函数调用。如下图:

目前主流的RPC有两种: XML和JSON。 XML是曾经的主角,兼容性更好。但如今移动互联网要求数据流量要小,而XML的缺点也随之暴露出来,JSON由于节省数据(大大减少了包头和标记的开销),如今变得更受欢迎。新浪微博API,如今全部升级为JSON了。 RPC的实质是localhost:2567/"); Console.WriteLine("成功注册信道"); string ret = svr.HelloName("haha"); Console.WriteLine("调用helloName方法:" + ret); double result = svr.Sum(23, 18); Console.WriteLine("调用Sum方法:" + result.ToString()); XmlRpcStruct result2 = svr.GetStruct();

至于result2结构体,你可以通过调试来查看具体的运行结果。

在服务器端,可以看到调用所花费的流量和方法名称。

三. 其他

这里我们关注一些额外的问题:

1.流量

RPC的一种场景是本地不同程序调用,这种情况下速度很快。但在跨机器或是移动设备上,就必须考虑流量因素了。XML的“性价比”并不高:

<?xml version="1.0"?> <methodCall> <methodName>echo</methodName> <params> <param><value><string>Hello Chris</string></value></param> <param><value><i4>123</i4></value></param> </params> </methodCall>

实际的有用数据,仅占所有字节数的5%,甚至更少,除非是大批量的传输本文数据。如果是流量敏感,推荐使用JSON.

2. 性能

我们当然要关心,RPC在本机调用会有多快?和哪些因素敏感? 笔者配置是i7 2600K, 8GB DDR, Gbps网络适配器,VS的debug模式。在执行Sum操作时,一千次耗时4.3ms。 在执行更复杂的结构体传递(大概有20个double,三个string,两个int时), 千次耗时5.8ms。

因此,可以得知,XML的转换和解析几乎不耗时,建立连接后,执行一次在ms量级,对数据结构复杂程度不敏感,因此,若是实时性敏感应用,建议一次性多传些数据。

3. 兼容性

笔者发现,RPC的兼容性并不太好,在和JAVA采用RPC交互时,就遇到了困难,”XML解析异常”。JSON的的兼容性不见得比XML更好,实际操作更是问题多多。涉及RPC的社区,普遍文档较少,例子不全,出现问题也不好排查,更没有太多跨语言的RPC实例。因此,如果你能用P/Invoke, 还是推荐用直接调用的做法。 RPC肯定还是比byte流的socket方便很多。

四 .总结和源代码下载

RPC将原本复杂的数据传输问题简化了,使我们从复杂的数据包结构,JAVA和C的double编码和socket传输中脱离出来,提供了更简单方便的方案。但必须看到,它并不完善,我们只能一步步的探索。

另外想问一句,Unity3D的RPC是何种格式?

有任何问题,欢迎随时交流。

源代码下载:

files.cnblogs.com/buptzym/XML_RPC.rar


标签:问题整合

本文共计1369个文字,预计阅读时间需要6分钟。

请问关于XML的详细应用场景有哪些?

我们经常面对这类问题:整合不同平台或不同类库,这些类库可能来自不同的语言,甚至不同的操作系统。如何解决这类跨语言的交互问题呢?

1. 案例介绍 解决不同语言交互问题的方法有很多,以下是一个常见的解决方案介绍。

2. 解决不同语言交互的方法 - 使用中间件:通过中间件作为桥梁,将不同语言的应用连接起来。例如,使用消息队列(如RabbitMQ、Kafka)来实现异步通信。 - API网关:构建一个API网关,统一不同服务之间的接口,内部服务通过网关进行通信。 - 数据库交互:通过数据库作为数据存储和交换的媒介,实现不同服务之间的数据共享。 - 互操作框架:使用互操作框架(如Java的JNI、Python的ctypes)来实现不同语言之间的直接调用。

这些方法各有优缺点,具体选择应根据实际情况进行。

我们通常会面对这样的问题:整合不同平台或不同类库,这些类库可能来自不同的语言,甚至不同的操作系统。 如何解决这类棘手的问题呢?

请问关于XML的详细应用场景有哪些?

一.方案介绍

解决不同语言交互的方法有不少,对我了解的windows系统和.NET平台,有以下几种做法:

  • P/Invoke: 调用native cpp的方法,处在同一个内存区间,访问方便,但包装困难,可能抛出运行时异常。
  • 读写文件:通过一头读文件,一头写文件的方式实现交互。诸位别笑,本科时候我就用过这种方式解决问题。
  • 命名管道/socket: 通过字节数组的方式实现交互,命名管道是windows系统提供的功能,可提供安全快捷的程序间交互。socket不依赖于操作系统,只要给定包格式,在任何支持socket的语言平台下都能支持。但缺点也很明显,如果交互复杂,那么解析这种byte[]数组将会非常复杂而且难以维护。
  • RPC: 又称之为远程过程调用,也是我们今天的主角。

数据即程序,RPC说白了依旧是传递数据的过程,只是过程在代码上更像函数调用。如下图:

目前主流的RPC有两种: XML和JSON。 XML是曾经的主角,兼容性更好。但如今移动互联网要求数据流量要小,而XML的缺点也随之暴露出来,JSON由于节省数据(大大减少了包头和标记的开销),如今变得更受欢迎。新浪微博API,如今全部升级为JSON了。 RPC的实质是localhost:2567/"); Console.WriteLine("成功注册信道"); string ret = svr.HelloName("haha"); Console.WriteLine("调用helloName方法:" + ret); double result = svr.Sum(23, 18); Console.WriteLine("调用Sum方法:" + result.ToString()); XmlRpcStruct result2 = svr.GetStruct();

至于result2结构体,你可以通过调试来查看具体的运行结果。

在服务器端,可以看到调用所花费的流量和方法名称。

三. 其他

这里我们关注一些额外的问题:

1.流量

RPC的一种场景是本地不同程序调用,这种情况下速度很快。但在跨机器或是移动设备上,就必须考虑流量因素了。XML的“性价比”并不高:

<?xml version="1.0"?> <methodCall> <methodName>echo</methodName> <params> <param><value><string>Hello Chris</string></value></param> <param><value><i4>123</i4></value></param> </params> </methodCall>

实际的有用数据,仅占所有字节数的5%,甚至更少,除非是大批量的传输本文数据。如果是流量敏感,推荐使用JSON.

2. 性能

我们当然要关心,RPC在本机调用会有多快?和哪些因素敏感? 笔者配置是i7 2600K, 8GB DDR, Gbps网络适配器,VS的debug模式。在执行Sum操作时,一千次耗时4.3ms。 在执行更复杂的结构体传递(大概有20个double,三个string,两个int时), 千次耗时5.8ms。

因此,可以得知,XML的转换和解析几乎不耗时,建立连接后,执行一次在ms量级,对数据结构复杂程度不敏感,因此,若是实时性敏感应用,建议一次性多传些数据。

3. 兼容性

笔者发现,RPC的兼容性并不太好,在和JAVA采用RPC交互时,就遇到了困难,”XML解析异常”。JSON的的兼容性不见得比XML更好,实际操作更是问题多多。涉及RPC的社区,普遍文档较少,例子不全,出现问题也不好排查,更没有太多跨语言的RPC实例。因此,如果你能用P/Invoke, 还是推荐用直接调用的做法。 RPC肯定还是比byte流的socket方便很多。

四 .总结和源代码下载

RPC将原本复杂的数据传输问题简化了,使我们从复杂的数据包结构,JAVA和C的double编码和socket传输中脱离出来,提供了更简单方便的方案。但必须看到,它并不完善,我们只能一步步的探索。

另外想问一句,Unity3D的RPC是何种格式?

有任何问题,欢迎随时交流。

源代码下载:

files.cnblogs.com/buptzym/XML_RPC.rar


标签:问题整合