Laden...

Verteilte Anwendung mit Datenbank-Identifizierung

Erstellt von syn87 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.681 Views
S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 15 Jahren
Verteilte Anwendung mit Datenbank-Identifizierung

Hallo an alle erstmal, da dies mein erster Post ist.

Ich habe schon einiges aus dem Netzwerktechnologie Bereich gelesen. So richtig hab ich aber noch nichts gefunden, was auf mein Problem passt.

Es soll eine bisher clientseitige Anwendung umgestellt werden, sodass es eine zentrale Serveranwendung gibt, die Grundoperationen bereitstellt und ebenfalls mit der Datenbank kommuniziert.

Jeder Mitarbeiter hat einen Account der in der Datenbank hinterlegt ist. Operationen die innerhalb der Anwendung ausgefuehrt werden, sollen auch mit dem Benutzer verknuepft werden, der sie ausgeführt hat.

Sprich: Nutzer A meldet sich mit Benutzername und Kennwort an. Fuegt er einen neuen Kunden hinzu, soll auch seine BenutzerID mit in die entsprechende Tabelle geschrieben werden.

Mein momentaner Stand: Grundsaetzlich habe ich das Remoting fuer mich entdeckt. Da es den Transport komplexer Datentypen erlaubt. Ich habe dahingehend das Tool von Rainbird entdeckt. Wäre ja an sich eine tolle Sache. Allerdings stehe ich vor dem Problem, dass ich nicht weiss wie ich mir auf der Serverseite den jeweiligen Client merken soll (nachdem er sich angemeldet hat) bzw die bereitgestellten Dienste nur angemeldeten Clients erlaube.

Ich hoffe es findet sich jemand, der mir weiterhelfen kann 🙂

Mfg matze

X
1.177 Beiträge seit 2006
vor 15 Jahren

Hi syn87,

mir stellt sich hier grad die Frage, ob Du wirklich Remoting brauchst/willst. Wenn z.B. eine Datenbank lokal benutzt wird, so kann man meist ohne grossen Aufwand dies auf eine Client-Server-DB umstellen.
Diese kann eigentlich alle deine Anforderungen - nur mit dem loggen der UserID hab ich leider keine (automatische) Idee.

🙂

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 15 Jahren

Hi Xynratron,

es geht nicht nur um die Datenbank. In der alten Version der Software war diese schon auf einem Server bereitgestellt. Das Ziel jetzt ist es, den Client und den Server unabhaengig voneinander zu programmieren und weiterhin ein 3 Schichten Modell einzufuehren. Also GUI, Logik, Datenbank (aehnlich dem OSI-Modell).

Danke trotzdem 🙂

R
494 Beiträge seit 2006
vor 15 Jahren

.NET Applikationsserver ist doch genau das was du suchst.

Sitzungsverwaltung

Rollenbasierte Sicherheit über Windows-Gruppen (ermöglicht Single-Singn-On)

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 15 Jahren

Die Identifizierung soll aber ueber die Datenbank Accounts erfolgen. Andererseits wäre es sicherlich garnicht so schwer. authentication mode oder sowas... ich habs bei msdn gelesen.... aber wie gesagt, das wichtige ist
*Objektgedaechtnis *Verknuepfen eines Clients mit einem Datenbank Account

mfg

E
67 Beiträge seit 2007
vor 15 Jahren

Hallo syn87,

ich nutze z.Z. für ein Projekt .Net 3.0 und damit die WCF. Hier ist es so, dass es für die ServiceInstanzierung verschiedene Möglichkeiten gibt. Dazu zählen eine Single-Instanzierung, eine PerCall und eine PerSession.
Für dein Problem wäre die PerSession-Instanzierung die Lösung. D.h. ein Client startet ein neues ServiceObjekt auf dem Server und in diesem Objekt könntest du als Property deine Datenbank-Identifizierung für den sessionstartenden Client hinterlegen.

Ich kenn mich leider mit dem Remoting nicht so aus. Aber vielleicht gibt es da was ähnliches. Einfach mal nach Sessionmanagement suchen.

Gruß
el Zorro

Ergänzung:
Ich hab noch mal schnell bei msdn geschaut. Das folgende Zitat stammt von hier

Folgende Möglichkeiten kommen also in Betracht:

Client Activated Object (CAO)

Jeder Client bekommt sein eigenes Objekt.

Wellknown Objects

Singleton:

Es gibt nur eine einziges Objekt, auf das alle Clients Zugriff haben.

Somit Sharing gemeinsamer Daten möglich.

Konkurrierende Zugriffe auf gemeinsame Daten erfordern Synchronisation.

Skalierung bei vielen Clients beeinträchtigt.

SingleCall:

Bei jedem Methodenaufruf wird ein Objekt erzeugt und danach wieder abgebaut.

Objekt darf also keinen Status halten.

Somit geeignet, wenn hohe Skalierung erforderlich ist.

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 15 Jahren

Hi el_zorro_100,

was du geschrieben hast klingt ja schonmal sehr gut (CAO) eine solche Beschreibung hab ich vorher noch nicht gefunden.

Hat vllt noch jemand gute Links, die sich mit dieser Methode beschaeftigen? Fuer mich waere auch interessant, ab wann ein CAO zerstoert wird.

Lg

E
67 Beiträge seit 2007
vor 15 Jahren

Hi,

ich kann an dieser Stelle nur wieder für WCF sprechen. Da is es so, dass man den Methodenprototypen im Dienstvertrag(ist als Interface konzipiert) bestimmte Parameter voranstellt, die festlegen ob die Methode eine Session öffnet oder schließt.
Als guten link kann ich google.de empfehlen 😉
Such doch mal nach remoting+tutorial. Da findet sich bestimmt ein Beispiel für CAO.
Ansonsten kann ich nur den Umstieg auf .Net 3.0 empfehlen. WCF und WF haben mich persönlich sehr begeistert.

Gruß
el Zorro

3.728 Beiträge seit 2005
vor 15 Jahren
Cao = K.o.

Hallo,

Clientaktivierte Objekte würde ich für sowas nicht verwenden. In diesem Zusammenhang ist vielleicht folgender Beitrag interessant: C/S mit Remoting: Beispiele für Client-/Server Activated Objects