Frage

Ich habe ein WCF -Service -Setup, um einen USB -Fingerabdruckleser aus unseren .NET -Anwendungen zu steuern. Dies funktioniert gut und ich kann es bitten, Benutzer einzuschreiben und so weiter.

Der Leser erlaubt die Identifizierung (er wird erfahren, dass ein bestimmter Benutzer seinen Finger präsentiert hat, anstatt ihn zu bitten, zu überprüfen Benutzer wird die Statusänderungen erkannt.

Ich möchte, dass eine interessierte Anwendung den Dienst benachrichtigt, den er wissen möchte, wann ein Benutzer identifiziert wird, und einen Rückruf bereitzustellen, der in diesem Fall ausgelöst wird. Der WCF -Dienst wird sofort zurückgegeben und einen Thread im Hintergrund hervorbringen, um das Gerät kontinuierlich zu befragen. Diese Umfrage könnte stundenlang dauern, wenn niemand versucht, sich anzumelden.

Was ist der beste Weg, dies zu erreichen? Mein Servicevertrag ist derzeit wie folgt definiert:

[ServiceContract (CallbackContract=typeof(IBiometricCallback))]
public interface IBiometricWcfService
{
    ...
    [OperationContract (IsOneWay = true)]
    void BeginIdentification();
    ...
}

public interface IBiometricCallback
{
    ...
    [OperationContract(IsOneWay = true)]
    void IdentificationFinished(int aUserId, string aMessage, bool aSuccess);
    ...
}

In meinem BeginIdentification() Methode kann ich leicht einen Worker -Thread zur Umfrage des Geräts hervorbringen, oder ist es einfacher, den WCF -Dienst asynchron zu gestalten?

War es hilfreich?

Lösung

Ich denke, es ist viel besser, den WCF -Servicebetrieb asynchron zu machen. Dieser MSDN -Artikel zeigt, wie es geht:http://msdn.microsoft.com/en-us/library/ms730059.aspx.

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