1

我需要为基于 HTML5 / Mobile 的回合制游戏开发一个相当可扩展的套接字服务器。

时间是其中的一个真正因素,因为我需要在 3 个月内制作出一些原型。我在 C# 方面拥有丰富的(多年)经验,而在 Node 或 Erlang 方面的经验为零,我将其选为该项目的完美语言。不幸的是,这两种语言都会有很多与之相关的学习曲线,比如代码质量、单元测试、可维护性等我没有经验,所以我想代码质量会很差。

为这个项目选择 C# 以节省开发时间是多么糟糕的决定,因为我将在可扩展性和未来的事情上更加头疼。

C# 是否被认真考虑用于现代 Web 应用程序套接字服务器?

4

2 回答 2

5

一个人可以在任何平台上编写糟糕的代码。或者好的代码。是的,您可以在 C# 中编写一个非常好的低影响、高度可扩展的服务器。但如果这是你写的第一个这样的东西(不管平台如何),你很可能无法有效地编写它,然后得出结论是平台的错。

例如,在 SO/SE 上驱动即时更新的 web-socket 服务器是用 c# 编写的,处理 60k+ 连接,几乎没有注册为任何 CPU。但它是为此而设计的,具有完全异步的网络访问、缓冲区回收、专用工作线程等。

实际上,如果您专门寻找 web-socket 代码,那么 Windows 8 上的 .NET 4.5 将包括通过 HTTP.SYS 的内置 web-socket 支持(显然,使用托管包装器),但可以手动完成。我什至可以分享我们为此编写的库。

于 2012-07-21T15:50:08.943 回答
2

短:的。

Long:c# 是静态类型的,它实际上被编译为本机代码(在 Windows 上),根据我的经验,速度简直太棒了。将其视为带有垃圾收集器的 C++ :-) 值类型 + 真正的泛型使事情比 Java 快得多,我也认为它足够好。

请注意,您不应该被基准游戏吓到,它使用 Mono。

如果你真的遇到麻烦,如果你真的需要它们,你可以不安全的操作。所以不用担心未来。

于 2012-07-21T15:13:44.607 回答