Configuração do retorno de chamada assíncrona do WCF para dispositivo emoldado
-
18-09-2019 - |
Pergunta
Eu tenho uma configuração de serviço WCF para controlar um leitor de impressão digital USB a partir de nossos aplicativos .NET. Isso funciona bem e posso pedir para inscrever usuários e assim por diante.
O leitor permite a identificação (diz que um usuário em particular apresentou o dedo, em vez de pedir para verificar se está presente o dedo de um usuário em particular), mas o dispositivo deve ser constantemente pesquisado enquanto no modo de identificação para seu status - quando um O usuário é detectado as alterações de status.
O que eu quero é para um aplicativo interessado notificar o serviço que deseja saber quando um usuário é identificado e fornecer um retorno de chamada que é acionado quando isso acontecer. O serviço WCF retornará imediatamente e gerará um thread em segundo plano para pesquisar continuamente o dispositivo. Essa pesquisa pode continuar por horas seguidas se ninguém tentar fazer login.
Qual é a melhor maneira de conseguir isso? Meu contrato de serviço está atualmente definido da seguinte forma:
[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);
...
}
No meu BeginIdentification()
Método, posso gerar facilmente um fio de trabalhador para pesquisar o dispositivo ou é mais fácil tornar o serviço WCF assíncrono?
Solução
Eu acho que é muito melhor tornar a operação de serviço do WCF de forma assíncrona. Este artigo do MSDN mostra como fazer isso:http://msdn.microsoft.com/en-us/library/ms730059.aspx.