2010-05-24 6 views
14

Letzte Woche interviewte ich für eine Stelle bei einer TripleA MMORPG Spielfirma hier in NE. Ich habe den Job nicht bekommen, aber einer der Bereiche, die während des Interviews auftraten, war die Skalierbarkeit des Codes, den du schreibst und wie er früh im Design deiner Architektur und Klassen berücksichtigt werden sollte.Welche Best Practices können verwendet werden, um sicherzustellen, dass Ihr .NET-Code gut skaliert?

Leider habe ich nie viel über die Skalierbarkeit des .NET-Codes, den ich geschrieben habe, nachgedacht (Ich arbeite mit Desktop- und mobilen Anwendungen für Einzelbenutzer und unsere Hauptanliegen sind normalerweise Gerätespeicher und Datenraten Übertragung). Ich bin daran interessiert, mehr über das Schreiben von Code zu lernen, der gut skaliert, so dass er eine große Anzahl von Remote-Benutzern in einer Client-Server-Umgebung, speziell MMORPGs, verarbeiten kann.

Gibt es Bücher, Websites, Best Practices usw., die mich dazu bringen könnten, dieses Thema zu erforschen?

Antwort

3

Nur ein Punkt möchte ich hier hervorheben. Cachiere einfach deine Reads. Erarbeiten Sie eine geeignete Zwischenspeicherungsrichtlinie, bei der Sie bestimmen, welche Objekte zwischengespeichert werden können und für welche Zeiträume. Durch eine verteilte Caching-Farm werden die DB-Server entlastet, was sich positiv auf die Leistung auswirkt.

Auch wenn Sie nur einige Daten für ein paar Sekunden zwischenspeichern - in einem Szenario mit sehr hoher Auslastung und mehreren Benutzern - können Sie davon profitieren.

6

Hier einige Orte sind zu starten:

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

Insbesondere http://highscalability.com voll ist oder Artikel zu großen Websites, die Skala und wie sie es tun (Digg, Flickr, Facebook, YouTube, ...)

+0

+1 diese Seite ist großartig. Voller sehr interessanter Artikel über die Architektur großer Websites –

1

Wenn Sie nach physikalischer Validierung suchen, was ich normalerweise finde, hilft dabei, einige prototyping zu tun. Dies gibt Ihnen eine gute Idee für alle unvorhergesehenen Probleme, die in Ihrem Design liegen könnten und wie einfach es ist, es hinzuzufügen. Ich würde versuchen, alle möglichen Designmuster anzuwenden, um zukünftige Skalierbarkeit zu ermöglichen. Elements of Reusable Object-Oriented Software ist eine gute Referenz dafür. Here sind einige gute Beispiele, die vor und nach Code mit Design-Mustern zeigen. Dies kann Ihnen dabei helfen, zu visualisieren, wie Entwurfsmuster Ihren Code besser skalieren können. Here ist eine SO-Post über bestimmte Entwurfsmuster für Software-Skalierbarkeit.