Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
SyncFramework übers Internet
Cannon
myCSharp.de - Member



Dabei seit:
Beiträge: 282

Themenstarter:

SyncFramework übers Internet

beantworten | zitieren | melden

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

2. 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?

3. 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!!!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16145

beantworten | zitieren | melden

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 - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
suny
myCSharp.de - Member



Dabei seit:
Beiträge: 127
Herkunft: Thüringen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Cannon
myCSharp.de - Member



Dabei seit:
Beiträge: 282

Themenstarter:

beantworten | zitieren | melden

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"?
private Nachricht | Beiträge des Benutzers
suny
myCSharp.de - Member



Dabei seit:
Beiträge: 127
Herkunft: Thüringen

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
Cannon
myCSharp.de - Member



Dabei seit:
Beiträge: 282

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Cannon
myCSharp.de - Member



Dabei seit:
Beiträge: 282

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers