在投资银行工作了近30年。我写了很多像这样的应用程序。您需要解决的基本问题可能不是实时性能,而是延迟和吞吐量。
这种情况下的延迟是关于减少网络延迟,语言选择不是很相关。
吞吐量是关于长时间持续的大处理能力,而性能是在短时间内非常大的处理能力。虽然在这种情况下语言选择比延迟更重要,但它通常不像您想象的那么重要。
在这两者中,通常最好先设计尽可能低的延迟。吞吐量问题可以通过各种技巧在以后的开发中解决,但是消除现有设计中的高延迟要困难得多。
所以我会在客户端和服务器上使用C#,至少对于概念验证而言。没有必要引入额外的复杂性(另一种语言)来解决不太重要的问题。
的 编辑 强> :我注意到你编辑了你的问题,说服务器需要在不超过1秒的时间内处理多达100K的消息。我怀疑你可以通过软件实现这一目标,但你可以通过使用来实现 软件和硬件的结合 。
如果你确实需要这种级别的低延迟(而且我在业务中30年内从未需要它),那么语言选择并不像具有非常高的带宽以及超级优化和并行化那么重要算法。但我首先会质疑要求看看它们的真正含义 - 我敢打赌这不是他们所说的。
我来看看Erlang吧!他们的架构似乎非常适合这样的应用程序。
现在,什么是“实时”应用程序的定义非常模糊。您的实时约束可能是几十个月,具体取决于应用程序,您对语言,操作系统和工具的选择都将取决于这些因素。
在这种情况下,我不明白为什么你不应该在服务器端使用C#。也许有一些你没有提到的限制因素,但从你所说的我认为没有理由在你的问题中引入第二语言。
你可以看看 自适应通信环境 ,这是一个用C ++编写高性能服务器的便携式服务器框架。 这个Stackoverflow发布 有一系列链接描述它并扇出各种资源。
目前,语言选择imo没有它在使用不需要大量处理能力的客户端/服务器应用程序时所使用的那么重要。只要您知道如何构建良好的体系结构,Java,C#,C / C ++将表现相似(显然本机语言将具有一些优势)。我会考虑易用性和每种语言可用的有用库量来做出决定。我不知道你的计算究竟需要什么或者你正在处理什么股票信息,但是看看图书馆和GUI开发工具并从那里开始......
如果您真的想要低延迟和高吞吐量,我建议您删除服务器内的任何数据处理(计算)。如果你真的想要/不需要在客户端进行计算,我会设置另一个服务器来提供派生数据的补充数据流。也就是说,您的计算值基于原始/原始Feed。
你在谈论什么样的计算?
您打算如何处理网络和网络堆栈中的吞吐量?你有延迟测量工具/嗅探器/ endace卡吗?
我也实现了这样一个系统,我认为RoadWarrior实际上总结得很好。
这是消息队列的一个极好的应用程序区域,如果您利用良好的底层MQ技术,我相信您几乎可以在任何编程语言,甚至更高级别的解释语言中满足您的吞吐量要求。
Dan的直觉回答是错误的,看看他发布的网站很清楚现在C ++(gnu / intel实现)如何胜过C实现
Scala,Erlang或Java。但我强烈建议使用Scala,因为它具有良好的语法和高可扩展性。