确保.NET代码可以很好地扩展的最佳实践有哪些?

时间:2010-05-24 19:26:13

标签: c# .net scalability

上周,我在NE的一家TripleA MMORPG游戏公司采访了一个职位。我没有得到这份工作,但在访谈期间提出的一个方面是关于您编写​​的代码的可伸缩性以及在架构和类的设计中应该如何考虑它。

可悲的是,我从未想过我编写的.NET代码的可扩展性(我使用单用户桌面和移动应用程序,我们主要关心的是设备内存和数据传输速率)。我有兴趣学习更多关于编写可以扩展的代码,以便它可以处理客户端服务器环境中的各种远程用户,特别是MMORPG。

是否有任何书籍,网站,最佳实践等可以让我开始研究这个主题?

3 个答案:

答案 0 :(得分:6)

以下是一些开始的地方:

http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html

http://www.cs.cornell.edu/people/~wmwhite/papers/2009-ICDE-Virtual-Worlds.pdf

特别是,http://highscalability.com已满或有关于扩展的大型网站以及他们如何做到的文章(Digg,flickr,facebook,YouTube,...)

答案 1 :(得分:3)

我想在此强调一点。只是缓存你的读物。制定适当的缓存策略,确定哪些对象可以缓存以及哪些时间段。拥有分布式缓存服务器场将减轻数据库服务器的负担,这将极大地提高性能。

即使只是将一些数据缓存几秒钟 - 在一个非常高负载的多用户场景中 - 将为您提供实质性的好处。

答案 2 :(得分:1)

如果您正在寻找物理验证,我通常会发现有助于做一些prototyping。这通常可以让您了解设计中可能出现的任何无法预料的问题,以及添加到设计中的难易程度。我会尝试应用任何可能的设计模式以允许未来的可伸缩性。 Elements of Reusable Object-Oriented Software是一个很好的参考。 Here是使用设计模式在代码之前和之后显示的一些很好的示例。这可以帮助您直观地了解设计模式如何使您的代码更具可扩展性。 Here是关于软件可伸缩性的特定设计模式的SO帖子。