| 

.NET C# Java Javascript Exception

3
Hallo.
Ich bin auf der Suche eine geeignete Technik unter .Net und C# zu finden um einen eigenen Datenbank Server zu erstellen. Wir haben Server/Client Applikationen die auf eine gemeinsame SQL Server (Express) Datenbank zugreifen müssen. Zur Zeit haben wir alles mit Hilfe von DCOM und Remoting implementiert, was mir aber nicht sehr gut gefällt und recht unflexibel ist. Auch die Datenübertragung, hauptsächlich unter DCOM, ist nicht allzu berauschend. Ich habe mich jetzt schon mal etwas in das neue Entity Framework 4.1 eingearbeitet, was auch recht gut und einfach für einen Datenzugriff funktioniert.
Leider habe ich keine Ahnung, ob dies das richtige für die Entwicklung eines Daten-Servers wäre. Weiterhin weis ich nicht, welche Technik ich sinnvoll anstatt Remoting für die Client/Server Kommunikation nehmen könnte.
Für ein paar Tipps und Anregungen bzgl. dieses Themas wäre ich sehr dankbar.

Grüße,
Wolfgang
12.10.2011
4 Antworten
1
Bei den von dir genannten Technologien unterscheide ich zwischen Datenzugriffsschicht und Datentransportschicht.

Deine bisherige Datentransportschicht ist DCOM und Remoting. Als Ansatz für eine verteilte Anwendung ist das schonmal ok. Besser wird es bestimmt mit WCF. Damit dürfte ein Performancegewinn erreicht werden: A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies
To summarize the results, WCF is 25%—50% faster than ASP.NET Web Services, and approximately 25% faster than .NET Remoting. Comparison with .NET Enterprise Service is load dependant, as in one case WCF is nearly 100% faster but in another scenario it is nearly 25% slower. For WSE 2.0/3.0 implementations, migrating them to WCF will obviously provide the most significant performance gains of almost 4x.


Zu deinem bisher benutzten Datenzugriff hast du leider nichts geschrieben (ADO.NET ???). Entity Framework 4.1 ist ganz brauchbar. Bevor du damit loslegst solltest du folgenden Artikel lesen: Leistungsaspekte (Entity Framework)

Aber: Wenn es rein um die Performance geht dürfte der SqlDataReader zum Lesen am schnellsten sein. Improving Entity Framework Performance

Du solltest prüfen, wo die Performanceprobleme in der bestehenden Anwendung liegen, in der Datenzugriffsschicht oder in der Datentransportschicht.
13.10.2011
Jürgen Luhr 7,1k 2 9
0
Hallo,

vllt. sind die WCF Data Services (eine Implementierung des oData-Protokolls) passend dafür.

mfG Gü
12.10.2011
gfoidl 9,4k 3 5
0
Danke für die Antworten.
@Jürgen
Stimmt, ich müsste es vielleicht noch ein bisschen ausführlicher erklären.
Also wir haben verschiedene GUI Applikationen in C++(MFC) und auch in C#(.Net). Diese laufen auf einem sogenannten Server PC, wo auch die Datenbank installiert ist, und auf verschiedensten Client PCs. Die Daten erhalten diese zu 80% über DCOM und der Rest über Remoting Aufrufe. Die Daten die übermittelt werden sind schon etwas "aufbereitet" und werden von verschiedenen DCOM (ATL) Servern, die als Hintergrund-Programme auf dem Server PC laufen, aus der DB gelesen/geschrieben und können dann über Interface Funktionen zugegriffen werden. Der DB-Zugriff ist bei den ATL Servern über ADO Recordsets gemacht.
Da wir planen einige Applikationen/Server Prozesse neu zu schreiben,werden wir natürlich hierfür jetzt .Net verwenden. Aus diesem Grund habe ich begonnen mich auch gleich mal für eine neuere und effizientere Technik bzgl. Programmierung und Performance umzusehen.
In der Konstallation in der unsere Softare läuft gibt es wie du schon sagtest den Teil für den Datenzugriff (ADO.NET, EF4.1,...) und die Kommunikation (DCOM, Remoting, WCF,...). Für beide Parts würde ich gerne etwas nehmen, was technisch gesehen natürlich einen Vorteil gegenüber dem Vorhandenen ergibt. Der Hauptschwerpunkt liegt dabei eher noch auf dem Datenzugriff zum SQL Server, da wir hier die meiste Performance verlieren.
Ach ja, wir haben im Moment keine ASP.NET Applikationen als GUI für den Benutzer.

Vielleicht bringt das ja noch ein paar Ideen...

Schon mal Danke im Voraus.

Grüße,
Wolfgang
13.10.2011
Zum Datenzugriff helfen dir die von mir geposteten Links weiter. Das EF an sich kann optimiert werden, die Abfragen selbst können optimiert werden und ggf. ist darüber nachzudenken mit Stored Precedures oder Functions zu arbeiten. Das hängt ganz von eurer Logik ob.
Und wie in meinem weiteren Link beschrieben, bleibt als weitere Möglichkeit den SqlDataReader zu verwenden.
Da musst selbst anhand eurer Abfragen ein paar Performancetests und Messungen durchführen.
Jürgen Luhr 13.10.2011
0
Hallo,

wenn es um die Performance geht kannst du dir mal folgenden Projekte anschauen:
Dapper wir von stackoverflow verwendet
Massive
oder
PetaPoco

Gruß
13.10.2011
PinBack 687 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH