Hi@all,
hab da mal wieder ne Frage =).
Was ist schneller? Warum? und Wieviel?
Clientapplikation greift direkt auf einen MSSql 2005 Server mittels LinqToSQL oder NHibernate zu,
Client greift auf einen Server mit WCF zu um sich die Daten aus der DB zu holen. Der Server holt die Daten mittels Linq oder NHibernate aus der Datenbank und stellt sie mittels WCF zur verfügung.
Ich würde gerne WCF benutzen:
Welche Nachteile hätte ich mit WCF gegenüber dem direkten Datenbankzugriff?
Möglichkeit 1 habe ich schon ausprobiert. Mein Hauptproblem hierbei ist, dass man so keine Datensätze auf vernünftigem Weg sperren kann!
Bevor ich mich jetzt in Möglichkeit 2 stürze wollte ich mal eure Meinungen hören.
Oder ist eine Kombination aus beidem denkbar / sinnvoll?
Hallo Fracoon,
im Allgemeinen ist der direkte Zugriff auf den SQL Server deutlich schneller. Die Abfrageergebnisse müssen nur einmal übers Netzwerk versendet werden. Nämlich vom SQL Server zum Client. Bei einem zwischengeschaltetem Applikationsserver müssen die Abfrageergebnisse zuerst zum Applikationsserver transportiert und anschließend zum entsprechenden Client. Das ist per Faustregel schon mal der doppelte Netzwerkverkehr. Hinzu kommt, dass der Applikationsserver die Daten noch parsen und verarbeiten muss. Wenn jetzt noch ein XML basiertes Transportprotokoll (z.B. SOAP) eingesetzt wird, blähen sich die Daten nochmals um einiges auf, was die Netzwerklast weiter erhöht. Applikationsserver sind deshalb generell langsamer, als ein direkter Datenbankzugriff.
Trotzdem ist eine n-Tier Architektur erstrebenswert. Wer nur schnell ist, ist sonst nämlich gar nichts. Ich stelle mir ein n-Tier Applikation in etwa so vor: .NET Applikationsserver
Hallo Rainbird,
mit deiner Antwort habe ich gerechnet, da ich deinen Applikationsserver schon gesehen und getestet habe =).
Vielen Dank für deine Antwort. Verstehe ich dich also richtig? Du sagst ein Applikationsserver ist also in jedem fall dem direkten zugriff vorzuziehen?
Hallo Fracoon,
es kommt auf die Anwendung an. Wenn Du eine Mini-Anwendung schreibst, um Deine CDs zu verwalten, setzt Du das nicht auf einem Applikationsserver auf. Wenn aber eine komplexe Geschäftsanwendung für 50 Benutzer entstehen soll, würde ich das - Stand heute - zu 99% mit einem Applikationsserver machen. Es gibt aber immer Ausnahmen. Du musst bei jedem Projekt die Stärken und Schwächen der möglichen Architekturen abwägen. Es können auch nichttechnische Gegebenheiten sein, die die Wahl der Architektur beeinflussen. Allem voran das Budget. Es ist definitiv aufwändiger eine n-Tier Applikation zu schreiben, als eine 2-Tier Applikation. Das Entwickler-Team benötigt entsprechendes Fachwissen, damit aus der n-Tier Applikation kein Schuh wird. Mitunter ist ein Chef oder AUftraggeber, trotz vieler guter Argumente für n-Tier, nicht bereit den Mehraufwand in Kauf zu nehmen. Skepsis gegenüber neuen Verfahren und Technologieen ist auch ein Punkt. Mache bleiben lieber beim alt bewährten.
Auf der CeBit ist mir aufgefallen, dass jetzt viele Anbieter von Geschäftssoftware für den Mittelstand dabei sind ihre Applikationen auf n-Tier Architektur umzustellen. Applikationsserver - insbesondere WCF betriebene - sind also eigentlich gefragt.
Danke =)
hab mir in der zwischenzeit mal das wcf etwas angeschaut. Finde jedoch nur wirklich Einführungs Tutprials. Kennt jemand was, das etwas tiefgreifender das WCF behandelt?
Hallo Fracoon,
am besten schaust Du Dir die WCF Dokumentation in der MSDN Library an: http://msdn2.microsoft.com/de-de/library/ms735119(en-us).aspx
Tiefgreifender gehts nicht.