<分区>
我需要为基于 HTML5/Mobile 的回合制游戏开发一个相当可扩展的套接字服务器。
时间是一个真正的因素,因为我需要在 3 个月内制作出一些原型(prototype)。我在 C# 方面拥有丰富(多年)的经验,在 Node 或 Erlang 方面的经验为零,我将它们选为该项目的完美语言。不幸的是,这两种语言都有很多与之相关的学习曲线,而且代码质量、单元测试、可维护性等方面我都没有经验,所以我认为代码质量会很差。
为这个项目选择使用 C# 来节省开发时间是多么糟糕的决定,因为我会在可伸缩性和后续的事情上遇到更多的麻烦。
对于现代网络应用程序套接字服务器,C# 是否被认真考虑可行?
一个人可以在任何平台上编写糟糕的代码。或者好的代码。是的,您可以用 C# 编写一个非常好的低影响、高度可扩展的服务器。但如果这是您编写的第一个此类内容(无论平台如何),您很可能无法有效地编写它,然后断定这是平台的错。
例如,在 SO/SE 上驱动即时更新的网络套接字服务器是用 c# 编写的,处理 60k+ 连接,并且几乎不注册为任何 CPU。但它是为此设计的,具有完全异步网络访问、缓冲区回收、专用工作线程等。
实际上,如果您专门寻找 Web 套接字代码,那么 Windows 8 上的 .NET 4.5 将包括通过 HTTP.SYS 的内置 Web 套接字支持(显然带有托管包装器),但它可以手动完成。我可能甚至可以共享我们为此编写的库。