Clientzugriff auf SQL server über das Internet

Hat jemand irgendwelche Meinungen über die besten Möglichkeiten, um einen Client mit SQL server zu verbinden, um data zu erhalten.

So sagen wir, ich habe ein C # DataGridView in einem Winform nicht auf dem internen Netzwerk und ich muss es mit einer Menge von data laden.

Zur time, um auf die data zuzugreifen, rufen wir eine Komponente SQLDataAdapter im Client auf, die eine Verbindung zum SQL server öffnet, lädt ein DataSet und schließt dann die db-Verbindung. Dies ist mit SQL server-authentication und es gibt viele Anwendungen, die über das Internet, das die gleiche Weise zur gleichen time.

Also möchte ich die security erhöhen und die performance nicht beeinträchtigen. Welche dieser Optionen oder andere Optionen soll ich anschauen?

– Verbinden Sie die gleiche Weise, aber halten Verbindungen offen für Dauer der Benutzer time in der App.

-Create WebServices server und Pass-Dataset oder Sammlung an Client.

– WCF-server erstellen und mit db verbinden. (LINQ, identifizieren Framework, ADO.NET …?)

-Create sowohl WebServices und WCF-server, Client verbindet sich mit WCF, die data von WSE-server, die Verbindung zu SQL server und übergibt Sammlung oder Dataset zurück an Client

Persönlich mag ich die letzte Option das Beste aus wenigen Gründen. 1. Es wäre einfach, die Komponenten zu nehmen, die wir bereits gebaut haben und sie in Web-Services ablegen. 2. Es würde uns erlauben zu stoppen, dass unsere ASP.NET Webseiten direkt auf die database zugreifen, aber über den Web Services server (ASMX zu ASMX = gut?) Verbinden. 3. Wir könnten besser kontrollieren, welche data auf uns zugegriffen und außerhalb unseres Netzwerks vergeben werden. Und wir müssen nicht mehr in unseren Anwendungen zusammenhängen.

Hat jemand Erfahrung mit diesen oder eine Kombination dieser Optionen? Ich bin etwas vorsichtig, weil ich Horrorgeschichten über server gehört habe, wie dies Trichter ist, wenn es kein Problem gab, nur direkt mit SQL server zu verbinden.

Vielen Dank

Jason Stone

Meiner Meinung nach brauchst du einen ziemlich überzeugenden Grund, um direkte Verbindungen zu deiner database von außerhalb deines Netzes zu ermöglichen. Ermöglichen Remote-Sql-Verbindungen kann ein großes securitysrisiko sein, wenn nicht richtig gemacht. Die Branche lernte dies auf dem harten path mit dem Sql Slammer Virus etc …

Winforms / Wpf Client App -> WCF -> database funktioniert wirklich gut in der realen Welt. Auch das Verbergen von datazugriff hinter einem Dienst für Ihre Remote-Apps ermöglicht es Ihnen, Ihre database und verwandte objecte ohne Client-Änderungen zu ändern, solange die dataform, die hin und her vergangen wird, gleich bleibt.

Auf der anderen Seite sollten alle Apps, die viele gleichzeitige Benutzer aus einer logischen Instanz (wie zB Webanwendungen / Websites) bedienen müssen, direkt mit der database verbinden.

In beiden Fällen sehe ich nicht wirklich den Wert von mit einem anderen Satz von Web-Services, um die database aus Ihrem WCF und Web-Apps zu verstecken, es sei denn, wir reden über eine riesige disparate Enterprise-System.

Haben Sie die ADO.NET DataServices (früher bekannt unter Codename "Astoria") ausgecheckt ?

Es ist eine Technologie, die auf der Oberseite der WCF mit der ganzen Güte von WCF aufgebaut ist, die Ihnen erlaubt, ziemlich leicht (aber selektiv und sicher) ein datamodell (typischerweise ein ADO.NET Entity Framework model, aber Linq-to-SQL oder andere Technologien) auszusetzen Arbeit, auch) als RESTful Service zum Internet.

Sie haben die volle Kontrolle darüber, welche Teile Ihrer database tatsächlich im model dargestellt sind, und dann haben Sie verschiedene Zugriffsebenen im model – Sie können das Lesen für collections zulassen (zB eine list aller Produkte lesen) oder einfach nur lesen Artikel, oder sogar Dinge wie Updates, Einfügungen oder Löschungen – alle unter Ihrer Kontrolle.

Mit der REST-interface, mit dem es einfach auf eine gegebene URL zu surfen und dann bohren oder verknüpfen über das model von dort aus.

Es gibt auch eine Client-Side-API zu verwenden, so können Sie ganz einfach und schnell Ihre data anzeigen und bieten die Benutzer-Navigation innerhalb der data. Sie sollten unbedingt das PDC08-Vortrag über die Entwicklung von Anwendungen mit datadiensten mit Mike Flasko und Offline-fähigen datadiensten und Desktop-Anwendungen mit Pablo Castro überprüfen.

Definitiv eine gute Idee und eine sehr schnelle und doch sichere Art, Ihre data ins Internet zu bekommen! Hör zu.

Marc

Was @Auger sagte, plus, bekommen Sie sich ein SSL-Zertifikat und server alles über HTTPS. Auf diese Weise ist es sicher und es wird von IIS auf einem niedrigen Niveau behandelt, also weißt du, dass du die beste performance bekommst.