Ich rate aus folgenden Gründen dringend davon ab, Client-Programme direkt mit einem Datenbankserver über das Internet zu verbinden:
- Client-Bibliotheken werden um die Annahme herum entworfen und gebaut, dass die Datenbank weniger als ein paar Millisekunden entfernt ist, insbesondere sehr geschwätzige Protokolle (MSSQL gehört dazu). Kurze Operationen können dadurch erheblich länger dauern.
- Es ist ein Sicherheitsrisiko, Sie setzen Ihren Datenbankserver nicht nur dem Internet aus, sondern betten auch Verbindungsdetails (z. B. Passwörter) in Ihre Anwendung ein.
- Es eignet sich nicht für Skalierbarkeit. Wenn Sie mehrere Load-Balancing- oder Failover-Datenbankserver einführen, müssten Sie Ihren Client neu schreiben.
- Es wird auch davon ausgegangen, dass es keine Verbindungsprobleme gibt. Viele Netzwerke (insbesondere mobile Netzwerke) schränken Aktivitäten außerhalb von Port 80/443 ein, um einen Missbrauch ihres Netzwerks zu verhindern (z. B. Angriffe durch Zombie-Benutzer).
Die ideale Lösung in diesen Fällen ist die Entwicklung eines Webservice-Frontends für Ihre Datenbank; Ihre Anwendung würde dann anstelle Ihrer Datenbank mit dem Webdienst verbunden. Dies hat weitere Vorteile.
Natürlich sollten Clients (insbesondere mobile Clients) einen Datencache verwenden, damit die Anwendung auch offline funktioniert.
Zurück zum Thema:Angenommen, Sie möchten immer noch eine direkte Verbindung herstellen, dann sehe ich nicht ein, warum die MySQL-Clientbibliothek unter 4.5 nicht funktioniert. Sie können das Manifest/die Konfiguration einer Assembly so ändern, dass sie auf zukünftigen Versionen von .NET CLR ausgeführt wird (Sie werden nur dann auf Probleme stoßen, wenn diese Bibliothek seitdem entfernte Typen und Member verwendet oder auf geändertem Verhalten beruht. Das .NET-Framework hat einen guten Ruf für Abwärts- und Aufwärtskompatibilität).