Вопрос

У меня есть настройка службы WCF для управления USB -считывателем отпечатков пальцев из наших приложений .NET. Это работает нормально, и я могу попросить его зарегистрировать пользователей и так далее.

Читатель разрешает идентифицировать (он говорит вам, что конкретный пользователь представил свой палец, а не просил его убедиться, что палец конкретного пользователя присутствует), но устройство должно постоянно оправляться в режиме идентификации для его статуса - когда Пользователь обнаруживает изменения статуса.

Я хочу, чтобы заинтересованное приложение уведомило услугу, которую он хочет знать, когда пользователь идентифицируется, и предоставит обратный вызов, который запускается, когда это произойдет. Служба WCF вернется немедленно и появится на заднем плане потока, чтобы постоянно опросить устройство. Этот опрос может продолжаться часами, если никто не пытается войти в систему.

Как лучше всего это добиться? Мой контракт на обслуживание в настоящее время определяется следующим образом:

[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);
    ...
}

В моем BeginIdentification() Метод Могу ли я легко породить рабочую систему, чтобы опросить устройство, или легче сделать услугу WCF асинхронным?

Это было полезно?

Решение

Я думаю, что гораздо лучше сделать операцию службы WCF асинхронно. Эта статья MSDN показывает, как это сделать:http://msdn.microsoft.com/en-us/library/ms730059.aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top