Laden...

SyncFramework übers Internet

Erstellt von Cannon vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.842 Views
C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 10 Jahren
SyncFramework übers Internet

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:

  1. Synchronisierung mehrerer "Niederlassungen" über VPN:
  • Vorteil: einfach zu bewerkstelligen, Offline möglich
  • Nachteil: VPN-verbindung muss eingerichtet werden, was für eine gängige Anwendung kompliziert sein könnte
  1. Synchronisierung über Internet:
  • Vorteil: nichts einzurichten, Anwendung installieren und fertig
  • Nachteil: man braucht irgednwie eine Internetadresse - WCF-Service?
  • Frage: Was muss der Web-Anbieter bereitstellen? Gibt es kostenlose Lösungen? Lassen sich verschiedene Datenbank von verschiedenen Anwendern über eine Web-Site abwickeln?
  1. direkter Zugriff auf einem SQL-Server:
  • Vorteil: einfach zu installieren, keine Synchronisierung erforderlich, konsistente Daten
  • Nachteil: VPN erforderlich, stetige Verbindung nötig, evtl. langsam

Wie sieht ihr das Ganze. Könnt ihr mir Tipps geben? DANKE!!!

16.806 Beiträge seit 2008
vor 10 Jahren

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.

S
127 Beiträge seit 2004
vor 10 Jahren

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

  • Dynamische Auflösungen via DNS (DynDNS) = kostenlos
  • feste IP-Adresse = kostet bei den meisten ISP

Was hier die größte Herausforderung ist, ist die Sicherheit.

  • Wie sichert man den Transportweg ab?
  • Wie stellt man sicher das nur bestimmte Clients den Service aufrufen dürfen?

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

C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 10 Jahren

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"?

S
127 Beiträge seit 2004
vor 10 Jahren

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.

A
350 Beiträge seit 2010
vor 10 Jahren

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)

C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 10 Jahren

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:

  • unabhängig von einem eigenen Server oder anderer Hardware ink. VPN
  • MultiUser-Fähigkeit integrierbar, dass heißt verschiedene Unternehmen kämen mit Zugangsdaten + individuelle Nutzerlogins nur an ihre Daten ran
  • die Synchronisation kann als Option realisiert werden -> brauche ich das nicht läuft die Datenbank halt nur lokal

Geht das so? Ist das so realisierbar? Wäre die Sicherheit hier ein Problem?

A
350 Beiträge seit 2010
vor 10 Jahren

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

C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 10 Jahren

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.