Ich möchte gern Datenbanken synchronisieren. Ich habe, glaueb ich verstanden wie das funktioniert. Dazu gibt es ja bei Microsoft genug Informationen. Allerdings bin ich nicht sicher, ob die Lösung die optimale ist, denn verschiedene Szenarien haben ja ihre Vor- und Nachteile:
Wie sieht ihr das Ganze. Könnt ihr mir Tipps geben? DANKE!!!
Variante 1: ich sehe keine technische Erklärung. Du sagst nur über mehrere Niederlassungen, aber keinen Umsetzungsvorschlag außer VPN, was nur das Medium darstellt.
Variante 2: Keine plausible Erklärung, vermute aber Du meinst, dass Du einen Service als Zwischensicht einführen willst.
Ja, natürlich kannst Du irgendeinen Dienst dafür verwenden, um Daten zu replizieren.
Variante 3: direkter Zugriff von was?
Erklär doch erst mal, was Du hast und was so durch die Gegend geschickt wird. Muss sequenzieller Zugriff garantiert werden, oder darfs Kollisionen geben?
Hast Du eine Client-Anwendung, die auf einen SQL Server zugreifen muss, oder was hast Du überhaupt? Was zwingt Dich, eine Replikation zu nutzen? Die Bandbreite? Die IOs?
Es kommt auf Deine Umgebung und auf Deine Anwendung an, zu was ich tendieren würde. Vielleicht brauchst Du aber diese Replikation gar nicht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Cannon,
da du nicht genau dein Szenario erklärst, gehe ich davon aus dass du eine verteilte Anwendung erstellen musst, die in verschieden Standort der Firma laufen soll.
@Variante 1)
Auch hier benötigst du eine IP-Adressen Auflösung (siehe Variante 2) um eine VPN Verbindung aufzubauen. Stellt aber einen hohen administrativen Aufwand dar.
@Variante 3)
Hiervon würde ich dir aus Sicherheitsgründen abraten, hier muss mind. eine VPN Verbindung da sein über den der Datenaustausch läuft. (siehe Variante 1).
@Variante 2)
Das ist an sich die die flexibelste Lösung. Die Datensynchronisation kann dann über verschieden Techniken laufen. (SQL Server Mergereplikation with Websyncgronisation, Sync Framework, ...)
Auch hier benötigst du eine IP-Adressen Auflösung, die kann man über verschiedene Wege erreichen
Was hier die größte Herausforderung ist, ist die Sicherheit.
Hier würde ich das Geld für ein SSL Zertifikat ausgeben, damit hat man schon mal eine gewisse Grundsicherheit drin.
Ein Webservice ist in der Architektur eine Fassade, der Client interessiert sich nicht für die Implementierung hinter der Fassade. Somit kann man die Speicherung der Daten leicht ändern (Dateibasiert oder unterschiedliche Datenbankmanagementsysteme).
Hier zwei Links zu einem Blog der sich mit den Sync Framework beschäftigt.
http://blogs.msdn.com/b/ploeh/archive/2008/08/26/n-tier-synchronization-with-the-sync-framework-and-wcf-channelfactory-part-1.aspx
http://blogs.msdn.com/b/ploeh/archive/2008/08/27/n-tier-synchronization-with-the-sync-framework-and-wcf-channelfactory-part-2.aspx
Entschuldigung, dass ich mich nicht ganz klar ausgedrückt habe. Ja, es geht um eine verteilte Anwendung, also eine Anwendung, die mehrere Clients für den Datenzugriff besitzt und die Daten sollen entweder Zentral oder verteilt gespeichert werden, aber überall synchron sein. Die Umsetztung war, wie schon im Titel benannt mit dem SyncFramework gedacht .. nur ist halt die Frage ob das überhaupt sinnvoll ist. Da die Daten möglichst zeitnah aktuell sein sollen und der Datenzugriff auch recht flott sein soll. Es geht hauptsächlich um Textdaten und u.U. kleine Bilder.
Die VPN-Verbindung inkl. IP-Netz stellt bei mir die Fritz!Box her. Allerdings kann nicht bei jedem Nutzer der Anwendung vorausgesetzt sein, dass eine Fritz!Box, geschweige denn ein VPN-Netzwerk vorhanden ist.
Wenn ich es richtig verstanden habe, ist der Weg der Synchronisation und nicht der des direkten Zurgiffs empfohlen? Und auch dazu benötige ich eine "feste IP"?
Ja, ich würde eine Synchronisation verwenden.
Bei allen 3 Varianten benötigst du eine feste IP-Adresse oder zumindestens eine Namensauflösung für deine dynamische IP-Adresse. Du hast ja eine Fritz!Box, diese kann schon verschiedene Dienste ansprechen, die deine dynamische IP-Adresse in einen Namen umwandeln können (DynDNS ist einer dieser Dienste.).
Dein Client muss ja eine Verbindung zu dem Service aufbauen, egal ob das der Web-Service oder der VPN-Service oder der Datenbank-Service ist. Hier für benötigt der Client die IP-Adresse, die kann durch eine Konfiguration vorgegeben sein oder durch eine Dynamische Namensauflösung (DNS) ermittelt werden.
Das Problem ist immer der Datenschutz.
Sollen Daten über Personen ausgetauscht werden NUR über VPN
Alle anderen Daten können auch, entsprechend abgesichert, über einen Webservice abgerufen werden.
Trotzdem brauchst du eine Domain/feste IP die öffentlich verfügbar ist.
Für VPN eine gute/potente gegenstelle (Bitte keine Fritzbox die macht bei 2 VPN IPSec Probleme)
Aber was ist denn mit den ganzen tollen Anwendungen (CMS), die direkt im Internet laufen? Da werden doch die Daten auch irgendwo auf einem Web-Server gespeichert und die Sicherheit läuft mittels Verschlüssung und Zugangsdaten.
Wäre hier nicht die Lösung einfach eine WebSite mit Datenbank zu mieten (Hosting-Anbieter gibts ja genug), die NET-Anwendung mit einer lokalen Datenbank z.B. SQL-Server Compact zu betreiben und die notwendigen Daten dann ins Web und zurück zu synchronisieren?
Folgende Vorteile (für mich) hätte die Lösung:
Geht das so? Ist das so realisierbar? Wäre die Sicherheit hier ein Problem?
Im Grunde musst du, egal ob VPN genutzt wird oder nicht, dich trotzdem um die Socherheit deiner Anwendung kümmern.
Wenn du also eine Webplattform aufbaust musst du Usermanagement etc implementieren.
Und auch auf so Sachen wie SQL Injection etc. achten.
Also: Möglich JA, aber bitte Absichern 😉
Grüße
Danke für die Tipps. Ich glaube nachher ist die Sicherheit das größte Problem. 😉
Gibt es da Quellen zum Usermanagement? Denn grundsätzliches Usermanagement habe ich ja schon jetzt in der DB (lokal) eingebaut, sprich ich muss mich anmelden um die Daten zu sehen. Allerdings ist die Sicherheit in meiner Client-Anwendung und nicht in der Datenbank. Denn theoretisch könnte ich aktuell von außen auch ohne Anwendung auf die Daten zugreifen.
Im Grund wäre zu überlegen, ob der Aufwand lohnt ... die Entscheidung muss jetzt fallen, denn im einfachsten Fall habe ich nur eine Anwendung die mittels SQL-Server im lokalen Netzwerk laufen kann und so dennoch mehrere Nutzer zulässt. Mit Erweiterung des Netzwerkes über VPN wird die Reichweite sicherlich größer und ich muss mir nicht zu große Sorgen wegen der Sicherheit machen, da der VPN-Tunnel das absichert.
Die spannendste Variante ist sicherlich die Web-Lösung, auch wenn ich eine generelle Web-Plattform eigentlich vermeiden will und nur die Datenbank im Webspace hosten will. Aber sie ist zukunftsträchtiger und gibt mir die Möglichkeit die Anwendung auch für Silverlight und Mobile Geräte zu erweitern, was mit der "lokalen" Lösung nicht machbar ist. Dem entgegen steht wieder ein höheres Sicherheitsrisiko.