Frage

Ich habe ein .NET Winform Click-Once-Einsatz Fett-Client, der auf drei Datenbanken, 2 SQL Server-Datenbanken und Oracle einem spricht.

Die erste SQL Server-Datenbank, werde ich den Meister nennen. Ich wollte mehr Tabellen und Spalten an der Master-Datenbank hinzufügen, aber mir wurde gesagt, ich würde nicht Rechte zu tun gegeben werden, es sei nicht verhandelbar. Also habe ich beschlossen, eine neue SQL Server-Datenbank hinzuzufügen, die ich die Extensions Datenbank rufe zusätzliche Informationen zu speichern, die ich in dem Master platzieren möchte.

Da habe ich keine Rechte habe die Erweiterung Datenbank auf demselben Server wie der Meister zu stellen, habe ich die Erweiterung db auf einem anderen Server und erstellt einen db Link aus dem Extension-Datenbankserver den Datenbankserver Meister. Das erlaubte mir, Abfragen auszuführen, die die beiden Datenbanken überspannt. Ich hatte auch eine dritte Datenbank, eine Oracle ein, dass ich gelegentlich in Verbindung bringen würde.

Weil ich dachte, dass der Oracle-Datenbank verbinden Oracle-Treiber installieren erfordert wahrscheinlich nicht auf Endnutzer PC sein, habe ich beschlossen, die WinForm Client eine Web-Service aufrufen und den Web-Service würde die Ergebnisse zurück. Aus Gründen der Einheitlichkeit willen und weil mein Bauch sagte mir, dass die Datenbankzugriffe von einem Ort durchgeführt werden soll, nahm ich den gleichen Ansatz, wenn der Fat-Client auf die SQL Server-Datenbanken zu sprechen benötigt, nämlich, gingen sie über einen Web-Service.

Jetzt ist ich zu fragen, ob ich zu groß, indem zuerst traf eine Leistung nehme mit dem Web-Server anrufen und dann den Web-Server Aufruf der Datenbank statt Öffnung eine Verbindung auf dem PC des Benutzers im Fat-Client und Anschluss direkt an die SQL Server-Datenbanken. Beachten Sie, dass der App, die ich mich beziehe, ist eine inoffizielle Dienstprogramm, das den Zugang zu diesen drei Produktionsdatenbanken muss aber nicht erlaubt ist, tatsächlich in Produktion zu laufen, so dass ich vermute, dass die normalen Hochgeschwindigkeitsleitungen zwischen meinen Entwicklungs-Webserver und der Produktionsdatenbank hier nicht gelten.

Für die besten Leistungen, sollte meine Winform app eine Verbindung direkt mit den SQL Server-Datenbanken zur Gründung sein? Was die Abwägungen sind?

Ist es heute noch wahr, dass zusätzliche Treiber zu einer Oracle-Datenbank verbinden müssen oder sind das alles in dem .NET-Framework jetzt und es konnte direkt Datenbank auch die Oracle-Verbindung, auch wenn ich wollte?

Auch fand ich, dass der Link-Server ist langsamer als zwei separate DB-Verbindungen zu schaffen und die Daten zusammen bündeln. Meine besten Ergebnisse kam, als ich zwei initiiert eine Synchronisierung Abfragen und kombiniert dann die Daten zusammen, als ob sie von einer Abfrage mit einem db Link zurückgegeben wurde. Dies führt jedoch zu Wartungsprobleme und führte mich, diesen Ansatz zu bereuen, wenn ich die SQL ändern benötigt tun schließt sich über Datenbanken.

War es hilfreich?

Lösung

Ich habe seit Jahren Unternehmensanwendungen für Paare, die in der Entwicklung, und das hat ich denken, daß mittlere Ebene (Web-Service in Ihrem Fall) immer sinnvoll ist und direkt von einem UI DB verbindet, ist immer ein NO für mich. Ich glaube nicht, dass Sie eine falsche Entscheidung getroffen haben. Auf lange Sicht eine mittlere Ebene, die macht viel Sinn machen. Beachten Sie auch, dass der Web-Service, den Sie gebaut haben, kann von verschiedenen Anwendungen verwendet werden.

Andere Tipps

Ich weiß nicht, Ihre Leistungsanforderungen, sondern ein wcf Web-Service ist schnell. Ich sehe nichts falsch in eine mittlere Ebene mit (Ihrem Web-Service) für den Datenbankzugriff. Es ist auch sehr sicher.

Ich denke, wenn Sie den Oracle-Server als Verbindungsserver in Ihrem SQL-Server benötigen Sie keinen separaten Oracle-Treiber konfiguriert haben. Sie können nur Ihren SQL Server als Datenquelle verwendet werden.

Versuchen Sie gespeicherte Prozeduren erstellen schnelles Ergebnis zu erhalten. Wenn Sie SQL Management Studio verwenden, können Sie den Ausführungsplan überprüfen Sie Ihre gespeicherten Prozeduren zu optimieren (konfigurieren Indizes).

Ich glaube nicht, Webservices in diesem Szenario benötigt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top