Hallo zusammen,
ich habe 2 Fragen zu dem Design einer Applikation bzw. genauer gesagt zu den sinnvollen Kommunikationstechnologien:
Also, ich möchte eine Art Dokumentenarchivanwendung implementieren. Dies soll eine Client/ Server Anwendung werden, d.h. ein Server, nahezu beliebig viele Clients gleichzeitig, die auf den Server zugreifen. Die Clients sollen im ersten Schritt Fat-Clients (Windows.Forms) sein. später soll auch ein Web-Frontend implementiert werden.
Der Client soll Dateien an den Server schicken können und diese mit zusätzlichen Such-Schlagworten (z.b. Autor, Kategorie etc.) versehen können. Über diese Attribute kann der Client später wieder nach den Dokumenten recherchieren und die Dateien vom Server "herunterladen".
Jetzt gibt es 2 wichtige Prämissen:
a) Der Client darf keine Datenbank abfragen selber machen. Der Client schickt eine abstrahierte Anfrage an den Server, der Server macht dann die Datenbankabfragen und liefert das Ergebnis dem Client zurück (z.B. als XML)
b) Client und Server dürfen nur über TCP/IP miteinander kommunizieren. (Also keine gesharten Verzeichnisse oder sowas)
Meine beiden Fragen:
1.) Zur Kommunikation von Client und Server bezogen auf die Metadaten (datenbankabfrage, Kommandos) habe ich mir gadacht, dass ich dies als Webservices implementiere. Das hat den Vorteil, dass ich den Server auch irgendwann mal in Java adaptieren könnte. .NET remoting wäre auch eine Möglichkeit. Was ist hier wohl am sinnvollsten?
2.) Wie sollte man in diesem Szenario den Dateitransfer vom Client zum Server und umgekehr implementieren? (Auch über Webservices als XML Stream?)
Wie würdet ihr das konzeptionell machen?
Vielen Dank im voraus.
Torsten
There are 10 diffent types of people in this world: Those who understand binary and those who don't....
Ich gehe davon aus, dass es sich um ein neues/zukünftiges Projekt handelt (Also keine bestehende Lösung vorhanden ist). Sollte ich damit richtig liegen, möchte ich Dir auf jeden Fall zu WCF (Windows Communication Foundation) raten. Das ist zwar noch nicht Released, aber bereits als Beta 2 der breiten Öffentlichkeit zugänglich gemacht worden. Es gibt auch eine GoLive-Lizenz (Diese gestattet den Einsatz der Beta 2 in produktiven Umgebungen, allerdings auf eigene Gefahr, also ohne Support!).
WCF wird zusammen mit Windows Vista released werden. Für speziell Dein Projekt sehe ich folgende Vorteile bei der Verwendung von WCF:*Sicherheitsfeatures (Verschlüsselung, Windows-Authentifizierung, etc.) sind fertig implementiert und müssen nur per App.Config aktiviert werden (Bei Dokumenten-Management ist Sicherheit sehr wichtig!) *Sehr gute Unterstützung von Streaming (Zum effizienten übertragen von Dateien über TCP/IP) *Verschiedene Transportmachnismen (binär über TCP, SOAP via HTTP, DCOM, MSMQ) können verwendet werden, ohne den Quellcode zu ändern
Hier gibts ein kostenloses Schulungsvideo zum Thema WCF: http://www.dotnetpro.de/community/downloads/dnptv16cd.wmv
XML würde ich nicht unbedingt für Datei-Streaming verwenden. Unnötiger Overhead. Wenn die Clients die Dateien nicht übers Internet (http) konsumieren müssen, bringt XML nix (außer weniger Geschwindigkeit).