2009-06-22 3 views
0

Ich bin ein wenig müde von allen UI Demos der automatischen Vervollständigung in ASP.Net. Ich glaube, dass der UI-Teil der Autovervollständigung mehrmals wieder gelöst wurde.Strategien für AutoCompletion Web Services in .Net. Nicht UI konzentriert

Meine Frage ist, wie gehen Sie am besten mit den Abfragen Ihrer Webservices um? Ich implementiere derzeit einen Autovervollständigungsdienst für eine Musikerdatenbank. Die Datenbank ist mit nur 20.000 Zeilen ziemlich klein, aber Autovervollständigung ist extrem geschwindigkeitsabhängig. Es muss ziemlich unmittelbar sein, um irgendeinen Nutzen zu haben.

Ich verwende derzeit NHibernate für meine DAL, aber ich frage mich, ob dies ein Ort ist, an dem ich NHibernate umgehen möchte. Vielleicht wären Projektionen auf benannte Anfragen die beste Strategie? Wo kann ich cachen? NHibernate's 2nd Level Cache? Lassen Sie den Web-Service cachen?

Ich habe mir schon viele naive Methoden ausgedacht, um das zu entwickeln, aber ich würde gerne in irgendwelche Tipps eintauchen, die Leute bereits in der Wildnis haben. Was ist, wenn Sie viele verschiedene Arten von Entitäten haben, auf denen Sie eine automatische Vervollständigung wünschen? Verbreiten Sie diese Implementierungen in ihren verschiedenen Repositorys oder entwerfen/implementieren Sie einen vollständig separaten Autokomplettierungsdienst?

Antwort

1

Dies hängt davon ab, wie groß der Traffic Ihrer Website ist. Ich empfehle generell, ein Produkt wie MemCached oder MemCached Win32 zu verwenden, abhängig von der Verfügbarkeit Ihrer Umgebung (MemCached für günstige Linux-Boxen, wenn Sie können, ist das beste ... alles was benötigt wird, ist eine Menge Speicher!). Sie können sich auch etwas wie Velocity (das neue Cache-Cloud-Angebot von MS) ansehen. Dies würde es dann ermöglichen, einen Schlüssel (was immer die Abfrage ist) mit den Ergebnissen effizient zwischenzuspeichern! Behalten Sie die Cache-Zeiten im Hinterkopf, je nachdem wie häufig Sie das Dataset aktualisieren. Wenn Sie nicht oft aktualisieren, kann die Cache-Zeit länger sein. Wenn Sie feststellen, dass Ihre Cache-Cloud wie verrückt wächst, sollten Sie nur den Cache speichern, nach dem am häufigsten gefragt wird (obwohl Ihre Cache-Implementierung dies dadurch behandeln sollte, dass sie entfernt, auf was nicht häufig zugegriffen wird!).

+0

Was ich aus Ihrer Antwort entnehme, ist, dass es sehr wichtig ist, einen Cache zu haben? Die Website, über die ich spreche, bekommt ungefähr 50.000 Besucher pro Woche. –