Я разрабатываю службу GRP C с использованием C# и развертываю ее как службу Windows. Эта служба GRP C является 32-разрядной, поскольку она должна использовать другие существующие общие компоненты, которые являются 32-разрядными.
Служба GRP C должна выполнять алгоритм, записанный в MATLAB. Это взаимодействие осуществляется путем использования 64-битных DLL, сгенерированных в MATLAB. Но так как новая служба GRP C является 32-битной, я не могу использовать 64-битную DLL, созданную в Matlab.
Чтобы решить эту проблему, я создал 64-битное консольное приложение и использую 64-битную MATLAB dll в консольном приложении, оно работает.
Теперь я вызываю 64-битное консольное приложение как процесс в сервисе GRP C и могу запустить алгоритм MATLAB. Это также работает.
В настоящее время служба GRP C генерирует данные Excel в качестве входных данных, и консольное приложение отправляет путь Excel в алгоритм MATLAB. А консольное приложение получает выходные данные из алгоритма MATLAB и генерирует данные Excel. Затем GRP C Service анализирует эти данные Excel и получает выходные данные.
Так что я думаю об исключении Excel как средства транзакции и ищу способы прямой связи с 64-битным приложением (в настоящее время это консольное приложение). Один из вариантов - использовать 64-битное приложение в качестве службы (WCF / GRP C), иметь метод и вызывать его из 32-битной службы. Поскольку служба GRP C только запускает выполнение этого 64-битного процесса, мне потребовались предложения, чтобы принять решение о том, может ли 64-битное приложение быть сервисом или доступны какие-либо другие опции?