Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Java/C消息传递的REST体系结构性能_C#_Java_Rest - Fatal编程技术网

C# Java/C消息传递的REST体系结构性能

C# Java/C消息传递的REST体系结构性能,c#,java,rest,C#,Java,Rest,我目前有一个应用程序,它通过TCP套接字将XML从windows客户端发送到windows服务器 我们正在重写架构,我们的服务器将使用Java。我们正在研究的一种体系结构是http上的REST体系结构。因此,C#WinForm客户端将使用此命令发送信息。我们正在寻找高吞吐量和低延迟 与其他C#客户机到Java服务器的通信选项相比,是否有人对这种方法有任何性能指标。这并没有很好地定义,无法做出任何度量声明;消息有多大,您访问REST服务的频率有多高,是直接HTTP还是需要使用SSL来保护它?换句话

我目前有一个应用程序,它通过TCP套接字将XML从windows客户端发送到windows服务器

我们正在重写架构,我们的服务器将使用Java。我们正在研究的一种体系结构是http上的REST体系结构。因此,C#WinForm客户端将使用此命令发送信息。我们正在寻找高吞吐量和低延迟


与其他C#客户机到Java服务器的通信选项相比,是否有人对这种方法有任何性能指标。

这并没有很好地定义,无法做出任何度量声明;消息有多大,您访问REST服务的频率有多高,是直接HTTP还是需要使用SSL来保护它?换句话说,关于工作负载参数,您能告诉我们什么

(我一遍又一遍地谈到性能问题:除非你能告诉我一些关于工作量的事情,我不能——没人能告诉你什么会带来更好的性能。这就是为什么他们常说,在你实现之前,你不能考虑性能:这并不是说你不能思考性能,而是那些人。通常不能或至少不会考虑工作量。)


尽管如此,您只需查看要交换的消息数量,就可以做出一些很好的估计,因为TCP/IP的设置时间通常支配REST。REST在这里提供了两个优势:首先,TCP/IP时间通常支配消息传输,这在Apache或ligh等生产web服务器中得到了很好的优化第二,RESTful体系结构通过消除会话状态来增强可伸缩性。这意味着您可以仅使用简单的TCP/IP负载平衡器自由伸缩。

这并没有很好的定义,无法做出任何度量声明;消息有多大,您多久访问一次REST服务,是直接HTTP还是不需要o使用SSL保护它?换句话说,关于工作负载参数,您能告诉我们什么

(我一遍又一遍地谈到性能问题:除非你能告诉我一些关于工作量的事情,我不能——没人能告诉你什么会带来更好的性能。这就是为什么他们常说,在你实现之前,你不能考虑性能:这并不是说你不能思考性能,而是那些人。通常不能或至少不会考虑工作量。)


尽管如此,您只需查看要交换的消息数量,就可以做出一些很好的估计,因为TCP/IP的设置时间通常支配REST。REST在这里提供了两个优势:首先,TCP/IP时间通常支配消息传输,这在Apache或ligh等生产web服务器中得到了很好的优化ttpd;其次,RESTful体系结构通过消除会话状态来增强可伸缩性。这意味着您可以仅使用简单的TCP/IP负载平衡器自由伸缩。

我会设置一个测试来尝试一下。我知道您正在更改的应用程序的唯一部分是客户端/服务器通信。因此,请分析您现在发送的内容,并将一个测试客户机/服务器设置放在一起,发送消息,这些消息代表您认为最终解决方案将要做的事情(可能仅在大小/吞吐量方面具有代表性)

正如前一篇文章所指出的,没有足够的细节来真正判断表演会是什么样子

  • 您的消息结构/格式是否相同,只是通过HTTP而不是原始套接字
  • 是否要发送XML数据子集?处理大量XML可能会占用大量内存(例如,如果使用基于DOM的方法)
  • 您选择的REST框架将引入多少开销(希望很少,但目前我们还不知道)

  • 最好的解决方案是使用(比如)设置一些东西,并花一些时间测试各种场景。如果您正在设计一个解决方案,那么花几天时间研究性能(更不用说功能、开发的易用性等)是值得的

    我会设置一个测试来尝试并查看。我知道您正在更改的应用程序的唯一部分是客户端/服务器通信。因此,请分析您现在发送的内容,并创建一个测试客户端/服务器设置,发送消息,这些消息代表您认为最终解决方案将要执行的操作(可能仅在尺寸/吞吐量方面具有代表性)

    正如前一篇文章所指出的,没有足够的细节来真正判断表演会是什么样子

  • 您的消息结构/格式是否相同,只是通过HTTP而不是原始套接字
  • 是否要发送XML数据子集?处理大量XML可能会占用大量内存(例如,如果使用基于DOM的方法)
  • 您选择的REST框架将引入多少开销(希望很少,但目前我们还不知道)

  • 最好的解决方案是使用(比如)设置一些东西,并花一些时间测试各种场景。如果您正在设计一个解决方案,那么花几天时间研究性能(更不用说功能、开发的易用性等)是值得的

    这将非常快,除非有大量并发客户端访问这些服务器。Java和.NET中的XML分解速度都在不断加快。如果您使用CLR2和Java 5或更高版本,您会很好。但当然,您仍然需要进行测试以验证

    我们在实验室中测试了REST和SOAP事务,它们的速度比您想象的要快。每秒有数万条消息。少量生成XML消息的现代CPU很容易使千兆网络饱和。换句话说,网络是瓶颈(数据传输),而不是CPU(序列化和反序列化XML)

    一个