Допустим, я создал службу Windows, предоставив метод foo(param1 as string)
Можно ли каким-то образом напрямую вызывать foo("SomeAwesomeString")
из VBScript (т. Е. Без необходимости запуска дополнительного процесса)?
Вариант использования таков: я пытаюсь написать приложение-расширение для hMailServer (hMS) , но hMS может вызывать сценарии VBscript только тогда, когда произошло событие. Я могу заставить VBscript запускать .exe каждый раз, когда происходит событие, но обработка включает в себя открытие и закрытие соединения с внутренней базой данных. Таким образом, каждый вызов очень дорогой. Я думал, что смогу сократить расходы, имея Службу для поддержания соединения (то есть, открывая его один раз и открывая заново, если соединение закрыто). Кроме того, реализация обработки в качестве фоновых рабочих потоков приведет к неблокирующей обработке + меньше затрат на запуск процесса.
Обновление: как я это сделал
Уф. После лотов поиска и экспериментов, я думаю, что нашел способ. Я выложу это как ответ ниже. Если кто-то может дать лучший ответ, чем мой, не стесняйтесь писать. Если это действительно лучше, я сниму галочку с моего ответа и отмечу ваш.
Незначительное обновление / ошибка:
Я забыл сказать, что служба Windows создана с использованием VB.Net 2010. Извините.
Окончательное обновление: я сдаюсь
После поиска по всему Интернету - и экспериментов без конца - я сдаюсь.
Я решил не выставить метод, но использовать взамен Named Pipes . Теперь сценарию VBScript просто нужно записать в FSO, открытый для //./pipe/PIPENAME
, и позволить службе выяснить, какого чёрта хочет VBScript.
В любом случае, спасибо за ваши попытки помочь, друзья.