Frage

Grüße, in unserem Unternehmen entwickeln wir den WCF -Service. Dies wird als Server verwendet und funktioniert recht gut. Schweben Sie es gibt einen Wunsch des Kunden, dass sie sich nach ihrer Anmeldung bei der Anwendung sehen möchten, in welchen Benutzern auch Benutzer angemeldet sind. Ich habe über CallbackContract (basierend auf einer WCF -Chat -Anwendung) gelesen. Wie können wir dieses Ziel erreichen?

War es hilfreich?

Lösung

Ähnliche Frage gestellt hier

Sie können die protokollierten Benutzer auf dem Server deffinetisch verwalten. Ich habe ein persönliches Muster für den Umgang mit solchen Situationen erstellt, und es geht so:

  • Erstellen Sie eine Client -Klasse auf dem WCF -Server, auf dem alle erforderlichen Informationen über den Client enthalten sind.

  • Erstellen Sie 2 Methoden im Dienst: Login, Abmelden. Die Anmeldemethode sollte in der Lage sein, alle Informationen über den Kunden zu sammeln, den Sie speichern möchten. Stellen Sie sicher, dass Sie Eigenschaften definieren, die eine Client -Instanz eindeutig identifizieren können. Wenn der Client zum Server die Anmeldemethode aufruft und dem Server die Informationen vom Client sammeln und speichern kann. Wenn Sie Rückrufe verwenden, ist dies der Ort, an dem Sie das Callback -Kontextobjekt im Client Obejt speichern können. Sie können das Client -Objekt jetzt in der WCF -Serverinstanz speichern (ich verwende ein Diktioary). Wenn sich der Client abzeichnet, wird die Anmeldemethode aufgerufen und der Server den Eintrag entfernt.

  • Erstellen Sie eine Keepalive -Methode auf dem Server, die regelmäßig die angeschlossenen Clients überprüft, um festzustellen, ob sie weiterhin verbunden sind (im Falle eines Netzwerkfehlers oder eines App -Absturzes, den ein Client möglicherweise nicht die Abmeldemethode aufruft).

Ich denke, dies ist der einfachste Weg (nicht zu sagen, dass es das Beste ist), Clients auf dem Server zu verwalten. Es gibt kein Problem damit, mehrere Clients vom selben Computer aus zu haben (Sie speichern den Kontext, wenn ein Client angemeldet ist), solange Sie eine Möglichkeit haben, Kunden einzigartig zu identifizieren.

Was Ihre letzte Frage betrifft, sollte mehrere Dienste kein Problem sein. Tatsächlich haben Sie denselben WCF -Server mit unterschiedlichen Verträgen (und Endpunkten) für die verschiedenen von Ihnen angebotenen Dienste. Alle Verträge befinden sich in derselben WCF -Serverinstanz, damit alle auf die verbundene Client -Liste zugreifen können.

Wenn Sie weitere Fragen haben, würde ich sie gerne beantworten.

Sie finden den Code, den Sie benötigen, um den benötigten WCF -Dienst tatsächlich zu erstellen hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top