C# Java/C消息传递的REST体系结构性能
我目前有一个应用程序,它通过TCP套接字将XML从windows客户端发送到windows服务器 我们正在重写架构,我们的服务器将使用Java。我们正在研究的一种体系结构是http上的REST体系结构。因此,C#WinForm客户端将使用此命令发送信息。我们正在寻找高吞吐量和低延迟C# Java/C消息传递的REST体系结构性能,c#,java,rest,C#,Java,Rest,我目前有一个应用程序,它通过TCP套接字将XML从windows客户端发送到windows服务器 我们正在重写架构,我们的服务器将使用Java。我们正在研究的一种体系结构是http上的REST体系结构。因此,C#WinForm客户端将使用此命令发送信息。我们正在寻找高吞吐量和低延迟 与其他C#客户机到Java服务器的通信选项相比,是否有人对这种方法有任何性能指标。这并没有很好地定义,无法做出任何度量声明;消息有多大,您访问REST服务的频率有多高,是直接HTTP还是需要使用SSL来保护它?换句话
与其他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负载平衡器自由伸缩。我会设置一个测试来尝试一下。我知道您正在更改的应用程序的唯一部分是客户端/服务器通信。因此,请分析您现在发送的内容,并将一个测试客户机/服务器设置放在一起,发送消息,这些消息代表您认为最终解决方案将要做的事情(可能仅在大小/吞吐量方面具有代表性) 正如前一篇文章所指出的,没有足够的细节来真正判断表演会是什么样子
最好的解决方案是使用(比如)设置一些东西,并花一些时间测试各种场景。如果您正在设计一个解决方案,那么花几天时间研究性能(更不用说功能、开发的易用性等)是值得的我会设置一个测试来尝试并查看。我知道您正在更改的应用程序的唯一部分是客户端/服务器通信。因此,请分析您现在发送的内容,并创建一个测试客户端/服务器设置,发送消息,这些消息代表您认为最终解决方案将要执行的操作(可能仅在尺寸/吞吐量方面具有代表性) 正如前一篇文章所指出的,没有足够的细节来真正判断表演会是什么样子
最好的解决方案是使用(比如)设置一些东西,并花一些时间测试各种场景。如果您正在设计一个解决方案,那么花几天时间研究性能(更不用说功能、开发的易用性等)是值得的这将非常快,除非有大量并发客户端访问这些服务器。Java和.NET中的XML分解速度都在不断加快。如果您使用CLR2和Java 5或更高版本,您会很好。但当然,您仍然需要进行测试以验证 我们在实验室中测试了REST和SOAP事务,它们的速度比您想象的要快。每秒有数万条消息。少量生成XML消息的现代CPU很容易使千兆网络饱和。换句话说,网络是瓶颈(数据传输),而不是CPU(序列化和反序列化XML) 一个