2016-04-27 14 views
0

Ich verwende eine SQL CE (4.0) -Datenbank als lokalen Cache für Datensätze aus einer bestimmten Ansicht in einem SQL Server (Express 2014). Bei jeder Wiederholung meines Algorithmus möchte ich den lokalen Cache überprüfen und ihn mit den erforderlichen Datensätzen vom Hauptserver aktualisieren.Schnelle Übertragung von Zeilen zwischen Datenbanken

Meine aktuellen Lösungen serialisiert eine DataTable, die die Zeilen enthält (mithilfe des SyncFramework-Ersatzes) und bringt sie über WCF zum Deserialisieren und Einfügen in den Cache. Die Begründung war, dass nur ein einziger Port für WCF geöffnet werden muss. Das Problem ist, dass dies für meine Zwecke zu langsam ist.

Wenn ich die Single-Port-Anforderung entspanne, könnte ich bessere Leistung von einer anderen Methode bekommen?

+0

Web-API mit JSON und verwenden SqlCeBulkCopy, um schnell oder TableDirect ADO API auf Client einzufügen. – ErikEJ

Antwort

0

Nein, die Aktivierung von mehr als einem Port würde die Leistung der Datenübertragung oder -verarbeitung nicht erhöhen. Ein TCP-Port ist keine physische Ressource, die gestresst werden kann, sondern ein logisches Konstrukt, das einen bestimmten Prozess oder eine Art von Service identifiziert.

Einige Dinge, die Sie tun können, um die Leistung der Kommunikation zwischen Client und Server zu verbessern:

ein
  • Verwenden Sie viel schneller Bindung: Wie NetTcpBinding oder NetNamedPipeBinding.
  • Komprimieren Sie die Daten, bevor Sie sie an den Server senden, um weniger Informationen vom Client an den Server zu senden. (Die Verwendung einer DataTable ist möglicherweise nicht die beste Strategie).
  • Den Service-Aufruf asynchron durchführen. Sie warten also nicht auf eine Serverantwort, um auf dem Client weiterarbeiten zu können.
  • Feinabstimmung WCF, um mehr Verbindungen parallel zu akzeptieren.
  • Verwenden Sie Self-Hosting-Dienste, um den Overhead von IIS zu vermeiden, wenn Sie ihn nicht benötigen.
+0

Entschuldigung, ich glaube nicht, dass ich ganz klar war. Ich brauche nur den einen Port, da stimme ich zu. Ich suche nach grundlegend anderen Lösungen. Könnte ich direkt ADO über das Netzwerk tun? Dies würde die WCF-Serialisierung vollständig umgehen. – bbush

+0

Sie können direkt ADO tun und die Leistung wird sicher steigen. Aber das hängt von Ihren architektonischen Entscheidungen ab und hängt von Ihren nicht funktionalen Anforderungen ab. Eine Sache, die ich absolut empfehle, ist die Caching-Ebene zu abstrahieren, die die Caching-Strategie von den Geschäftsregeln trennt. So können Sie es später auf eine schnellere oder skalierbare Lösung umstellen, die Ihren Anforderungen entspricht. –

Verwandte Themen