Я пытаюсь заставить приложение node.js взаимодействовать со считывателем отпечатков пальцев .NET SDK под названием U.are.U. SDK предоставляет библиотеки .dll (win32 и x64), Java и .NET. Я решил использовать .NET для простоты использования, имея готовые к использованию интерфейсы и все такое.
Итак, текущая проблема, с которой я сталкиваюсь, заключается в том, как вызывать эти функции .NET и при этом сохранять асинхронную природу node.js. Поток приложения (на примере .NET) довольно прямолинейный, 3 вызова в библиотеке, и отпечаток пальца сделан.
private IEnumerable<Fmd> CaptureAndExtractFmd()
{
while (!reset)
{
DataResult<Fmd> resultConversion;
try
{
if (count >= 8)
{
SendMessage("Enrollment was unsuccessful. Please try again.");
count = 0;
break;
}
Fid fid = null;
if (!_sender.CaptureFinger(ref fid))
break;
if (fid == null)
continue;
count++;
resultConversion = FeatureExtraction.CreateFmdFromFid(fid, Constants.Formats.Fmd.ANSI);
SendMessage("A finger was captured. \r\nCount: " + (count));
if (resultConversion.ResultCode != Constants.ResultCode.DP_SUCCESS)
break;
}
catch (Exception)
{
break;
}
yield return resultConversion.Data;
}
}
Как я могу изменить его, чтобы его можно было использовать в node.js вместо программы .NET gui?
Также необходимо отметить, что node.js не всегда будет вызывать функцию в программе .NET для получения функции. Идентификационная часть программы происходит асинхронно и срабатывает, когда кто-то прикладывает палец к считывателю отпечатков пальцев, а это означает, что часть node.js понятия не имеет, когда это произойдет. Поэтому я не могу постоянно запрашивать данные в части .NET, она должна вызывать обратные вызовы в node.js без запроса. По сути, это двусторонняя связь, а не только по запросу, поскольку запрос с использованием веб-сервера был бы намного проще.
Я нашел библиотеку node.js, которая может сократить разрыв между .NET и node.js, под названием edge.js а> поможет ли это?
По сути, edge.js может заставить его работать вместе с node-webkit (которым я буду поставлять свое приложение), я могу вызывать API-интерфейсы узлов непосредственно на странице, поэтому я могу обновлять DOM в зависимости от на результат из библиотеки. Мне нужна возможность зарегистрировать асинхронную задачу, которая МОЖЕТ уведомлять из среды CLR аналогу node.js либо отправив событие, либо вызвав обратный вызов!
По словам автора edge.js, это легко сделать https://github.com/tjanczuk/edge/issues/54#issuecomment-17967082 У меня просто недостаточно навыков работы с .NET (из полноценного модуля) со всеми обратными вызовами.