У меня есть интересный вызов, который мне интересен, может ли кто-нибудь здесь дать мне какое-то указание.
Я пишу приложение .Net windows form, которое работает в сети и использует SQL Server для сохранения и извлечения данных.
Я хочу предложить мини-плагин API, где разработчики могут создавать свои собственные сборки и реализовывать определенный интерфейс (IDataManipulate). Эти сборки могут затем использоваться моим приложением для вызова функций интерфейса и выполнения каких-либо действий.
Я могу создавать сборки с помощью моего API, копировать файл в папку на локальном жестком диске и настраивать приложение для использования Reflection для вызова определенной функции из реализованного интерфейса (IDataManipulate.Execute).
Проблема:
Поскольку приложение будет установлено на нескольких рабочих станциях в сети, невозможно скопировать подключаемые библиотеки, создаваемые пользователями, на каждую машину.
Решения, которые я пробовал:
Решение 1
Скопируйте dll API в общий сетевой ресурс.
Проблема:
Требуется AllowPartiallyTrustedCallersAttribute, для которого требуется пение .Net, которое я не могу заставить от своих пользователей.
Решение 2 (предпочтительно)
Сериализация объекта dll, сохранение его в базе данных, десериализация и вызов IDataManipulate.Execute.
Проблема:
После десериализации я пытаюсь привести его к объекту IDataManipulate, но возвращает ошибку при поиске самого файла DLL.
Раствор 3
Сохраняйте байты dll как byte [] в базу данных и воссоздайте dll на локальном ПК каждый раз, когда пользователь запускает мое приложение.
Проблема:
У Dll могут быть зависимости, которые я не знаю, смогу ли я обнаружить.
Любые предложения будут с благодарностью.
Спасибо